RIGHT-BICEP单元测试——“二柱子四则运算升级版”
RIGHT-BICEP单元测试
——“二柱子四则运算升级版”
”单元测试“这对于我们来说是一个全新的专业含义,在上了软件工程这门课,并当堂编写了简单的"求一组数中的最大值"函数的单元测试之后,我们对它有了全新的认识。
老师让我们回去之后将“二柱子四则运算升级版”的程序进行单元测试(二柱子程序的源码我已经上传,这里不再重复,只列举单元测试的部分和分析),如下:
PS.这里附上老师上课讲的关于RIGHT-BICEP测试的方法:
6个值得测试的具体部位,他们能够提高我们的测试技巧:Right-结果是否正确?B-是否所有的边界条件都是正确的?I-能查一下反向关联吗?C-能用其他手段交叉检查一下结果吗?E-你是否可以强制错误条件发生?P-是否满足性能要求?
一、测试计划


三、测试是否能够产生指定范围的随机数?
上一次编写二柱子的程序也用到了随机生成随机数的知识点,我已经声明是在CSDN上看到大神们的讨论。用的是下面的源码:
#include<iostream>
#include <time.h>
using namespace std;
#define random(x) (rand()%x) void main()
{
srand((int)time());
one = rand() % (r2-r1+ ) + ;
two = rand() % (r2 - r1 + ) + ;
cout<<one<<" "<<two<<endl;
}
用这种方法貌似只能产生正整数。但是,鉴于这次程序的要求中涉及到用户设置“是否有负数”,所以我有两个思路。一是还用上次的方法,设置swich语句来控制是否手动添加
负号。二是换一中能生成含有负数的随机数。于是我又去人家的博客上围观了一下(原谅我真的记不住生成随机数的方法了╥﹏╥...),经过我的测试,下面的方法可以产生任意区间内的整数(含负数),源码如下:
//编程时的测试程序 #include<iostream>
#include <time.h>
using namespace std;
#define random(x) (rand()%x) void main()
{ int one, two;
int r, r1, r2;
cout << "分别输入下限和上限:" << endl;
cin >> r1;
cin >> r2;
r = r2 - r1;
srand((int)time());
/*one = r1 + r2 * rand() / (RAND_MAX + 1);
two = r1 + r2 * rand() / (RAND_MAX + 1);
three = r1 + r2 * rand() / (RAND_MAX + 1);
four = r1 + r2 * rand() / (RAND_MAX + 1);*/ one = r1 + rand() % r;
two = r1 + rand() % r; cout << one<<" ," << two << endl;
}
测试数据和截图如下:分别测试-30~50;0~30;-30~0之间的整数,测试结果正确!!
四、测试能否选择是否保存到文件里?
老师题目的要求是“可定制打印方式”,我看到有的同学理解是按照不同的输出风格输出,比如一行输出5个或者10个算式,这个可定制。但是我理解的是要用户选择是否要输出到文件里,因此我查阅了C++的输入输出流代码,如下:
#include<fstream>
#include<iostream>
#include<cmath>
using namespace std; int main()
{
ofstream outfile("Prime.txt", ios::out);
if (!outfile)
{
cout << "open error!" << endl;
exit();
}
outfile <<"1 2 3 4 5 6 " << endl;
outfile.close();
return ;
}
我们会看到文件成功的建立,并将数据存入到文件里。
但是……(。・_・。)ノ我不得不说,我在制定思路的时候是想着,先让用户选择是否要打印到文件中,然后在后来的每次输出都用if语句来控制,如果只是屏幕输出就用cout<<输出;如果是保存到文件中就用outfile<<输出……但是……鉴于我的输出量实在是太大了,第一轮代码的编写我只是写了屏幕输出额cout,然后昨天由于作业赶着交就没有修改输出部分的代码,不过我使用了一个函数建立了文件,有时间我一定会再加上的……
代码如下:
/*输出打印方式*/
int Output(int o)
{
/*int o;
cout << "系统已经记录了您的定制参数!请选择打印的方式:(1、直接输出 2、保存到文件)"<<endl;
cin >> o;*/
if (o == )
cout << "四则运算出题系统欢迎您!!" << endl;
else if (o == )
{
cout << "四则运算出题系统欢迎您!!" << endl;
ofstream outfile("formula.txt", ios::out);
if (!outfile)
{
cout << "Open error!!" << endl;
exit();
}
outfile.close();
}
else
cout << "输入错误,重新选择!" << endl; return ;
}

