• 结对编程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

  • 相关阅读:
    nignx重启启动关闭
    Tomcat日志配置
    误删除了mssql的表。 使用命令:drop table xxxx
    使用redis-cli定时执行指定命令
    在crontab中动态写日志
    循环日期的shell
    CountDownLatch、CyclicBarrier、Semaphore 区别
    log4j 知识点
    slf4j-api、slf4j-log4j12、log4j 之间是什么关系?
    HTTP协议中的长连接、短连接、长轮询、短轮询
  • 原文地址:https://www.cnblogs.com/ws002/p/6641382.html
Copyright © 2020-2023  润新知