一、6个值得测试的具体部位,他们能够提高你的测试技巧
- Right-结果是否正确?
- B-是否所有的边界条件都是正确的?
- I-能查一下反向关联吗?
- C-能用其他手段交叉检查一下结果吗?
- E-你是否可以强制错误条件发生?
- P-是否满足性能要求
二、测试模块
测试在出现乘除法和加减法的过程中,是否会出现不符合运算规则的数据,比如出现除数为0的状况,判断程序运行数据的在其他模块中,在本模块的测试中,使用的数据为其他模块中确定好的数据范围(0-1000),并在测试过程中,强制出现除数为0 的错误条件,并使被减数大于减数,被除数大于除数,测试差出现负数以及商出现假分数是否正确
三、测试计划
R、通过输入代表性数据测试该模块运行结果是否正确
B、引用了外部条件,随机数生成划定范围,可以避免出现原始数据不在范围内的情况
I、通过对生成结果数据的检查判断是否对原始数据进行了处理
C、通过修改程序参数满足测试需求,检查结果
E、通过强制发生错误条件,测试该模块会出现什么样的结果
P、更改判断条件,检查结果是否满足要求
四、测试代码
// 测试.cpp : Defines the entry point for the console application. // /*有乘除法,对加减有负数模块进行测试*/ #include "stdafx.h" #include"stdlib.h" #include"iomanip.h" #include"iostream.h" #include"string" using namespace std; int main() { int a,b,c,d; string judge1="Y"; string judge2="Y"; cout<<"允许加减结果出现负数,允许乘除法出现结果是假分数"<<endl; cout<<"请随机输入两个数:空格键隔开"<<endl; cin>>a>>b; cout<<"请输入要测试的运算( 0:加法 1:减法 2:乘法 3:除法)"<<endl; cin>>c; /*设置右对齐*/ cout.flags(ios::right); if((judge1=="Y"||judge1=="y")) //允许假分数 { switch(c) //随机产生运算符 { : cout<<setw()<<a<<'+'<<b<<'='; break; : if(judge2=="Y"||judge2=="y") //允许负数结果出现 { cout<<setw()<<a<<'-'<<b<<'='; } else { if(a>=b) cout<<setw()<<a<<'-'<<b<<'='; else cout<<setw()<<b<<'-'<<a<<'='; } break; : cout<<setw()<<a<<'*'<<b<<'='; break; : //判断生成除法的条件,除数不能为零 &&b==) cout<<setw()<<b<<'/'<<a<<'='; &&b!=) cout<<setw()<<a<<'/'<<b<<'='; &&b==) cout<<setw()<<a<<<<'='; else cout<<setw()<<a<<'/'<<b<<'='; break; } } else //不允许假分数出现 { switch(c) { : cout<<setw()<<a<<'+'<<b<<'='; break; : if(judge2=="Y"||judge2=="y") //允许负数结果出现 { cout<<setw()<<a<<'-'<<b<<'='; } else { if(a>=b) cout<<setw()<<a<<'-'<<b<<'='; else cout<<setw()<<b<<'-'<<a<<'='; } break; : cout<<setw()<<a<<'*'<<b<<'='; break; : //真分数判断 ) cout<<setw()<<a<<'/'<<b<<'='; else cout<<setw()<<b<<'/'<<a<<'='; break; } } cout<<endl; cout<<"是否继续 是(1)否(0)"<<endl; cin>>d; ) main(); else ; }
五、测试结果
加法测试结果
减法测试结果
乘法测试结果
除法测试结果
六、测试结果分析
在程序编写过程中,每个模块要有相应的测试模块,才能避免整个程序完成后,发生出现问题很难找到或者找不到出现错误的地方,另外,编写测试模块,可以帮助完善整个程序,是一种很好的编程习惯