1、实验 1黑盒测试用例设计1、实验目的1、掌握黑盒测试用例的设计方法。2、综合运用所学的黑盒测试方法设计测试用例。2、实验准备1、黑盒测试用例的设计方法。2、测试用例模板。3、实验内容3.1 基本训练实验一:假设现有以下的三角形分类程序。该程序的功能是,读入代表三角形边长的 3 个整数,判定它们能否组成三角形。如果能够,则输出三角形是等边、等腰或任意三角形的分类信息。图 1 显示了该程序的流程图和程序图。为以上的三角形分类程序设计一组测试用例。图 1 实验二:为自动售货机设计黑盒测试用例有一个处理单价为 5 角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下: 若投入 5 角钱或 1 元钱
2、的硬币,押下橙汁或啤酒的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示零钱找完的红灯亮,这时在投入1 元硬币并押下按钮后,饮料不送出来而且1 元硬币也退出来;若有零钱找,则显示零钱找完的红灯灭,在送出饮料的同时退还 5 角硬币。3.2 扩展训练题目 1:利用因果图法编写测试用例。某奖金计算软件实现功能如下:1 该软件可以计算某公司的年终奖,该公司员工分为普通员工和管理人员。2 员工表现分为普通、优秀和特殊贡献(普通和优秀员工都可以有特殊贡献,普通员工表现普通和管理人员表现普通拿的工资是不同的)。3 根据员工的分类和表现,将奖金分为1 类奖金,2 类奖金。具体分析:输入条件:员工类别
3、:普通员工A1、管理人员A2员工表现:普通B1、优秀B2、特殊贡献B3 输出条件:奖金类别:类奖金C1、2 类奖金C2其中:A1 和 A2 是互斥的,B1 和 B2 是互斥的,B1 和 B3,B2 和 B3 可以同时满足。普通员工:A1+B1C1A1+B2 C2 A1+B1+B3C3 A1+B2+B3C4管理人员:A2+B1C5A2+B2 C6 A2+B1+B3C7 A2+B2+B3C84、实验步骤4.1 基本训练实验一步骤:第一步:确定测试策略。在本例中,对被测程序的功能有明确的要求,即:(1) 判断能否组成三角形;(2) 识别等边三角形;(3) 识别等腰三角形;(4) 识别任意三角形。因此
4、可首先用黑盒法设计测试用例,然后用白盒法验证其完整性,必要时再进行补充。第二步:根据本例的实际情况,在黑盒法中首先可用等价分类法划分输入的等价类, 然后用边界值分析法和猜错法作补充。等价分类法:3有效等价类:输入 3 个正整数: (1)3 数相等(2)3 数中有 2 个数相等,比如AB 相等(3)3 数中有 2 个数相等,比如BC 相等(4)3 数中有 2 个数相等,比如AC 相等(5)3 数均不相等(6)2 数之和不大于第 3 数,比如最大数是A (7)2 数之和不大于第 3 数,比如最大数是B (8)2 数之和不大于第 3 数,比如最大数是C无效等价类:(9)含有零数据(10)含有负整数(
5、11)少于 3 个整数(12)含有非整数(13)含有非数字符边界值法:(14) 2 数之和等于第 3 数猜错法:(15) 输入 3 个零(16)输入 3 个负数第三步:提出一组初步的测试用例,如下表所示:请分别用弱健壮和强一般分别设计测试用例!实验二步骤:(1) 列出原因和结果原因:1. 售货机有零钱找2. 投入 1 元硬币3. 投入 5 角硬币4. 押下橙汁按钮5. 押下啤酒按钮结果:21. 售货机零钱找完灯亮22. 退还 1 元硬币23. 退还 5 角硬币24. 送出橙汁饮料25. 送出啤酒饮料(2) 画出因果图,如图2 示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处
6、理的中间状态。中间结点:11. 投入 1 元硬币且押下饮料按钮12. 押下橙汁或啤酒的按钮13. 应当找 5 角零钱并且售货机有零钱找14. 钱已付清图 2(3) 转换成判定表4(4) 在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16 列与第 32 列因什么动作也没做,也删去。最后可根据剩下的16 列作为确定测试用例的依据。5、实验思考(1) 如何确定等价类?(2) 如何使用判定表设计测试?附录:NextData 问题黑盒测试用例设计一、问题描述程序有三个输入变量 month、day、year(month、day 和 year 均为整数值,并且满足:1month12、1d
7、ay31、1900 year 2050。),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。例如,输入为 2005 年 11 月 29 日,则该程序的输出为 2005 年11 月 30 日。请用黑盒测试方法设计测试用例。三、设计测试用例1. 用边界值测试方法设计测试用例用健壮性测试法设计测试用例,按照下列步骤进行:(1) 分析各变量的取值健壮性测试时,各变量分别取:略小于最小值、最小值、略高于最小值、正常值、略低于最大值、最大值和略大于最大值。month:-1,1,2,11,12,13; day:-1,1,2,30,31,32year:1899,1900,19
8、01,1975,2049,2050,2051;(2) 测试用例数有 n 个变量的程序,其边界值分析会产生 6n+1 个测试用例。这里有 3 个变量,因此会产生 19 个测试用例。(3) 设计测试用例,见表 1-1。NextDate 函数的复杂性来源于两个方面:一是输入域的复杂性(即输入变量之间逻辑关系的复杂性),二是确定闰年的规则。但是在进行健壮性测试时,没有考虑输入变量之间的逻辑关系,也没有考虑和闰年相关的问题,因此在设计测试用例时存在遗漏问题,比如和判断闰年相关的日期:2008.2.29、1999.2.28 等。9用例编号输入数据预期输出表 1-1NextDate 函数测试用例mouthd
9、ayyear16151899year 超出1900,2050261519001900.6.16361519011901.6.16461519751975.6.16561520492049.6.16661520502050.6.1676152051year 超出1900,205086-11975day 超出13196119751975.6.2106219751975.6.31163019751975.7.1126311975输入日期超界136321975day 超出13114-1151975Mouth 超出1121511519751975.1.161621519751975.2.16171115
10、19751975.11.1618121519751975.12.161913151975Mouth 超出1122. 用基于判定表的方法设计测试用例(1)分析各种输入情况,列出为输入变量 month、day、year 划分的有效等价类。month 变量的有效等价类:M1 = month = 4,6,9,11 M2 = month = 1,3,5,7,8,10 M3 = month = 12 M4 = month = 2 day 变量的有效等价类:D1=日期:1日期 27D2=日期:日期=28 D3=日期:日期=29 D4=日期:日期=30条件动D5=日期:日期=31 year 变量的有效等价类:
11、Y1 = year 是闰年 Y2 = year 不是闰年(2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采 取的操作(即列出所有的动作桩)。考虑各种有效的输入情况,程序中可能采取的操作有以下六种:a1:不可能a2:日期增 1 a3:日期复位a4:月份增 1 a5:月份复位a6:年增 1(3)根据步骤(1)和(2),画出判定表。对判定表进行化简。简化后的判定表,如表 1-2 所示。条件动作彪 1-2 NextDate 问题的判定表12345678910c1:月份在M1M1M1M1M1M2M2M2M2M2c2:日期在D1D2D3D4D5D1D2D3D4D5c3:年在a1:不可能X
12、a2:日期增 1XXXXXXXa3:日期复位XXa4:月份增 1XXa5:月份复位a6:年增 1表 1-2 续)111213141516171819202122c1:月份在M3M3M3M3M3M4M4M4M4M4M4M4c2:日期在D1D2D3D4D5D1D2D2D3D3D4D5c3:年在a1:不可能Y1Y2Y1Y2XXX条件动作a2:日期增 1a3:日期复位XXXXXXXXXa4:月份增 1a5:月份复位XXXa6:年增 1X作(4) 对判定表进行化简。简化后的判定表,如表 1-3 所示。c1:月份在条c2:日期在件c3:年在a1:不可能Xa2:日期增 1XX动作a3:日期复位XXa4:月份
13、增 1XXa5:月份复位a6:年增 1表 1-3 NextDate 函数判定表的精简表13456910M1M1M1M2M2D1,D2,D3D4D5D1,D2,D3,D4D5表 1-3(续)111415161718192021,22c1:月份在M3M3M4M4M4M4M4M4c2:日期在D1,D2,D3,D4D5D1D2D2D3D3D4,D5c3:年在Y1Y2Y1Y2a1:不可能XXa2:日期增 1XXXa3:日期复位XXXa4:月份增 1XXa5:月份复位Xa6:年增 1X(5) 设计测试用例为判定表中的每一列设计一个测试用例,见表 1-4。输入数据表 1-4 NextDate 测试用例用例编
14、号月份日期年预期输出14152001132001 年 4 月 16 日2430200142001 年 5 月 1 日343120015不可能41152001692001 年 1 月 16 日51312001102001 年 2 月 1 日61215200111142001 年 12 月 16 日712312001152002 年 1 月 1 日82152001162001 年 2 月 16 日92282004172004 年 2 月 29 日102282001182001 年 3 月 1 日112292004192004 年 3 月 1 日12229200120不可能13230200121,22不可能