结对编程2——单元测试

林晓芳 201421123092   陈惠 201421123096

Coding地址:点我查看哦

题目描述:

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

  1. 把计算模块提取出来,单独创建一个类。
  2. 针对提取出来的计算类的接口函数做单元测试。

需求分析:

  1. 测试加法是否能正确工作;
  2. 测试加减乘除功能。
  3. 测试计算类对于各种参数的支持。

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

计算模块的测试用例及运行结果:

@Test
    public void testAdd() {
            assertEquals(String.valueOf("3"),Calculator.add("5/3","4/3"));
            assertEquals(String.valueOf("9"), Calculator.add("4","5"));
    }

    @Test
    public void testSub() {
            assertEquals(String.valueOf("1/3"),Calculator.sub("5/3","4/3"));
            assertEquals(String.valueOf("-1"),Calculator.sub("4","5"));
    }

    @Test
    public void testMul() {
            assertEquals(String.valueOf("20/9"),Calculator.mul("5/3","4/3"));
            assertEquals(String.valueOf("20"),Calculator.mul("4","5"));
    }

    @Test
    public void testDiv() throws Exception {
            assertEquals(String.valueOf("5/4"),Calculator.div("5/3","4/3"));
            assertEquals(String.valueOf("4/5"),Calculator.div("4","5"));
    }

 

计算最大公约数测试:

@Test
    public void testGCD() {
        assertEquals(Calculator.GCD(15,10),5);
    }

参数错误提示:

public static String div(String a, String b) throws Exception// 除法
    {
        a = a + "/1";
        b = b + "/1";
        String[] m = a.split("/");
        String[] n = b.split("/");
        int numerator1 = new Integer(m[0]);
        int denominator1 = new Integer(m[1]);
        int numerator2 = new Integer(n[0]);
        int denominator2 = new Integer(n[1]);
        if (denominator1 == 0 || numerator2 == 0 || denominator2 == 0) {
            throw new Exception("分母不能为0!");
        }
        int p = numerator1 * denominator2;
        int q = denominator1 * numerator2;
        int t = GCD(p, q);
        return Reduction(p / t, q / t);
    }
@Test
    public void testDiv() throws Exception {
            assertEquals(String.valueOf("5/4"),Calculator.div("5/3","4/3"));
            assertEquals(String.valueOf("4/5"),Calculator.div("4","5"));
            try{
                Calculator.div("4","0");
                }    
                catch(Exception ex){
                assertEquals("分母不能为0!",ex.getMessage());
                fail("分母不能为0!");
                }
    }

 覆盖率:

非摆拍照片:

小结与感受:

     通过本次测试,能够有效发现程序计算模块的问题,并予以改进。由于我们两个都是第一次尝试测试,对于测试很陌生,不知从何下手,通过老师关于测试的教程和其他同学的帮助,对计算部分的代码进行了测试。测试过程中,我们开始庆幸当初的代码编程相对而言比较规范,使得隔了一周之后再看之前的代码,我们还能够看懂并加以修改。虽然这次还能够看懂自己写的代码,但是通过这次测试还是体会到了拥有良好的设计、编码规范和必要的注释的重要性。首先,良好的设计是基础,只有拥有良好的设计,才能更有效地找出编码过程中出现的问题并及时予以改正;其次,编码规范是核心,一大段杂乱无章的代码不仅会给自己和队友带来不必要的麻烦,而且在出现错误的时候容易迷失方向,浪费时间。最后,必要的注释可以让我们更快地理解整个程序。

“汉堡包”:

先来一片面包:队友是一个有想法的人,但还会听取我的看法,相互讨论最终执行。

在把肉放上:有好的想法,但由于编程过程比较困难,会选择比较不简洁的解决方式。

再来一片面包: 两个人之间要能够相互学习,相互讨论,发挥出1+1>2的能力。

 

PSP:

PSP2.1

Personal Software Process Stages

Time (%) Senior Student

Time (%)

Planning

计划

1h

0.5h

· Estimate

估计这个任务需要多少时间

8.5h

8h

· Analysis

需求分析 (包括学习新技术)

0.5h

0.5h

· Coding Standard

代码规范

1h

0.5h

· Design

具体设计

1h

1.5h

· Coding

具体编码

3h

2.5h

· Test

测试(自我测试,修改代码,提交修改)

1h

1.5h

Reporting

报告

1h

 

1h

 

posted @ 2017-03-29 18:26  脸脸ya  阅读(171)  评论(4编辑  收藏  举报