## 单元测试

a.需求分析：

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

a. 加减乘除功能测试

b.输入非法字符测试

c.数值超出范围测试

d.结果除0测试

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

1. 加减乘除功能测试

@Test
public void testAdd() {
assertEquals(13, Integer.parseInt(calc.getResult()));
}

@Test
public void testSubstract() {
calc.substract(5,8);
assertEquals(-3, Integer.parseInt(calc.getResult()));
}

@Test
public void testMultiply() {
calc.multiply(5,8);
assertEquals(40, Integer.parseInt(calc.getResult()));
}

@Test
public void testDivide() {
calc.divide(5,8);
assertEquals(String.valueOf("5/8"), calc.getResult());
}

@Test
public void testAdd2() {
assertEquals(String.valueOf("7/6"), calc.getResult());
}

@Test
public void testSubstract2() {
calc.substract2(2,4,2,3);
assertEquals(String.valueOf("1/-6"), calc.getResult());
}

@Test
public void testMultiply2() {
calc.multiply2(2,4,2,3);
assertEquals(String.valueOf("1/3"), calc.getResult());
}

@Test
public void testDivide2() {
calc.divide2(2,4,2,3);
assertEquals(String.valueOf("3/4"), calc.getResult());
}

该部分功能代码较长不贴出，将在coding中。

2.输入非法字符测试

 1 2 3 4 5 6 @Test     public void testPanduanzifu() {         //String s=calc.getResult();          calc.panduanzifu("4/7！#@\$");          assertEquals("input error", calc.getResult());     }

 1 2 3 4 5 6 7 8 9 10 11 12 13 public void panduanzifu(String s) //判断输入字符，            {                char arr[]= s.toCharArray();                for (int i = 0; i < s.length(); i++)                {                                         if ((arr[i]<45) || (arr[i] > 58))                    {                        sum1="input error";                    }                      }                  }

3.数值超出范围测试

 1 2 3 4 5 @Test     public void testRange() {         calc.range(11,3);          assertEquals("outrange", calc.getResult());     }

 1 2 3 4 5 public void range(int x, int y)//范围判断            {                if((x<0 || x>10)||(y<0 || y>10))                sum1="outrange";                 }

4.结果除0测试

 1 2 3 4 5 6 @Test     public void testZero() {          calc.zero("4/0");          assertEquals("zero error", calc.getResult());               }

 1 2 3 4 5 6 7 8 public void zero(String s) {//结果除0错误                           s = s.substring(s.length()-2,s.length());           if(s.equals("/0"))           {               sum1="zero error";           }           }

c.小结与感受

通过这次对单元测试的使用，发现随着软件项目的逐渐增大，单元测试的地位显得越来越重要。如果软件项目没有良好的测试流程，随着系统的增大这将会给开发人员带来极大的困扰，最后造成的结果是“剪不断，理还乱”。 此次通过单元测试还给之前的程序添加了一些新的判断错误的方法，然后通过改进让的程序又完善了些。还有就是两周后再去看自己的代码，确实发现有的地方没注释然后就一下子记不起来到底是什么需要再前后一起看一看，特别当不是规范的变量名更让你绝望。（1）良好的设计；（2）规范的代码；（3）必要的注释；是非常重要的。

PSP

 PSP2.1 Personal Software Process Stages Estimated time（h） actual time（h） Planning 计划 6 5.2 · Estimate 估计这个任务需要多少时间 6 5.2 Development 开发 0.5 0.3 · Analysis 需求分析 (包括学习新技术) 0.2 0.2 · Design Spec 生成设计文档 0.2 0.1 · Design Review 设计复审 0.1 0.1 · Coding Standard 代码规范 0.2 0.2 · Design 具体设计 0.5 0.5 · Coding 具体编码 3 2.5 · Code Review 代码复审 0.5 0.5 · Test 测试（自我测试，修改代码，提交修改） 0.3 0.3 Reporting 报告 0.2 0.2 · 测试报告 · 计算工作量 0.1 0.1 · 并提出过程改进计划 0.2 0.2

posted on 2017-03-29 16:00  从小就很酷  阅读(124)  评论(2编辑  收藏  举报