cout << "请选择您是否需要保存文档?(1、不需要 2、需要)" << endl;
cin >> O;
while ()//判断是否输入合法
{
if (O!= && O!=)
{
cout << "您输入的有误,请重新输入:" << endl;
cin >> O;
}
else
break;
}
在主函数中添加循环输出直到用户输入正确的代码,之后程序可以进行出错处理了。
用户输入的数字错误,或者输入为空,程序都不会向下执行。
用户选择的数据范围不合理,也可以重新输入,直到符合要求为止。


( 终于写完本周的作业啦啦啦啦 ̄O ̄)ノ~~~好吧,也许没什么可高兴的,大神们早就进行下一项任务了吧?!(。・・)ノ……)
RIGHT-BICEP单元测试——“二柱子四则运算升级版”的更多相关文章
- 悲催的二柱子们做小学二年级四则运算题(Javaweb)
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- 菜鸟学IT之四则运算升级版
菜鸟学IT之四则运算升级版 本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213 团队代码github远程仓库的 ...
- Intellij Idea系列之导Jar包与编写单元测试(二)
Intellij Idea系列之导Jar包与编写单元测试(二) 一.初衷 对于很多的初学者来说,Intellij如何导入jar包感到很迷惑,甚至在网上搜过相关文章之后还是云里雾里,本博客通过图文并茂 ...
- Azure Bicep(二)语法简介
一,引言 上一篇文章有介绍到 Azure Bicep 的部署问题,文中也只是演示部署范围为 Sub,并将演示的 Azure Resource Group 到 Azure.给定 Bicep 文件,可以部 ...
- BICEP单元测试——随机四则运算升级版
一.测试方法 6个值得测试的具体部位: Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制错误条件发生? ...
- C语言编程—自动生成四则运算升级版
#include<stdio.h> #include<time.h> struct fenshu { int fenzi; int fenmu; }Fenshu[]; int ...
- 软件工程课程作业(二)--四则运算2改进版(c++)
题目要求: 1.避免题目重复 2.可定制(数量/打印方式) 3.可以控制下列参数 (1)是否有乘除法 (2)是否有括号 (3)数值范围 (4)加减有无负数 (5)除法有无余数 关键设计思想: oper ...
- Django单元测试二三事
零.前言 之前做过一个微信公众平台的开发者后台,功能比较简单,我个人也比较懒,所以就没有写测试.前段时间更新了一下版本,对代码进行了改动.结果昨天收到消息说后台出问题了,一个功能无法使用.我检查了半天 ...
- echarts使用笔记二:柱子堆叠
1.多个柱子堆叠效果,多用于各部分占比 app.title = '坐标轴刻度与标签对齐'; option = { title : { //标题 x : 'center', y : 5, text : ...
随机推荐
- BZOJ 2654: tree(二分 最小生成树)
Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 2901 Solved: 1196[Submit][Status][Discuss] Descript ...
- Linux --- Ubuntu16.04.5 LTS 虚拟机安装后的软件安装基础操作总结
1. 配置安装源 因为默认是使用Ubuntu官方服务器,国内电脑使用外国服务器较慢,所以需使用国内的服务器(以下清华大学服务器为例). 方法一: (此过程很慢,实在不动就取消吧,加载一部分也够用,以后 ...
- 如何使用gitbash 把你的代码托管到github
1.如果你没有创建仓库 mkdir vuex-playList cd vuex-playList git init touch README.md git add README.md git comm ...
- micro:bit 软件生态系统介绍
microbit 软件分成在microbit (Target Computer 如下图右边)上执行的及主计算机(Host Computer 如下图左边)上两类 : 一般程序写好后透过USB 转到mic ...
- win下python环境搭建以及安装pip、django
1. 安装python并配置 下载安装python,这里我下载的是python2.7,听说2.7比较好用 地址:https://www.python.org/downloads/source/ 记住你 ...
- SSM-CRUD入门项目——新增与校验
新增 分析: 在Index.jsp页面点击新增,弹出对话框(模态框) 数据库查询部门列表显示在模态框中 用户输入数据完成操作 我们先把模态框构建出来,并对新增按钮添加事件,点击按钮弹出模态框: < ...
- 20155227 《Java程序设计》实验四 Android开发基础设计实验报告
20155227 <Java程序设计>实验四 Android开发基础设计实验报告 任务一 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二 ...
- 20155315 2016-2017-2 《Java程序设计》第一周学习总结
教材学习内容总结 第一章中提到了Java的前世今生和三大平台,我了解到Java SE包括JVM,JRE,JDK和Java语言.java最基本的特性之一是"跨平台",这使得Java语 ...
- 20155323 2016-2017-2 《Java程序设计》第9周学习总结
20155323 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操 ...
- 20155336 《Java程序设计》实验二 (Java面向对象程序设计)实验报告
20155336 <Java程序设计>实验二 (Java面向对象程序设计)实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...