实验二、黑盒测试技术(二)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二、黑盒测试技术(二)
一、实验类型
实验类型为验证型,2个学时。
二、实验目的
(1)能熟练应用边界值和决策表测试技术进行测试用例设计;
(2)对测试用例进行优化设计;
三、背景知识
(一)边界值测试
1.边界值分析
边界值分析是考虑边界条件而选取测试用例的一种功能测试方法。边界值分析关注输入空间的边界,以标识测试用例,因为错误更可能出现在输入变量的极值附近。
边界值分析的基本思想是:使用在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值。
2.健壮性测试
健壮性是指在异常情况下,软件还能正常运行的能力。健壮性考虑的主要部分是预期输出,而不是输入。
健壮性测试是边界值分析的一种简单扩展。除了变量的5个边界分析取值还要考虑略超过最大值(max)和略小于最小值(min)时的情况。
3.最坏情况测试
最坏情况测试将意味着更大工作量,n变量函数的最坏情况测试会产生5的n次方个测试用例,而边界值分析只产生4n+1个测试用例。
(二)基于决策表的测试
决策表适合描述不同条件集合下采取行动的若干组合的情况。使用决策表标识测试用例,则把条件解释为输入,行动解释为输出。有时条件最终引用输入的等价类,行为引用被测试软件的主要功能处理部分,规则解释为测试用例。
对于有限条目决策表,如果有n个条件,则必须有2条规则。如果不关心条目实际地表明条件是不相关的,则没有不关心条目的规则统计为1条规则,规则中每出现一个不关心条目,该规则数乘一次2。
四、实验设备
主流PC机一套,要求安装windows操作系统、Visual Studio2010或Eclipse开发工具和OFFICE工具
五、实验内容
NextDate函数
根据下面给出的规格说明,分别利用决策表方法,给出足够的测试用例并根据用例执行测试。
NextDate函数包含三个变量:Month(月份)、day(日期)和year(年),函数的输出为输入日期后一天的日期。例如,输入为2007年9月9日,则函数的输出为2007年9月10日。要求输入变量month、day和year均为整数,并且满足下列条件:(1)1<=month<=12;(2)1<=day<=31;(3)1912<=year<=2050
C语言程序
JAV A程序界面
六、实验步骤
(1)首先根据题目要求编写nextday功能函数;
(2)根据功能性测试技术设计测试用例,主要考虑决策表测试技术:
分析条件桩和动作桩
输入:
-Month
-Day
-Year
为获得下一个日期,NextDate函数需执行的操作只有如下5种:
-day变量加1
-day变量复位为1
-month变量加1
-month变量复位为1
-year变量加1
考虑规则个数:
M1 = {月份:每月有30天}
M2 = {月份:每月有31天,12月除外}
M3 = {月份:此月是12月}
M4 = {月份:此月是2月}
D1 = {日期:1≤日期≤27}
D2 = {日期:日期=28}
D3 = {日期:日期=29}
D4 = {日期:日期=30}
D5 = {日期:日期=31}
Y1 = {年:年是闰年}
Y2 = {年:年是平年}
七、实验报告要求
(1)完成初始决策表和化简决策表,并设计测试用例,记录实验结果;(2)总结决策表设计测试用例的步骤
#include
#include
using namespace std;
int main()
{
string ntime;
int tmp;
while(1)
{
cout<< "请输入日期,例如(0712-02-12)" << endl; loop:
cin>>ntime;
while(ntime.length()!=10)
{
cout<<"您的输入有误,请重新输入日期,例如(0712-02-12)"< goto loop; } while(ntime[4]!='-'||ntime[7]!='-') { cout<<"您的输入格式有误,请重新输入日期,例如(0712-02-12)"< goto loop; } while(ntime[0]=='0'&&ntime[1]=='0'&&ntime[2]=='0'&&ntime[3]=='0') { cout<<"您的年份输入有误,请重新输入日期,例如(0712-02-12)"< goto loop; } while(ntime[5]>='2'||(ntime[5]=='1'&&ntime[6]>='3')) { cout<<"您的月份输入有误,请重新输入日期,例如(0712-02-12)"< goto loop; } while(ntime[5]=='0'&&ntime[6]=='0') { cout<<"您的月份输入有误,请重新输入日期,例如(0712-02-12)"< goto loop; } while((ntime[8]=='3'&&ntime[9]>='2')) { cout<<"您的天数输入有误,请重新输入日期,例如(0712-02-12)"< goto loop; } while(ntime[8]=='0'&&ntime[9]=='0') { cout<<"您的天数输入有误,请重新输入日期,例如(0712-02-12)"< goto loop; } while((((ntime[5]=='1'&&(ntime[6]=='0'||ntime[6]=='2'))||ntime[6]=='1'||ntime[6]=='3'||ntime[6]== '5'||ntime[6]=='7'||ntime[6]=='8')&&ntime[8]=='3'&&ntime[9]>='2')||(ntime[5]=='0'&&ntime[6]== '2'&&ntime[8]>='3')) { cout<<"您的天数输入有误,请重新输入日期,例如(0712-02-12)"< goto loop; } while(((ntime[5]=='1'&&ntime[6]=='1')||(ntime[5]=='0'&&(ntime[6]=='4'||ntime[6]=='6'||ntime[6]