zoukankan      html  css  js  c++  java
  • 结对编程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
    · 并提出过程改进计划    
  • 相关阅读:
    angularjs的$on、$emit、$broadcast
    angularjs中的路由介绍详解 ui-route(转)
    ionic入门教程-ionic路由详解(state、route、resolve)(转)
    Cocos Creator 加载使用protobuf第三方库,因为加载顺序报错
    Cocos Creator 计时器错误 cc.Scheduler: Illegal target which doesn't have uuid or instanceId.
    Cocos Creator 构造函数传参警告 Can not instantiate CCClass 'Test' with arguments.
    Cocos Creator 对象池NodePool
    Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)
    Cocos Creator 常驻节点addPersistRootNode
    Cocos Creator 配合Tiled地图的使用
  • 原文地址:https://www.cnblogs.com/23hr/p/6633542.html
Copyright © 2011-2022 走看看