首页 > 代码库 > 结对编程2——单元测试

结对编程2——单元测试

 201421123022 王若凡        201421123026  欧阳勇    

 详细代码

a.需求分析:

 


 

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

        a. 加减乘除功能测试

        b.输入非法字符测试

        c.数值超出范围测试

        d.结果除0测试


 

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

   1. 加减乘除功能测试

@Test
    public void testAdd() {
          calc.add(5,8);
          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() {
        calc.add2(2,4,2,3);
         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.输入非法字符测试

@Test
	public void testPanduanzifu() {
		//String s=calc.getResult();
		 calc.panduanzifu("4/7!#@$");
		 assertEquals("input error", calc.getResult());
	}

  

 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.数值超出范围测试

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

  

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

  

   4.结果除0测试

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

  

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

 

结果截图 

当测试数据返回结果sum1与预先设定的结果相同则运行正确。

 技术分享

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

结对编程2——单元测试