1 等价类划分法举例
1.1 判断三角形的类型
等价类划分步骤:
划分等价类并编号形成等价类表——>选择覆盖等价类的测试用例形成测试用例表
某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型(非三角形、一般三角形、等腰三角形及等边三角形)。用等价类划分方法为该程序进行测试用例设计。
三角形问题的复杂之处在于输入与输出之间的关系比较复杂。分析题目中给出和隐含的对输入条件的要求:
(1) 整数
(2) 三个数
(3) 非零数
(4) 正数
(5) 任意两边之和大于第三边
(6) 等腰
(7) 等边
如果a 、 b 、c 满足条件(1)~ (4),则输出下列四种情况之一:
1. 如果不满足条件(5),则程序输出为 " 非三角形 " 。
2. 如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3. 如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4. 如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号,形成等价类表
输入条件 |
有效等价类 |
编码 |
无效等价类 |
编码 |
整数 |
均为整数 |
(1) |
a为非整数 |
(10) |
b为非整数 |
(11) |
|||
c为非整数 |
(12) |
|||
a、b为非整数 |
(13) |
|||
b、c为非整数 |
(14) |
|||
a、c为非整数 |
(15) |
|||
a、b、c均为非整数 |
(16) |
|||
三个数值 |
输入a、b、c三个数值 |
(2) |
只输入a |
(17) |
只输入b |
(18) |
|||
只输入c |
(19) |
|||
只输入a、b |
(20) |
|||
只输入b、c |
(21) |
|||
只输入a、c |
(22) |
|||
输入三个以上的数 |
(23) |
|||
非零数 |
都不为零 |
(3) |
a为0 |
(24) |
b为0 |
(25) |
|||
c为0 |
(26) |
|||
a、b为0 |
(27) |
|||
b、c为0 |
(28) |
|||
a、c为0 |
(29) |
|||
a、b、c均为0 |
(30) |
|||
正数 |
都是正数 |
(4) |
a小于0 |
(31) |
b小于0 |
(32) |
|||
c小于0 |
(33) |
|||
a、b小于0 |
(34) |
|||
b、c小于0 |
(35) |
|||
a、c小于0 |
(36) |
|||
a、b、c均小于0 |
(37) |
|||
两边之和大于第三边 |
a+b大于c b+c大于a c+a大于b |
(5) |
a+b小于c |
(38) |
a+b等于c |
(39) |
|||
b+c小于a |
(40) |
|||
b+c等于a |
(41) |
|||
c+a小于b |
(42) |
|||
c+a等于b |
(43) |
|||
其中两边相等 |
a=b |
(6) |
|
|
b=c |
(7) |
|
|
|
c=a |
(8) |
|
|
|
三边都相等 |
a=b=c |
(9) |
|
|
覆盖有效等价类的测试用例:
编号 |
测试用例 |
覆盖的等价类 |
预期结果 |
a b c |
|||
1 |
3 4 5 |
(1)--(5) |
|
2 |
4 4 5 |
(1)--(5),(6) |
|
3 |
4 5 5 |
(1)--(5),(7) |
|
4 |
5 4 5 |
(1)--(5),(8) |
|
5 |
4 4 4 |
(1)--(5),(9) |
|
覆盖无效等价类的测试用例:
编号 |
测试用例 |
覆盖的等价类 |
预期结果 |
a b c |
|||
6 |
|
(10) |
|
7 |
|
(11) |
|
8 |
|
(12) |
|
类似的题目,增加三角形的类型判断,增加直角三角形,锐角三角形,钝角三角形,等腰直角三角形。
1.2 年龄日期检查功能
某企业招工,要求报名者出生日期在1970年1月~1990年12月,公司人事管理系统规定日期由8位数字字符组成,前4位表示年,接下来2位表示月,最后2位表示日。现用等价类划分法设计测试用例,来测试该程序的“年龄检查功能”。
输入条件 |
有效等价类 |
无效等价类 |
日期的类型及长度 |
(1)8位数字字符 |
(6)有非数字字符 (7)少于8位数字字符 (8)多于8位数字字符 |
年份范围 |
(2)在1970~1990之间 |
(9)小于1970 (10)大于1990 |
月份范围 |
(3)在01~12之间 |
(11)小于01 (12)大于12 |
日范围 |
(4)在01-31之间 |
(13)小于01 (14)大于31 |
年月日组合合法 |
(5)组合合法 |
(15)组合非法 |
2. 设计测试用例,
a) 设计测试用力,尽可能覆盖所有的有效等价类
编号 |
测试用例 |
覆盖的等价类 |
期望结果 |
1 |
19801211 |
(1)(2)(3)(4)(5) |
输入有效 |
b) 为每一个无效等价类设计一个测试用例,设计结果如下:
编号 |
测试用例 |
覆盖的等价类 |
期望结果 |
1 |
|
(6) |
输入有效 |
2 |
|
(7) |
无效输入 |
3 |
|
(8) |
无效输入 |
4 |
|
(9) |
无效输入 |
5 |
|
(10) |
无效输入 |
6 |
|
(11) |
无效输入 |
7 |
|
(12) |
无效输入 |
8 |
|
(13) |
无效输入 |
9 |
|
(14) |
|
10 |
|
(15) |
|
2 边界值分析法
NexDate函数包含三个变量:month 、 day 和 year ,函数输出输入日期后一天的日期。
NextDate函数的边界值分析测试用例。
NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,
时间的取值范围为[1970.1.1~2038.1.18] 或者[1900.1.1~2099.12.31],以后者为例
测试用例 |
mouth |
day |
year |
预期输出 |
Test1 Test2 Test3 Test4 Test5 Test6 Test7 |
6 6 6 6 6 6 6 |
15 15 15 15 15 15 15 |
1899 1900 1901 2010 2098 2099 2100 |
Year超出[1900…2099] 1900.6.16 1901.6.16 2010.6.16 2098.6.16 2099.6.16 Year超出[1900…2099] |
Test8 Test9 Test10 Test11 Test12 Test13 |
7 7 7 7 7 7 |
0 1 2 30 31 32 |
2001 2001 2001 2001 2001 2001 |
day超出[1…31] 2001.7.2 2001.7.3 2001.7.33 2001.8.1 day超出[1…31] |
Test14 Test15 Test16 Test17 Test18 Test19 |
0 1 2 11 12 13 |
15 15 15 15 15 15 |
2001 2001 2001 2001 2001 2001 |
Mouth超出[1…12] 2001.1.16 2001.2.16 2001.11.16 2001.12.16 Mouth超出[1…12] |
Test20 |
12 |
31 |
1989 |
1900.1.1或者 Year超出[1900…2099] 或者时间超出范围 |
Test21 |
1 |
1 |
1900 |
1900.1.2 |
Test22 |
12 |
30 |
2099 |
2099.12.31 |
Test23 |
12 |
31 |
2099 |
2100.1.1 或者时间超出范围 |
Test24 |
1 |
1 |
2100 |
时间超出范围或者 Year超出[1900…2099] |
Test25 |
11 |
31 |
2010 |
合理但是不合法的时间,提示输入错误,或者不存在 |
…… |
|
|
|
|
3 因果图分析法举例
3.1 题目一
某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。
解答:
1. 根据需求,分析出原因和结果如下:
原因:
1——第一列字符是A;
2——第一列字符是B;
3——第二列字符是一数字。
结果:
21——修改文件;
22 ——给出信息L;
23——给出信息M。
中间状态
11——第一列字符已输入
约束条件
1、2互斥
2. 其对应的因果图如下:
3. 根据因果图建立判定表。
4 场景法设计测试用例
4.1 ATM机操作
分析基本流和备选流
基本流 |
ATM 处于准备就绪状态。 步骤1:准备提款 - 客户将银行卡插入 ATM 机。 |
步骤2:验证银行卡 - ATM 机从银行卡的磁条中读取帐户信息,并检查它是否属于可以接收的银行卡。 |
|
步骤3:输入密码 |
|
步骤4:ATM 选项 - ATM 显示在本机上可用的各种选项。在此事件流中,客户选择“取款”。 |
|
步骤5:输入金额 – 输入要从 ATM 中提取的金额。对于此事件流,客户可以选择预设的金额(100、200、500、800)也可以输入金额。 |
|
步骤6:授权-ATM 通过将卡ID、金额以及帐户信息作为一笔交易发送给银行系统来启动验证过程。对于此事件流,银行系统处于联机状态,而且对授权请求给予答复,批准完成取款过程,并且更新帐户信息。 |
|
步骤7:出钞 - 提供现金。 |
|
步骤8:打印凭条 |
|
步骤9:退卡。ATM 还相应地更新内部记录。 用例结束时 ATM 又回到准备就绪状态。 |
备选流 1 – ATM机故障 |
ATM机故障,需要提示暂停服务 |
备选流 2 - 银行卡无效 |
在基本流步骤 2 中 - 验证银行卡,如果卡是无效的,则卡被退回,同时会提示相关消息。 |
备选流 3 - 帐户不存在 |
在基本流步骤 2 中 - 验证帐户,如果银行系统返回的代码表明找不到该帐户或禁止从该帐户中提款,则 ATM 显示适当的消息同时 ATM 返回到准备就绪状态。 |
备选流 4 – 密码错误 |
在基本流步骤 3中,密码错误 |
备选流 4x – 密码错误多次 |
在基本流步骤 3中,密码错误3次,吞卡 |
备选流 5- ATM 内没有现金 |
在基本流步骤 4 中 - ATM 选项,如果 ATM 内没有现金,则“取款”选项将无法使用。 |
备选流 5x - ATM 内现金不足 |
在基本流步骤 5 中- 输入金额,如果 ATM 机内金额少于请求提取的金额,则将显示一则适当的消息,并且在步骤5 - 输入金额处重新加入基本流。 |
备选流 6 – 账户金额不足 |
在基本流步骤5 - 输入金额大于账户金额,则 ATM 显示适当的消息并且在步骤 5 - 输入金额处重新加入基本流。 |
备选流 7 -达到每日最大的提款金额 |
ATM 显示适当的消息并在步骤5 - 输入金额上重新加入基本流。 |
备选流8 |
在基本流步骤6中,例如网络问题,导致记录不能更新,则取款失败,提示相应信息。 |
备选流9- 出钞错误 |
在基本流步骤7中 – 出钞错误 |
备选流10- 打印错误 |
在基本流步骤9中 – 打印错误 |
备选流 11 - 退出 |
退出操作是否在基本流步骤中间任意环节可以激活,激活后是否影响正常操作 |
备选流 12 - “翘起” |
ATM 包含大量的传感器,用以监控各种功能,如电源检测器、不同的门和出入口处的测压器以及动作检测器等。如果某个传感器被激活,则警报信号将发送给警方而且 ATM 进入“安全模式”,在此模式下所有功能都暂停使用,直到采取适当的重启/重新初始化的措施。 |
设计测试场景
场景 1 - 成功的提款 |
基本流 |
场景 2 - ATM 机故障 |
基本流 备选流 1 |
场景 3 – 银行卡无效 |
基本流 备选流 2 |
… |
… |