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());
  9. one = rand() % (r2-r1+ ) + ;
  10. two = rand() % (r2 - r1 + ) + ;
  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());
  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();
  13. }
  14. outfile <<"1 2 3 4 5 6 " << endl;
  15. outfile.close();
  16. return ;
  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 == )
  8. cout << "四则运算出题系统欢迎您!!" << endl;
  9. else if (o == )
  10. {
  11. cout << "四则运算出题系统欢迎您!!" << endl;
  12. ofstream outfile("formula.txt", ios::out);
  13. if (!outfile)
  14. {
  15. cout << "Open error!!" << endl;
  16. exit();
  17. }
  18. outfile.close();
  19. }
  20. else
  21. cout << "输入错误,重新选择!" << endl;
  22.  
  23. return ;
  24. }

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

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

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

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

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

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

RIGHT-BICEP单元测试——“二柱子四则运算升级版”的更多相关文章

  1. 悲催的二柱子们做小学二年级四则运算题(Javaweb)

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  2. 菜鸟学IT之四则运算升级版

     菜鸟学IT之四则运算升级版 本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213 团队代码github远程仓库的 ...

  3. Intellij Idea系列之导Jar包与编写单元测试(二)

     Intellij Idea系列之导Jar包与编写单元测试(二) 一.初衷 对于很多的初学者来说,Intellij如何导入jar包感到很迷惑,甚至在网上搜过相关文章之后还是云里雾里,本博客通过图文并茂 ...

  4. Azure Bicep(二)语法简介

    一,引言 上一篇文章有介绍到 Azure Bicep 的部署问题,文中也只是演示部署范围为 Sub,并将演示的 Azure Resource Group 到 Azure.给定 Bicep 文件,可以部 ...

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

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

  6. C语言编程—自动生成四则运算升级版

    #include<stdio.h> #include<time.h> struct fenshu { int fenzi; int fenmu; }Fenshu[]; int ...

  7. 软件工程课程作业(二)--四则运算2改进版(c++)

    题目要求: 1.避免题目重复 2.可定制(数量/打印方式) 3.可以控制下列参数 (1)是否有乘除法 (2)是否有括号 (3)数值范围 (4)加减有无负数 (5)除法有无余数 关键设计思想: oper ...

  8. Django单元测试二三事

    零.前言 之前做过一个微信公众平台的开发者后台,功能比较简单,我个人也比较懒,所以就没有写测试.前段时间更新了一下版本,对代码进行了改动.结果昨天收到消息说后台出问题了,一个功能无法使用.我检查了半天 ...

  9. echarts使用笔记二:柱子堆叠

    1.多个柱子堆叠效果,多用于各部分占比 app.title = '坐标轴刻度与标签对齐'; option = { title : { //标题 x : 'center', y : 5, text : ...

随机推荐

  1. BZOJ 3489: A simple rmq problem(K-D Tree)

    Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 2579  Solved: 888[Submit][Status][Discuss] Descripti ...

  2. Redis 单机和多实例部署

    作者:北京运维 1. 安装环境说明 OS 版本:CentOS 7.5.1804 Redis 版本:redis-3.2.12 Redis 下载页面:http://download.redis.io/re ...

  3. Mysql 简单的使用定时器调用存储过程

    1.创建测试的表 CREATE TABLE mytable (    id INT auto_increment NOT NULL,    NAME VARCHAR (100) NOT NULL DE ...

  4. java Clob类型 转String

    1.我的数据库是oracle11g 遇到取出来的字段是clob类型,但是所需要的是string类型,写一个转换函数就可以解决问题了. // Clob类型 转String public String C ...

  5. Flume(3)-安装部署

    一. 下载 Flume官网地址 http://flume.apache.org/ 文档查看地址 http://flume.apache.org/FlumeUserGuide.html 下载地址 htt ...

  6. (补题 杭电 1008)Elevator

    Elevator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  7. 微信小程序-js为object添加属性

    代码如下: var my_set = result.attributes.my_set; if (my_set == undefined) { my_set = { is_be_agree: e.de ...

  8. 用GO把你想说的话写到比特币链上

    比特币除了币转账还有不少好玩的地方,比如把你想说的话写上去,可以当做留念.记录.或者装逼.今天用GO语言写了一个比特币交易构建.交易签名的程序. 生成的交易信息可以在比特币控制台用sendrawtra ...

  9. 关于 idea 快捷键 alt + f7 无法使用的一些尝试

    1. 概述 问题 使用 idea 时, 快捷键 alt + f7 无法生效 环境 OS: win10 idea: idea 2018.1.5 GeForce Experience: 3.17.0.12 ...

  10. 北京Uber优步司机奖励政策(4月10日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...