• 结队编程2-单元测试(107 120)


    码市链接:https://git.coding.net/Luojiening/TeamworkTest.git

    a. 需求分析

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

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

        3.通过单元测试代码,测试计算类对于各种参数的支持;

          a. 输入是有错误的,例如 “1 ++ 2”,

          b. 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,

          c. 或者是 “ 248 / 0” 怎么办?     

          d. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?

          e. 那么如果真的计算结果是 “-1” 又怎么处理呢?

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

    1.加减乘除功能测试

     TEST_METHOD(AddTest)
            {
    
                Assert::AreEqual(test->Add(1.0, 2.0), 3.0);
                Assert::AreEqual(test->Add(5.0, 2.0), 7.0);
            }
    
            TEST_METHOD(SubtractTest)
            {
                Assert::AreEqual(test->Subtract(7.0, 2.0), 5.0);
                Assert::AreEqual(test->Subtract(5.0, 2.0), 3.0);
            }
    
            TEST_METHOD(MultiplyTest)
            {
                Assert::AreEqual(test->Multiply(7.0, 2.0), 14.0);
                Assert::AreEqual(test->Multiply(5.0, 2.0), 10.0);
            }
    
            TEST_METHOD(DivideTest)
            {
                Assert::AreEqual(test->Divide(14.0, 2.0), 7.0);
                Assert::AreEqual(test->Divide(6.0, 3.0), 2.0);
            }

    测试截图:

    2、测试计算类对于各种参数的支持:

     输入是有错误的,例如 “1 ++ 2”以及分母为零的情况,输入错误时,返回"NO"

     result = "NO";
                Assert::AreEqual(test->integer_cal("++", 9, 1), result);

    result = "NO";
    Assert::AreEqual(test->integer_cal("/", 9, 0), result);

    测试截图:

     怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?

     那么如果真的计算结果是 “-1” 又怎么处理呢?

     result ="NO";
                Assert::AreEqual(test->fraction_cal("-", 2, 0, 1, 2),result);
                
     result = "-1";
                Assert::AreEqual(test->fraction_cal("-", 1, 2, 3, 2), result);

    如果计算结果错误的,返回值为“NO”,而计算结果为-1的返回值为“-1”

     测试截图:

    c. 小结与感受:

    首先我觉得这次的单元测试很有必要,因为之前写的四则运算有许多不完善的地方,比如分数除法中分母为零的情况,通过测试我们找出异常并改善了代码,而且这次的这次的实验让我们的代码更模块化,条理更清晰。

    d.体会

    1.之前写的代码并没有分模块,加之是两个星期前的代码有些忘记自己写了什么,虽然有些注释,不过还是挺麻烦

    2.第一次的实验只是考虑到最基本功能的实现,没有考虑到一些异常情况,如输入异常

    3.实现代码的功能的模块化后提高了代码的可读性,以后若是再要修改也会方便许多。

    PSP展示

    PSP2.1 Personal Software Process Stages Time (%) Senior Student(/hour) Time (%)(/hour)
    · Planning 计划 2 2
    · Estimate 估计这个任务需要多少时间 24 25
    · Analysis 需求分析 (包括学习新技术) 10 12
    · Coding Standard 代码规范 3 4
    · Design 具体设计 2 2
    · Coding 具体编码 6 5
    · Test 测试(自我测试,修改代码,提交修改) 2 1
    Reporting 报告 1 1

    photo:

  • 相关阅读:
    经典isset,empty,is_null三个的用法与区别,最详细的讲解
    TP框架分页bootstrap冲突问题
    TP框架右下角运行时间
    TP6的跳转坑 和cmd报错 php版本和composer扩展坑
    TP5.1模板继承
    TP5.1模型关联
    Oracle语句
    ajaxform和ajaxgrid获取数据源、添加数据
    confirm和alert弹窗
    UEP-弹窗
  • 原文地址:https://www.cnblogs.com/wacmp/p/6641036.html
Copyright © 2020-2023  润新知