RIGHT-BICEP单元测试

——“二柱子四则运算升级版”

”单元测试“这对于我们来说是一个全新的专业含义,在上了软件工程这门课,并当堂编写了简单的"求一组数中的最大值"函数的单元测试之后,我们对它有了全新的认识。

老师让我们回去之后将“二柱子四则运算升级版”的程序进行单元测试(二柱子程序的源码我已经上传,这里不再重复,只列举单元测试的部分和分析),如下:

PS.这里附上老师上课讲的关于RIGHT-BICEP测试的方法:

6个值得测试的具体部位,他们能够提高我们的测试技巧:
Right-结果是否正确?
B-是否所有的边界条件都是正确的?
I-能查一下反向关联吗?
C-能用其他手段交叉检查一下结果吗?
E-你是否可以强制错误条件发生?
P-是否满足性能要求?

一、测试计划

-测试结果是否正确?
-测试是否能够产生指定范围的随机数?
-测试能否选择是否保存到文件里?
—测试能否进行异常处理?
-测试能否选择有无真分数?
—测试能否选择只进行加减运算还是四则运算?
-测试能否选择加减有无负号?
—测试能否选择除法有无余数?
二、测试结果是否正确?
测试如下,基本可以达到我预想的结果。程序基本没有大的问题,不过小细节还是值得反复推敲……

三、测试是否能够产生指定范围的随机数?

上一次编写二柱子的程序也用到了随机生成随机数的知识点,我已经声明是在CSDN上看到大神们的讨论。用的是下面的源码:

 1 #include<iostream>
 2 #include <time.h>
 3 using namespace std;
 4 #define random(x) (rand()%x)
 5
 6 void main()
 7 {
 8     srand((int)time(0));
 9     one = rand() % (r2-r1+ 1) + 1;
10     two = rand() % (r2 - r1 + 1) + 1;
11     cout<<one<<" "<<two<<endl;
12 }

用这种方法貌似只能产生正整数。但是,鉴于这次程序的要求中涉及到用户设置“是否有负数”,所以我有两个思路。一是还用上次的方法,设置swich语句来控制是否手动添加

负号。二是换一中能生成含有负数的随机数。于是我又去人家的博客上围观了一下(原谅我真的记不住生成随机数的方法了╥﹏╥...),经过我的测试,下面的方法可以产生任意区间内的整数(含负数),源码如下:

 1 //编程时的测试程序
 2
 3 #include<iostream>
 4 #include <time.h>
 5 using namespace std;
 6 #define random(x) (rand()%x)
 7
 8 void main()
 9 {
10
11     int one, two;
12     int r, r1, r2;
13     cout << "分别输入下限和上限:" << endl;
14     cin >> r1;
15     cin >> r2;
16     r = r2 - r1;
17     srand((int)time(0));
18     /*one = r1 + r2 * rand() / (RAND_MAX + 1);
19     two = r1 + r2 * rand() / (RAND_MAX + 1);
20     three = r1 + r2 * rand() / (RAND_MAX + 1);
21     four = r1 + r2 * rand() / (RAND_MAX + 1);*/
22
23     one = r1 + rand() % r;
24     two = r1 + rand() % r;
25
26     cout << one<<" ," << two << endl;
27 }

测试数据和截图如下:分别测试-30~50;0~30;-30~0之间的整数,测试结果正确!!

 

 四、测试能否选择是否保存到文件里?

老师题目的要求是“可定制打印方式”,我看到有的同学理解是按照不同的输出风格输出,比如一行输出5个或者10个算式,这个可定制。但是我理解的是要用户选择是否要输出到文件里,因此我查阅了C++的输入输出流代码,如下:

 1 #include<fstream>
 2 #include<iostream>
 3 #include<cmath>
 4 using namespace std;
 5
 6 int main()
 7 {
 8     ofstream outfile("Prime.txt", ios::out);
 9     if (!outfile)
10     {
11         cout << "open error!" << endl;
12         exit(1);
13     }
14     outfile <<"1 2 3 4 5 6 " << endl;
15     outfile.close();
16     return 0;
17 }

我们会看到文件成功的建立,并将数据存入到文件里。

但是……(。・_・。)ノ我不得不说,我在制定思路的时候是想着,先让用户选择是否要打印到文件中,然后在后来的每次输出都用if语句来控制,如果只是屏幕输出就用cout<<输出;如果是保存到文件中就用outfile<<输出……但是……鉴于我的输出量实在是太大了,第一轮代码的编写我只是写了屏幕输出额cout,然后昨天由于作业赶着交就没有修改输出部分的代码,不过我使用了一个函数建立了文件,有时间我一定会再加上的……

代码如下:

 1 /*输出打印方式*/
 2 int Output(int o)
 3 {
 4     /*int o;
 5     cout << "系统已经记录了您的定制参数!请选择打印的方式:(1、直接输出 2、保存到文件)"<<endl;
 6     cin >> o;*/
 7     if (o == 1)
 8         cout << "四则运算出题系统欢迎您!!" << endl;
 9     else if (o == 2)
10     {
11         cout << "四则运算出题系统欢迎您!!" << endl;
12         ofstream outfile("formula.txt", ios::out);
13         if (!outfile)
14         {
15             cout << "Open error!!" << endl;
16             exit(1);
17         }
18         outfile.close();
19     }
20     else
21         cout << "输入错误,重新选择!" << endl;
22
23     return 0;
24 }

五、测试能否进行异常处理?
开始进行测试时,输入3之后报错,但是应该让用户重新输入,但是并没有出现应该有的效果啊啊啊……(。﹏。*)
于是,我对程序进行了修改,如下:
 1 cout << "请选择您是否需要保存文档?(1、不需要 2、需要)" << endl;
 2     cin >> O;
 3     while (1)//判断是否输入合法
 4     {
 5         if (O!=1 && O!=2)
 6         {
 7             cout << "您输入的有误,请重新输入:" << endl;
 8             cin >> O;
 9         }
10         else
11             break;
12     }

