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

时间: 2024-11-20 17:44:47

结队编程2-单元测试(107 120)的相关文章

结队编程1-四则运算(107、120)

[码市链接]https://git.coding.net/Luojiening/Teamwork1.git a.需求分析 将这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功能.一定价值的程序. 1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算: 2.有计时功能,能显示用户开始答题后的消耗时间: 3.界面支持中文简体/中文繁体/英语,用户可以选择一种. b.功能设计 1.生成自定义数目算术

20165214 结队编程项目-四则运算(第二周)

20165214 第一次结队编程项目--四则运算第二周 需求分析 本周的结队编程想要实现一个四则运算系统,它可以自动生成n个计算题(本周不包括分数),其中n由我们输入.每输出一道题目,运行程序的人需要输入相应的答案,直到最后一道题做完.最后,统计正确率.然后,在这个基础上可以进行相应的功能扩展,比如语言支. 设计思路 我需要在上周的基础上对程序进行补充.在题目的生成上,应该再加上括号.÷./ 本周达成: ①能够随机生成n道题目,n由我们输入,最大长度可直接在程序里面修改: ②支持真分数运算: ③

结队编程第三次作业

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Simple_arithmetic //简易四则运算{ class Program { public static void Ni() { Console.WriteLine("请输入您想做的运算: "); Console.WriteLine("输入 [+] 表示加法"); C

结队编程之总结篇

结对编程之总结及体会 短暂而又漫长的俩周时间,我和我的队友黄冠译将结队编程的作业刚刚做好.先介绍一下我的队友黄冠译,大学三年的同学,对他挺熟悉,知道他编程特别厉害,喜欢专研.这次老师给我们这样好的机会,让我们交流,共同完成一个小的项目.我觉得我的队友特别聪明,特别有思想,最开始我没有想到会用C语言写界面,我学的C语言只不过是出现一个小黑框而已,再无深入,我队友提出用C语言的图形库来写界面,我在那时候只有震惊.可能是学的知识有限,只知道C语言就是用来写个小黑框的还能干什么.当我的队友把这次结队编程

结队编程——电梯调度

这次老师布置的作业是:结队编程完成电梯的调度. 1.与我结队编程的队员是张舒瑞:http://www.cnblogs.com/bjzsr/ 附上我们一起讨论编程问题时的照片: 2.让我来介绍一下我的队员张舒瑞:他是一个很外向的人,性格很活泼,也很聪明.我们从大一到现在一直都挺熟的,所以在讨论过程中不存在什么交流障碍. 3.在这次结队编程中,他负责写的是查找电梯函数的部分,我负责的是接人函数的部分.他编的代码很精简,而我总觉得我写的代码很繁琐,所以他比较注重算法效率,而我是特别注重界面美观的那一个

日程管理系统代码维护第二弹(结队编程)

结队编程的好处: 第一:培养新人,促进沟通,提升团队整体能力. 第二:更好的知识共享和信息交流,促进团队协作. 第三:促进团队成员的沟通,提升团队凝聚力. 但由于我们一开始的工作模式都是个人的,现在开始了这个结队编程少许有些不适应.因为要开始慢慢习惯队友的工作方式,习惯她的思考方式.一开始策划时意见总会不统一,在两个人慢慢磨合的情况下,开始了正式的工作. 首先我们两个人通读了这个日程管理系统,找出其中的BUG并且改正,在改完BUG后,开始改进和美化.它的程序里个人中心的界面是空白的,我们先画好界

二分法思想体会和结队编程感想

1.二分法思想 二分法在编程中是一种十分重要的算法,其主要思想是将问题区间不断的折半进而能更快的寻找到目标,二分法能将数据较大的问题规模很好地缩小. 使用条件:数组中的元素有序            时间复杂度:O(log2n) 二分法算法: int BIN(int a[], int key, int n) { int left = 0; int right = n - 1; while (left <= right) { int middle = (left + right) / 2; if

20175126Apollo 20175126《Java程序设计》结队编程项目——四则运算 第一周阶段总结

结队编程项目——四则运算 一.项目需求 自动生成小学四则运算题目(加.减.乘.除)统计正确率 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 需求分析: 生成四则运算:需要使用随机数生成,需要创造一个能实现计算功能的类. 支持多运算符:运算符也需要利用随机生成,并且不限个数. 支持真分数:需要用到生成分子.分母的函数,将分数化简等. 统计正确率:需要设置一个计算变量,并需要用一个判断正确的函数. 二.设计思路 首先根据需求分析,进行大体的设计: 生成题目→输入答案→判断正

20175314 结队编程项目——四则运算第二周

20175314 结队编程项目--四则运算第二周 一.需求分析 实现一个命令行程序,要求: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 能生成随机数 产生的算式要有括号 要建立堆栈,进行中缀转后缀,以及后续后缀的运算 能输入想要产生的题目数 能输入用户计算的答案 能够比较用户输入的答案是否正确 能够统计用户答题的正确率 二.设计思路 生成一个有加减乘除支持括号的算式,以字符串的形式输出,每个操作数或操作符中间都用

分治和结队编程

分治法的思想 分治法就是把一个大问题分解为规模较小的相同小问题,这些小问题的解合并起来就是大问题的解,但是小问题的规模要是一样且相同的, 不能分解出来的一个小问题是求最大值,而 另一个小问题是求最小值,这种情况是不适合用分治的 如果要处理一个较大规模的问题,比如说大整数的加减乘除,是可以分解成最末位的一个数和最末位的数的运算,与小学数学中的手算的思想的一致的 分治法和递归是紧密联系的. 分治法可以运用于: 二分搜索, 归并排序 快排 还有汉诺塔问题 大整数乘法 [https://www.cnbl