首页 > 代码库 > 结队编程2-单元测试(107 120)

结队编程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:

技术分享

 

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