结对编程2——单元测试

 黄睿 201421123069 周迪 201421123089

 coding.net 地址:http://git.oschina.net/hr2324/SoftEngHW


1.我们的代码要使它的利用率大大提高,所以我们要通过单元测试进一步完善代码,发现细小的错误。于是这次就用JUnit进行了简单四则运算的单元测试。

a.需求分析:(1)在上次的基础上将计算模块单独创建一个类;

               (2)针对计算类做单元测试;

               (3)主要做整数和真分数的加减乘除;

                (4) 增量式开发,用git命令提交到coding.net地址。

b. 设计测试框架, 模拟测试数据:

(1)整数的加减乘除测试:

@Test
    public void testAdd() {
        number a=new number(156,78);
        number b=new number(19, 32);
        calculate c=new calculate(a,b);
        c.add();
        number a1=new number(100,78);
        number b1=new number(10, 32);
        calculate c1=new calculate(a1,b1);
        c1.add();
        
    }

    @Test
    public void testSub() {
        number a=new number(1,3);
        number b=new number(2,3);
        calculate c=new calculate(a,b);
        c.sub();
        number a1=new number(29,47);
        number b1=new number(55,67);
        calculate c1=new calculate(a1,b1);
        c1.sub();
        number a2=new number(66,7);
        number b2=new number(53,27);
        calculate c2=new calculate(a2,b2);
        c2.sub();
        
    }

    @Test
    public void testMuti() {
        
        number a=new number(1,3);
        number b=new number(2,3);
        calculate c=new calculate(a,b);
        c.muti();
        number a1=new number(27,43);
        number b1=new number(5,6);
        calculate c1=new calculate(a1,b1);
        c1.muti();
        number a2=new number(66,7);
        number b2=new number(53,27);
        calculate c2=new calculate(a2,b2);
        c2.muti();
    }

    @Test
    public void testDiv() {
        number a=new number(89,39);
        number b=new number(27,39);
        calculate c=new calculate(a,b);
        c.div();
        number a1=new number(26,24);
        number b1=new number(5,6);
        calculate c1=new calculate(a1,b1);
        c1.div();
        
    }

}

       利用JUnit看出成功与否和耗时:

                                         

(2)分数的加减乘除测试:

@Test
    public void testAdd() {
        number a=new number(77/156,78/99);
        number b=new number(19/33, 32/49);
        calculate c=new calculate(a,b);
        c.add();
    }

    @Test
    public void testSub() {
        number a=new number(1/45,5/47);
        number b=new number(2/34,3/67);
        calculate c=new calculate(a,b);
        c.sub();
    }

    @Test
    public void testMuti() {
        
        number a=new number(1/11,3/33);
        number b=new number(2/22,3/33);
        calculate c=new calculate(a,b);
        c.muti();
        number a1=new number(27/56,43/87);
        number b1=new number(5/6,6/11);
        calculate c1=new calculate(a1,b1);
        c1.muti();
    }

    @Test
    public void testDiv() {
        number a=new number(89/99,39/76);
        number b=new number(27/44,39/56);
        calculate c=new calculate(a,b);
        c.div();
        
    }

}

       利用JUnit看出成功与否和耗时:

                                             

(3)当出现 “ 248 / 0”时:出现错误

                                                          

(4)代码覆盖率:

                                          

c. 小结与感受:这次编程作业主要是学习并使用JUnit,刚开始按照老师给的链接一步一步做JUnit,但是做到有一步添加JUnit的时候一直显示not found,百度也一直无果,最后请教了同学,才得以解决,最后建立了一个项目名和码云的项目名一致,方便识别。然后将我的计算类添加了进去,再将我与之相关的类也放进去,然后加入了计算覆盖率的插件单元测试就这样完成了。然后就是说一说git,由于上次作业没有很好的领会这个步骤,所以这次就是相当于从头做git,所以这次作业用时最多的就属它了。首先我是建仓库这方,在我项目那些全部完成之后,利用命令行提交代码时,最后一步一直说我用户认证失败,在重新试过很多次之后都无法解决,然后就决定直接利用eclipse commit了,查阅百度和很多博客上相关的文章之后,终于成功了,所以还是很让人开心的一件事。出现的问题就是我在运行测试的时候,加法没办法进行真分数的运算,一直显示错误,我的代码就是原本计算类的代码,逻辑上都没有错误,然后我就将逻辑一步一步顺了一遍,用最日常的算法方式改了代码的顺序,然后问题就解决了。

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

              (1) 良好的设计:这一部分在这次做了单元测试之后才明白,良好的设计就是功能的更完善,只有在设计的时候考虑到各种各样的情况,最后写出来的类或方法才能更方便被使用,而不至于单元测试的时候,对于自己想要的结果出现错误,然后又要回过头去改动原始代码。在这一部分我们没有做的很好,只是追求将老师布置的功能写出来就行了,细致的东西都没有注意到,导致很多应该有错误的地方显示不出来。

              (2) 编码规范:这一部分我觉得我们做的还可以,因为老师在最初就说了对于变量的取名,所以我们一开始对于变量都是取它相应的英文名或简写,所以即使时间再久,也不会布置这些变量代表什么。

              (3) 必要的注释:这部分也是深有体会,比如求最大公约数、最小公倍数等等,这样标记下来就不用再看一遍代码是在干什么了,只是有时候可能会忘记对代码的注释,还要多多习惯,养成良好的习惯。

 2.描述结对的过程,提供非摆拍的两人在讨论、细化和编程时的结对照片。

(1)结对过程:

      在之前代码的基础上,我们利用JUnit进行了单元测试。虽然我们做的测试功能没有非常完善,但慢慢的进步也是可以感觉到的。这次作业中,我们合作的很完美,当一个在编程时,另外一个就查询接下来会用到的相关资料,节省了很多时间,也慢慢适应了这种合作方式。

(2)结对照片:

   

3.PSP:

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划    
· Estimate 估计这个任务需要多少时间 10h 8h
Development 开发 8h 7h
· Analysis 需求分析 (包括学习新技术) 3h 5h
· Design Spec 生成设计文档    
· Design Review 设计复审    
· Coding Standard 代码规范 4h 3h
· Design 具体设计    
· Coding 具体编码 10h 8h
· Code Review 代码复审 5h 4h
· Test 测试(自我测试,修改代码,提交修改) 8h 6h
Reporting 报告 2h 2h
· 测试报告 5h 4h
· 计算工作量 5h 4h
· 并提出过程改进计划    

posted on 2017-03-29 16:44  爱尔兰爱故事  阅读(167)  评论(0编辑  收藏  举报

导航