在主函数中添加循环输出直到用户输入正确的代码,之后程序可以进行出错处理了。

用户输入的数字错误,或者输入为空,程序都不会向下执行。

用户选择的数据范围不合理,也可以重新输入,直到符合要求为止。

六、测试能否选择有无真分数?
七、测试能否选择只进行加减运算还是四则运算?
八、测试能否选择加减有无负号?
九、测试能否选择除法有无余数?
以上几种测试在下图中显示:

( 终于写完本周的作业啦啦啦啦 ̄O ̄)ノ~~~好吧,也许没什么可高兴的,大神们早就进行下一项任务了吧?!(。・・)ノ……)

转载于:https://www.cnblogs.com/2016helen/p/5268515.html

RIGHT-BICEP单元测试——“二柱子四则运算升级版”相关推荐

  1. 个人项目——二柱子程序升级版

    更高要求的程序 一.程序要求 1.题目避免重复: 2.可定制(数量/打印方式): 3.可控制下列参数: 是否有乘除法: 是否有括号(最多可以支持十个数参与计算): 数值范围: 加减有无负数: 除法有无 ...

  2. 二柱子四则运算2.0版本

    支持真分数的四则运算 可以自定义题目数量 源代码: 1 #include<stdio.h> 2 #include<iostream> 3 #include<time.h& ...

  3. 个人项目——二柱子的生成小学生四则运算题程序

    二柱子的生成小学生四则运算题程序 一.程序要求 1.自动生成30道小学生四则运算题 2.除了整数外,还要可以生成真分数的四则运算 二.程序设计思想 程序分两个部分:整数部分和分数部分 1.定义变量:第 ...

  4. 四则运算(可怜的二柱子)2

    可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求: 1.题目避免重复:2.可定制(数量/打印方式):3.可以控制下列参数: 是否有乘除法: 是否有括号(最多可以支持十个数参与计算): 数值范围 ...

  5. java二柱子_japonensisjava导航

    japonensisjava导航这个时候,二柱子的声音从门口传了过来,说茂昌,我今儿相亲,你这身衣服借给我穿穿啊!相成了我让我妈给你?大鹅!啥? 第1章 讨债鬼我低下头,就看见这七个窟窿,透出了七个光 ...

  6. 二柱子2.0编程总结

                                                                                    时间记录表: 学生         王美 ...

  7. 个人项目3:一个能生成小学二年级四则运算题目的“软件”版本3

    要求: 1.实现在线答题. 2.答题结束后可以判断对错. 3.将错题的结果保存起来. 思路: 刚拿到这个项目时,我的想法就是把编程过程分为两个阶段,第一个阶段是完成能自动判断错误的编程,第二个阶段是能 ...

  8. 二柱子卖的西瓜上315啦!一个故事读懂315危机公关

    作者:苏佬师 全文共 2700 字 1 图,阅读需要 7 分钟 ---- / BEGIN / ---- <315晚会>是考验一个企业公关能力的活动,也是广告.公关狗们的「渡劫日」.这一夜, ...

  9. BICEP单元测试——随机四则运算升级版

    一.测试方法 6个值得测试的具体部位: Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制错误条件发生? ...

最新文章

  1. 用机器学习分析美国新财年1万个国防项目,7054亿军费都投给了哪些技术?
  2. InfoPath 揭秘 (一)
  3. 375. 猜数字大小 II
  4. iis7怎么安装php7,Linux下如何安装php7
  5. mysql添加索引后查询先用索引吗_mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引?...
  6. ubuntu18.04纯命令行安装chrome
  7. 这座中国小城,靠“造假”称霸一个全球市场
  8. 美团实习| 周记(二)
  9. UnicodeTOGB,能够将Unicode串转换成GB码
  10. 【优秀课设】基于Linux粤嵌GEC6818开发板的电子乐队程序设计(四种模式:和弦模式、键盘模式、鼓点模式、编曲模式)
  11. HDU - 1546 Idiomatic Phrases Game(dijkstra最短路)
  12. 我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下: 1、 长度13位; 2、 以86的国家码打头; 3、 手机号码的每一位都是数字。
  13. linux切换内核版本
  14. 导出excel工具类
  15. 仙剑4 linux,仙剑奇侠传98柔情版 for Linux——SDLPAL打包
  16. python爬虫爬取起点小说_python3爬虫-使用requests爬取起点小说
  17. 520浪漫代码流星雨
  18. web前端性能优化与SEO
  19. Qt编写地图综合应用22-动态轨迹
  20. JAVA计算机毕业设计星星电影购票网站Mybatis+源码+数据库+lw文档+系统+调试部署

热门文章

  1. xmos固件u8_XU208 USB数字界面 XMOS U8升级版 模块_便宜推
  2. edk2+vs2019环境搭建
  3. python字典统计排序1_数据分析1_入门Python
  4. MOS管的导通电阻RDS(on)与阈值电压VGS(th)温度特性详解
  5. moment获取几小时前_moment.js 常用(几天前、相差几天、自然周、自然月)
  6. R语言使用dcauchy函数生成柯西分布密度函数数据、使用plot函数可视化柯西分布密度函数数据(Cauchy distribution)
  7. android 蓝牙耳机 sco,java – Android:通过Sco蓝牙耳机播放声音
  8. 如何在 Visual Paradigm 中创建流程图丨使用教程
  9. 教你把竖屏视频剪辑为横屏播放的方法
  10. 如何通过分析网页源码下载淘宝教育视频