• 结对编程2——单元测试


    结对伙伴:


     

    201421123038(队友)、201421123039(本人)

    题目描述:


     

    上一周大家为四则运算程序设计了2-3个新功能,本次在隔了一周之后,我们循序渐进地进阶。本次目标:

    • 把计算模块提取出来,单独创建一个类。
    • 针对提取出来的计算类的接口函数做单元测试。
    • 参考助教的示例:

    a. http://www.cnblogs.com/zhengrui0452/p/6507630.html     

    需求分析:


    • 通过单元测试代码,测试加法是否能正确工作;
    • 通过单元测试代码,测试加减乘除功能;
    • 通过单元测试代码,测试计算类对于各种参数的支持。

    测试过程:


    • 测试框架如图

    • 计算模块的测试用例及运行结果
    封装加减乘除模块:
    
    package random;
    import junit.framework.TestCase;
    
    public class calculateTest3 extends TestCase 
    {
        protected void setUp() throws Exception {
        super.setUp();
    }
    public void testAdd()         //加法测试模块
    {
        RandomNum a=new RandomNum(2,3);
        RandomNum b=new RandomNum(2,3);
        calculate c=new calculate();
        c.Add(a, b);
        System.out.println(a.toString());
    }
    
    public void testSubstract()   //减法测试模块
    {
        RandomNum a=new RandomNum(1,3);
        RandomNum b=new RandomNum(2,3);
        calculate c=new calculate();
        c.Add(a, b);
        System.out.println(a.toString());
    }
    public void testDeivde()      //除法测试模块
    {
        RandomNum a=new RandomNum(2,1);
        RandomNum b=new RandomNum(3,1);
        calculate c=new calculate();
        c.Add(a, b);
        System.out.println(a.toString());
    } 
    public void testMul()        //乘法测试模块
    {
        RandomNum a=new RandomNum(2,3);
        RandomNum b=new RandomNum(2,1); 
        calculate c=new calculate();
        c.Add(a, b);
        System.out.println(a.toString());
    }
    } 
    • 测试过程中遇到的问题以及解决的方案。

           测试代码覆盖率时clover插件安装不好,开始一直找不到下载的地方,后来通过百度直接在ECLIPSE的中HELP中安装成功。

    • 展示上面描述的单元测试的每个环节。
        1、首次测试结果,加减乘除皆可执行:

        2、将除法模块中,分母改为0,则测试报错:

         3、测试超出范围的数相加:

          4、利用clover测试代码覆盖率


     实验总结:

    1.小结与感受:


       (1)问题:通过测试,是否有效发现了程序计算模块的问题,并给予改进?

         答:无法解决溢出的问题,不知该如何改进。

       (2)体会:

    • 在本次实验中,跟队友一起利用JUnit进行代码模块的测试,开始跟队友也是不太会,通过百度还有请教一些会的同学,才掌握了方法,同时明白了这种测试的好处,它可以方便快速的找出代码中出错的地方并加以改正。
    • 在测试代码覆盖率方面也摸索了好久,有许多可以进行测试的插件,通过讨论我们选择了利用CLOVER,开始一直找不到下载的地方,后来通过百度直接在ECLIPSE的中HELP中安装成功。

       (3)汉堡包式评价:

            先来一片面包:队友编程的思路和解题思想都很好,针对题目常常能提出一针见血的看法。

            再放上肉:缺点就是有点会拖时间,任务是都能如期完成,但是过程会拖拖沓沓,所以在实验过程中常常需要我的监督,结对做实验也正是需要两人互相监督完成

            再来一片面包:做事情真正静下心来就会做的很认真,实验过程中也给了我很多帮助。

    2.在隔了一周之后再看之前的代码,是否更能体会到下面这些东西:


        (1)良好的设计

    良好的设计非常重要,结构化模块化编程对于管理和修改和扩展都是非常有帮助的。如果没有设计好,可能一开始还没有感觉,
    但是后面进行功能扩展的时候会非常痛苦,会导致后续一系列的问题。所以开始设计时,一定要有模块化的思想。相互之间的联系尽量少,分层设计,这样容易修改和拓展。
    (2) 编码规范
    一定要有自己熟练而且正规的一个变量,方法等命名规则。
    如果随便定义了a,b,c,x,y后续再看的时候,或者别人看的时候会很困难。这方面自己还要好好改进。
    (3) 必要的注释
    方法的注释以及关键代码的注释很重要,有时候自己写的方法可能比较复杂,但是别人使用的时候可能并不想研究怎么写的,而是只关注怎么用。
    让别人看一下注释就知道怎么用,有什么效果。这个后面一定要好好使用和规范。
     

    项目地址
    https://git.coding.net/nibaijiejiea/test.git
    
    

    结对照片:

          

    PSP表格:

    PSP2.1 Personal Software Process Stages Time (%) Senior Student Time (%)
    Planning 计划 5h 6h
    · Estimate 估计这个任务需要多少时间 5h 6h
    Development 开发    
    · Analysis 需求分析 (包括学习新技术) 0.5h 0.3h
    · Design Spec 生成设计文档 0 0
    · Design Review 设计复审 0 0
    · Coding Standard 代码规范 0.2h 0.3h
    · Design 具体设计    
    · Coding 具体编码 0.5h 0.5h
    · Code Review 代码复审 0.5h 0.6h
    · Test 测试(自我测试,修改代码,提交修改) 2h 2h
    Reporting 报告 4h 3h
    · 测试报告    
    · 计算工作量    
    · 并提出过程改进计划    
  • 相关阅读:
    Android成长之路-LayoutInflater和inflate的用法
    Android成长之路-实现简单动画
    Android成长之路-编码实现软件界面
    Android成长之路-手势库的创建
    Android成长之路-手势识别的实现
    Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
    android中文字中间有超链接的实现方法
    Arduino可穿戴教程ArduinoIDE新建编辑源文件
    FMDB使用SQLite事务Save Point
    FMDB使用Cached Statement功能
  • 原文地址:https://www.cnblogs.com/baijiejie/p/6637984.html
Copyright © 2020-2023  润新知