zoukankan      html  css  js  c++  java
  • 结对编程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

  • 相关阅读:
    PHP unicode与普通字符串的相互转化
    PHP 日期之间所有日期
    PHP Excel导入日期单元格处理
    JS base64文件转化blob文件
    Mvc 刷新PartialView
    WebGL绘制变幻光斑
    WebGL笔记(四):初步封装
    WebGL笔记(目录)
    [JavaScript/canvas] 创建基于坐标访问的图形数据对象
    WebGL笔记(五):封装顶点和颜色等数组数据(二)
  • 原文地址:https://www.cnblogs.com/wangrf1/p/6622088.html
Copyright © 2011-2022 走看看