结对编程2——单元测试

201421123047,201421123029(一班)

https://git.coding.net/weh/software-testing.git

题目要求:

  1. 结对编程实现上述功能,同样的,在程序正式开发之前,请先预估下PSP每个环节的消耗时间(分钟),并在过程中统计实际耗时(分钟),最后提交PSP表格。依然注意,这个主要是给你们自己看的,不必造假数据。
  2. 继续两人结对协作,把编码规范、领航员和驾驶员角色互换做到位。
  3. 单元测试: 有单元测试保证,有代码覆盖率。

需求分析:测试上有哪些详细的需求?

  1. 把计算模块提取出来,单独创建一个类。
  2. 针对提取出来的计算类的接口函数做单元测试。
  3. 通过单元测试代码,测试加法是否能正确工作;
  4. 通过单元测试代码,测试加减乘除功能。
  5. 通过单元测试代码,测试计算类对于各种参数的支持:
  6. 输入是有错误的,例如 “1 ++ 2”,
  7. 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,
  8. 或者是 “ 248 / 0” 怎么办?
  9. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?
  10. 那么如果真的计算结果是 “-1” 又怎么处理呢?

设计测试:

package w;

import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class CalculatorTest {
    private Calculator calculator=new Calculator();
    @Before
    public void setUp() throws Exception {
    }
    @Test
    public void testDnj() {
        calculator.Dnj(0, 1, 2, 4);
        assertEquals(3,calculator.getSum());
        calculator.Dnj(1, 1, 1, 1);
        assertEquals(0,calculator.getSum()); 
        calculator.Dnj(2, 1, 1, 1);
        assertEquals(1,calculator.getSum());
        calculator.Dnj(3, 1, 1, 1);
        assertEquals(1,calculator.getSum());
         
    }  
    @Test
    public void testGnj() {
        calculator.Gnj(0, 0, 1, 1, 1, 1, 1);
        assertEquals(3,calculator.getSum());
        calculator.Gnj(0, 1, 1, 1, 1, 1, 1);
        assertEquals(1,calculator.getSum());      
        calculator.Gnj(0, 2, 1, 1, 1, 1, 1);
        assertEquals(2,calculator.getSum());
        calculator.Gnj(0, 3, 1, 1, 1, 1, 1);
        assertEquals(2,calculator.getSum());
        
        calculator.Gnj(1, 0, 1, 1, 1, 1, 1);
        assertEquals(1,calculator.getSum());
        calculator.Gnj(1, 1, 3, 1, 1, 1, 1);
        assertEquals(1,calculator.getSum());      
        calculator.Gnj(1, 2, 1, 1, 1, 1, 1);
        assertEquals(0,calculator.getSum());
        calculator.Gnj(1, 3, 1, 1, 1, 1, 1);
        assertEquals(0,calculator.getSum());
        
        
        calculator.Gnj(2, 0, 1, 1, 1, 1, 1);
        assertEquals(2,calculator.getSum());
        calculator.Gnj(2, 1, 1, 1, 1, 1, 1);
        assertEquals(0,calculator.getSum());      
        calculator.Gnj(2, 2, 1, 1, 1, 1, 1);
        assertEquals(1,calculator.getSum());
        calculator.Gnj(2, 3, 1, 1, 1, 1, 1);
        assertEquals(1,calculator.getSum());
       
        calculator.Gnj(3, 0, 1, 1, 1, 1, 1);
        assertEquals(2,calculator.getSum());
        calculator.Gnj(3, 1, 1, 1, 1, 1, 1);
        assertEquals(0,calculator.getSum());      
        calculator.Gnj(3, 2, 1, 1, 1, 1, 1);
        assertEquals(1,calculator.getSum());
        calculator.Gnj(3, 3, 1, 1, 1, 1, 1);
        assertEquals(1,calculator.getSum());
        
        
    }   


}

结果:

 

 

 

小结与感受:

    通过这次结对测试,不仅让我对四则运算程序有了更深入的了解,而且也学会了如何利用 Eclipse对自己编写的Java程序进行测试.当然,在测试覆盖率时也遇到了一些问题,发现测试的覆盖率达不到100%,后来发现是一些类没有调用,在测试中添加后终于能到100%.而且,在这次实验中,我发现对代码的一些规范与必备注释是非常有必要的,不然如果自己长时间没有用后,很容易就会忘了程序的意义,所以,在写程序时代码不仅要规范,还要有必要的注释,方便自己以后阅读.总之,在这次测试中,我了解程序的测试过程,不仅使我巩固了上次编的程序,也让我对程序的测试有了更深入的了解.

评价队友:

优点:编程与理解能力较强,能够快速找到问题,善于查找资料.

缺点:实验不过细心,会犯一些小错误.

建议:实验时应认真,专心.

PSP:

PSP2.1

Personal Software Process Stages

Time(min) Senior Student

Time (min)

Planning

计划

20

25

Estimate

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

50

50

Development

开发

100

80

Analysis

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

40

30

Design Spec

生成设计文档

10

14

Design Review

设计复审

20

25

Coding Standard

代码规范

15

30

Design

具体设计

100

80

Coding

具体编码

50

50

Code Review

代码复审

30

30

Test

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

30

16

Reporting

报告

60

80

 

测试报告

2

3

 

计算工作量

3

5

 

并提出过程改进计划

5

4

posted @ 2017-03-29 20:44  lqwe  阅读(246)  评论(1编辑  收藏  举报