结对编程2——单元测试

201421123002 翁珊;201421123006 黄月梅;201421123007 徐晓珊) 

题目要求:

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

需求分析:

1.把计算模块提取出来,单独创建一个类。

计算模块单独成类Calc:

package happy;


public class Calc{

    static int getGCD(int i, int j) //求最大公约数
    {
        int temp;
        while (i % j != 0) {
            temp = i % j;
            i = j;
            j = temp;
        }
        return j;
    }

    static String Reduction(int i, int j) 
    {
        String k;
        if (j == 1) {
            k = i + "";
        } else {
            k = (i) + "" + "/" + (j) + "";
        }
        return k;
    }

    static boolean compare(String a, String b) //比较输入值与答案
    {
        if (a.equals(b))
            {System.out.println("回答正确");
            return true;}
        else
            {
            System.out.println("回答错误,正确答案是" + b);
            return false;
            }
    }
}

2.针对提取出来的计算类的接口函数做单元测试。

单元测试代码如下:

package happy;

import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class CalcTest {

    @Before
    public void setUp() throws Exception {
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void testGetGCD() {
        assertEquals(Calc.getGCD(10, 5), 5);
    }

    @Test
    public void testReduction() {
        assertEquals(Calc.Reduction(9, 5), "9/5");
    }

    @Test
    public void testMain() {
        
    }
}

单元测试结果:

代码覆盖率:

描述测试过程中遇到的问题以及解决的方案:

    测试中的除零错误,由于我们一开始在程序设计的时候就设定了出书的值不为零,所以不会出现不能除的情况。对于两个运算符的情况也是,在程序设计的一开始就设定只能生成一个运算符,所以不会出现类似a++的情况。

小结与感受:通过测试,是否有效发现了程序计算模块的问题,并给予改进?

    因为模块是根据助教发的写的,所以将自己原先的程序给拆解开来,并删除了一些没有必要的类,例如:GUI。再进行的单元测试。在拆解的过程中使得程序出现了很大的改变,程序在测试的时候出现了很多的问题。但是实在是由于我们组的编程能力有限,时间也是很有限,使得很多问题没有的到有效的解决,希望自己的编程能力能够有所提高。至少在目前,这种做作业还是有很大的难度,需要投入很大的精力,却得不到理想的效果。

隔周看之前的代码:

(1)良好的设计:在开始设计程序的时候就要进行合理地规划。对程序的功能进行合理地划分,这样后期对程序功能的完善跟扩充更加具有弹性。

(2)编码规范:在定义的时候尽量避免使用a,b,c等无意义的变量,会影响在后序实验过程中的代码阅读和理解。

(3)必要的注释:在写程序时需要进行必要的注释的填写,会帮助后期对程序总体框架的了解。而且程序不仅仅是给自己看的,也要让别人能够理解,从这点上说,注释还是很有必要的

git克隆助教的框架:

 git上交截图:

 

coding链接:

https://coding.net/u/watermelon123/p/homework3/git

结对照片:

PSP表格:

PSP2.1

Personal Software Process Stages

Estimated Time(hour)

Actual Time (hour)

Planning

计划

0.5

0.5

· Estimate

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

10

12

Development

开发

5

6

· Analysis

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

1

1.5

· Design Spec

生成设计文档

1

1

· Design Review

设计复审

1.5

2

· Coding Standard

代码规范

0.5

0.5

· Design

具体设计

2

2

· Coding

具体编码

4

4.5

· Code Review

代码复审

0.5

0.5

· Test

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

0.5

1

Reporting

报告

0.5

0.5

·

测试报告

1/6

1/6

·

计算工作量

1/6

0.5

·

并提出过程改进计划

0.25

0.25

posted @ 2017-03-29 19:32  哒哒哒、  阅读(196)  评论(4编辑  收藏  举报