结对编程2 单元测试

单元测试#

201421123098 胡丹丹 201421123118 张中结
代码地址:https://git.coding.net/zzj201421123118/together-2.git

一、需求分析##

1.整数四则运算测试

2.分数四则运算测试

3.求最大公约数测试

二、测试环境##

 
项目基于eclipse开发,然后使用用自带JUNIT4进行测试,eclemma实现代码覆盖率统计。

三、测试用例##

1.整数四则运算测试

  @Test
    public void testAdd() {
        Calculate cal = new Calculate();
        String result = cal.add(10, 32768);
        String expected="32778";
        assertEquals(expected, result);
    }
    @Test
    public void testSub() {
        Calculate cal = new Calculate();
        String result = cal.sub(6,3);
        String expected="3";
        assertEquals(expected, result);
        
    }
    @Test
    public void testMul() {
        Calculate cal = new Calculate();
        String result = cal.mul(6,3);
        String expected="18";
        assertEquals(expected, result);
    }
    @Test
    public void testDiv() {
        Calculate cal = new Calculate();
        String result = cal.div(5,2);
        String expected="5/2";
        assertEquals(expected, result);
    }

2.真分数四则运算测试

 @Test
    public void testScoreAdd() {
        //fail("Not yet implemented");
        Calculate cal = new Calculate();
        String result = cal.ScoreAdd(6,5,1,5);
        String expected="7/5";
        assertEquals(expected, result);
    }
    @Test
    public void testScoreSub() {
        Calculate cal = new Calculate();
        String result = cal.ScoreSub(4,5,1,5);
        String expected="3/5";
        assertEquals(expected, result);
    }
    @Test
    public void testScoreMul() {
        Calculate cal = new Calculate();
        String result = cal.ScoreMul(4,5,1,5);
        String expected="4/25";
        assertEquals(expected, result);
    }
    @Test
    public void testScoreDiv() {
        Calculate cal = new Calculate();
        String result = cal.ScoreDiv(4,5,1,2);
        String expected="8/5";
        assertEquals(expected, result);
    }
}

3.求最大公约数测试

@Test
	public void testReduce(){
	Calculate cal = new Calculate();
        int result = cal.reduce(40,20);
        int expected=20;
        assertEquals(expected, result);
	}

4.运行结果

5.覆盖率

6.测试中遇到的问题

进行分数四则运算测试时出现了错误,我们在确保测试代码没有问题完全正确的情况下,肯定是Calculate类中分数运算的方法出错了,仔细检查终于发现了错误,分数运算中的返回值弄错了

public String ScoreAdd(int x,int y,int q,int w){
		strz = "+";
        int temp1 = x * w + q * y;
        int temp2 = y * w;
        int temp3 = reduce(temp1, temp2);
        temp1 = temp1 / temp3;
        temp2 = temp2 / temp3;
        sumScore = String.valueOf(temp1) + '/' + String.valueOf(temp2);
        sumStr = (String.valueOf(temp4) + '/' + String.valueOf(temp5)) + strz
                + (String.valueOf(temp7) + '/' + String.valueOf(temp8));
        t = 1;
        return sumStr;
	}

以上展示的是错误代码,错误的地方在 return sumStr;这样返回的其实是整个算式的字符串,自然与预料结果不同。应该改成return sumScore;返回运算结果的字符串。

7.结对照片

背景是一样的,这是一起约图书馆时拍的,身边没有其他人,就我给他拍,他给我拍。

PSP展示##

PSP2.1 Personal Software Process Stages Time (%) Senior Student(/hour) Time (%)(/hour)
· Planning 计划 2 2.5
· Estimate 估计这个任务需要多少时间 0.5 0.5
· Analysis 需求分析 (包括学习新技术) 1 1
· Coding Standard 代码规范 0.5 0.5
· Design 具体设计 1.5 2
· Coding 具体编码 20 24
· Test 测试(自我测试,修改代码,提交修改) 1 1
Reporting 报告 1 1

小结##

有了上次合作的经验,这次合作没那么尴尬了,但有一个问题就是,eclipse直接提交会覆盖掉前面的提交记录,前面提交的记录都已经被覆盖了,队友的代码提交记录被我的覆盖掉了,我也很无奈啊,然后下次提交信息时,统一版本的书写格式。通过这次结对作业,学习Jnuit4测试Java代码,学习使用eclemma实现代码覆盖率统计,收获还是挺大的。还有上次我们也有去尝试把计算功能模块化,但是没有成功,这次回头再去做,感觉简单了许多,有一种恍然大悟的感觉,可能编程也是需要灵感的吧……哈哈哈

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

(1) 良好的设计
(2) 编码规范
(3) 必要的注释

答:上次的四则运算GUI只写了一个类,所有的功能都集中在一个类里,这样很容易牵一发而动全身,这次单元测试有去把计算功能独立出来作为一个类,也算设计上有了一个改善,功能独立,错误也容易找出来,运用也更方便,从这点来说,我确实体会到了良好设计的重要性。代码规范,之前可能不太注意,经过这几次编程,自我感觉代码越来越规范了。至于注释,能够方便他人理解,给代码更好的可读性,也是一种程序员与其他人交流的一种途径。

评价下伙伴:

先来一片面包:队友还是很虚心听取我的想法的,能相互讨论从而得出更加正确的做法。这种能听取他人想法的行为是值得我去学习的。

在把肉放上:有时候会想着希望能做得更好点,提出的建议想法都很不错,但是由于编程能力有限,还是选择了简便易行的方式。

再来一片面包: 想要做好不是一个人的事,有时候两个人可能都比较懒惰,做得比较慢,比较拖沓。两个人应该改变方式,应该互相督促,而不是你拖我也拖。

posted @ 2017-03-29 00:27  丹hjk  阅读(156)  评论(4编辑  收藏  举报