zoukankan      html  css  js  c++  java
  • 结对编程2——单元测试

    林晓芳 201421123092   陈惠 201421123096

    Coding地址:点我查看哦

    题目描述:

    上一周大家为四则运算程序设计了2-3个新功能,本次在隔了一周之后,我们循序渐进地进阶。本次目标:

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

    需求分析:

    1. 测试加法是否能正确工作;
    2. 测试加减乘除功能。
    3. 测试计算类对于各种参数的支持。

    设计测试框架, 模拟测试数据:

    计算模块的测试用例及运行结果:

    @Test
        public void testAdd() {
                assertEquals(String.valueOf("3"),Calculator.add("5/3","4/3"));
                assertEquals(String.valueOf("9"), Calculator.add("4","5"));
        }
    
        @Test
        public void testSub() {
                assertEquals(String.valueOf("1/3"),Calculator.sub("5/3","4/3"));
                assertEquals(String.valueOf("-1"),Calculator.sub("4","5"));
        }
    
        @Test
        public void testMul() {
                assertEquals(String.valueOf("20/9"),Calculator.mul("5/3","4/3"));
                assertEquals(String.valueOf("20"),Calculator.mul("4","5"));
        }
    
        @Test
        public void testDiv() throws Exception {
                assertEquals(String.valueOf("5/4"),Calculator.div("5/3","4/3"));
                assertEquals(String.valueOf("4/5"),Calculator.div("4","5"));
        }

    计算最大公约数测试:

    @Test
        public void testGCD() {
            assertEquals(Calculator.GCD(15,10),5);
        }

    参数错误提示:

    public static String div(String a, String b) throws Exception// 除法
        {
            a = a + "/1";
            b = b + "/1";
            String[] m = a.split("/");
            String[] n = b.split("/");
            int numerator1 = new Integer(m[0]);
            int denominator1 = new Integer(m[1]);
            int numerator2 = new Integer(n[0]);
            int denominator2 = new Integer(n[1]);
            if (denominator1 == 0 || numerator2 == 0 || denominator2 == 0) {
                throw new Exception("分母不能为0!");
            }
            int p = numerator1 * denominator2;
            int q = denominator1 * numerator2;
            int t = GCD(p, q);
            return Reduction(p / t, q / t);
        }
    @Test
        public void testDiv() throws Exception {
                assertEquals(String.valueOf("5/4"),Calculator.div("5/3","4/3"));
                assertEquals(String.valueOf("4/5"),Calculator.div("4","5"));
                try{
                    Calculator.div("4","0");
                    }    
                    catch(Exception ex){
                    assertEquals("分母不能为0!",ex.getMessage());
                    fail("分母不能为0!");
                    }
        }

     覆盖率:

    非摆拍照片:

    小结与感受:

         通过本次测试,能够有效发现程序计算模块的问题,并予以改进。由于我们两个都是第一次尝试测试,对于测试很陌生,不知从何下手,通过老师关于测试的教程和其他同学的帮助,对计算部分的代码进行了测试。测试过程中,我们开始庆幸当初的代码编程相对而言比较规范,使得隔了一周之后再看之前的代码,我们还能够看懂并加以修改。虽然这次还能够看懂自己写的代码,但是通过这次测试还是体会到了拥有良好的设计、编码规范和必要的注释的重要性。首先,良好的设计是基础,只有拥有良好的设计,才能更有效地找出编码过程中出现的问题并及时予以改正;其次,编码规范是核心,一大段杂乱无章的代码不仅会给自己和队友带来不必要的麻烦,而且在出现错误的时候容易迷失方向,浪费时间。最后,必要的注释可以让我们更快地理解整个程序。

    “汉堡包”:

    先来一片面包:队友是一个有想法的人,但还会听取我的看法,相互讨论最终执行。

    在把肉放上:有好的想法,但由于编程过程比较困难,会选择比较不简洁的解决方式。

    再来一片面包: 两个人之间要能够相互学习,相互讨论,发挥出1+1>2的能力。

    PSP:

    PSP2.1

    Personal Software Process Stages

    Time (%) Senior Student

    Time (%)

    Planning

    计划

    1h

    0.5h

    · Estimate

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

    8.5h

    8h

    · Analysis

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

    0.5h

    0.5h

    · Coding Standard

    代码规范

    1h

    0.5h

    · Design

    具体设计

    1h

    1.5h

    · Coding

    具体编码

    3h

    2.5h

    · Test

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

    1h

    1.5h

    Reporting

    报告

    1h

    1h

  • 相关阅读:
    React实现新闻网站--使用动态路由获取不同列表内容
    Bootstrap4 轮播+模态框+提示框+弹出框
    JDK 升级问题小结
    JDK8 指南(译)
    如何学习一门编程语言
    redis 系列5 数据结构之字典(上)
    sql server 临时表(上) Tempdb概述
    redis 系列4 数据结构之链表
    redis 系列3 数据结构之简单动态字符串 SDS
    redis 系列2 知识点概述
  • 原文地址:https://www.cnblogs.com/lianlianya/p/6637462.html
Copyright © 2011-2022 走看看