黑盒测试——等价类划分
等价类划分原则
- 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类。
- 输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。
- 在输入条件是一个布尔值的情况下,可确定一个有效等价类和一个无效等价类。
- 在输入条件是一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
- 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步划分为更小的等价类。
等价类划分法设计测试用例步骤
- 分析并确定等价类。
- 建立等价类表,列出所有划分的等价类。
- 根据列出的等价类表,按照以下三个步骤设计测试用例:
- 为每一个等价类规定一个唯一的编号;
- 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等效类。重复这一步骤,直到所有的有效等价类都被覆盖为止;
- 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类。重复这一步骤,直到所有的无效等价类都被覆盖为止。
等价类划分具体测试步骤
以下列“在线计算器”为例
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200527164325583.png)
需求如下:
- 下拉框选择计算类型(+、-、*、/)
- 所有计算类型下,两个输入框中均只能输入数字类型
- 不能输入为空
- 在选择计算类型为“/”时,除以上限制,除数(即第二个输入框)输入不能为0
第一步:根据需求,划分等价类
该“在线计算器”包含2个变量ddl_Operator、txt_number1和txt_number2。根据等价类划分原则第五条的内容“在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。”,可以确立一个有效等价类和若干个无效等价类。
- 有效等价类:任意数字类型
- 无效等价类:①字母;②汉字;③特殊字符;④空;⑤除法计算下txt_nember2为0
第二步:建立等价类表,列出所有划分的等价类。
输入条件 | 有效等价类 | 无效等价类 |
ddl_Operator=+、-、* | 1.两个数值均为数字类型 | 2.txt_number1为字母,txt_nember2为数字 3.txt_number1为字母,txt_nember2为汉字 4.txt_number1为字母,txt_nember2为特殊字符 5.txt_number1为字母,txt_nember2为空 6.txt_number1为汉字,txt_nember2为数字 7.txt_number1为汉字,txt_nember2为特殊字符 8.txt_number1为汉字,txt_nember2为空 9.txt_number1为特殊字符,txt_nember2为数字 10.txt_number1为特殊字符,txt_nember2为空 11.txt_number1为空,txt_nember2为数字
|
ddl_Operator=/ | 12. txt_number1为数字类型,txt_nember2为除0外的数字类型 | 13. txt_number1为数字,txt_nember2为0 14. txt_number1为字母,txt_nember2为0 15. txt_number1为特殊字符,txt_nember2为0 16. txt_number1为空,txt_nember2为0 |
第三步:根据列出的等价类表,设计测试用例
用例编号 | 测试描述 | 测试步骤 | 预期结果 | 测试结果 |
Test1 | 两个数值均为数字类型 | 1、下拉框选择“+”;2、在第一个输入框中输入:12,第二个输入框中输入:24; 3、点击计算按钮 | 点击确定按钮之后,在界面上出现计算结果:48 |
|
Test2 | txt_number1为字母,txt_nember2为数字 | 1、下拉框选择“+”;2、在第一个输入框中输入:A,第二个输入框中输入:24; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,只能输入数字” |
|
Test3 | txt_number1为字母,txt_nember2为汉字 | 1、下拉框选择“+”;2、在第一个输入框中输入:B,第二个输入框中输入:张; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,只能输入数字” |
|
Test4 | txt_number1为字母,txt_nember2为特殊字符
| 1、下拉框选择“+”;2、在第一个输入框中输入:C,第二个输入框中输入:~; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,只能输入数字” |
|
Test5 | txt_number1为字母,txt_nember2为空 | 1、下拉框选择“+”;2、在第一个输入框中输入:d,第二个输入框中输入: ; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,输入不能为空” |
|
Test6 | .txt_number1为汉字,txt_nember2为数字 | 1、下拉框选择“+”;2、在第一个输入框中输入:瑛,第二个输入框中输入:24; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,只能输入数字” |
|
Test7 | txt_number1为汉字,txt_nember2为特殊字符 | 1、下拉框选择“+”;2、在第一个输入框中输入:张,第二个输入框中输入:@; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,只能输入数字” |
|
Test8 | txt_number1为汉字,txt_nember2为空 | 1、下拉框选择“+”;2、在第一个输入框中输入:瑛,第二个输入框中输入: ; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,输入不能为空” |
|
Test9 | txt_number1为特殊字符,txt_nember2为数字 | 1、下拉框选择“+”;2、在第一个输入框中输入:#,第二个输入框中输入:24; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,只能输入数字” |
|
Test10 | txt_number1为特殊字符,txt_nember2为空 | 1、下拉框选择“+”;2、在第一个输入框中输入:$,第二个输入框中输入: ; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,输入不能为空” |
|
Test11 | txt_number1为空,txt_nember2为数字 | 1、下拉框选择“+”;2、在第一个输入框中输入: ,第二个输入框中输入:24; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,输入不能为空” |
|
Test12 | txt_number1为数字类型,txt_nember2为除0外的数字类型 | 1、下拉框选择“/”;2、在第一个输入框中输入:12,第二个输入框中输入:24; 3、点击计算按钮 | 点击确定按钮之后,在界面上出现计算结果:0.5 |
|
Test13 | txt_number1为数字,txt_nember2为0 | 1、下拉框选择“/”;2、在第一个输入框中输入:12,第二个输入框中输入:0; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,除数不能为0” |
|
Test14 | txt_number1为字母,txt_nember2为0 | 1、下拉框选择“/”;2、在第一个输入框中输入:A,第二个输入框中输入:0; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,只能输入数字” |
|
Test15 | txt_number1为特殊字符,txt_nember2为0 | 1、下拉框选择“/”;2、在第一个输入框中输入:%,第二个输入框中输入:0; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,只能输入数字” |
|
Test16 | txt_number1为空,txt_nember2为0 | 1、下拉框选择“+”;2、在第一个输入框中输入: ,第二个输入框中输入:24; 3、点击计算按钮 | 点击确定按钮之后,在界面上弹出错误提示框,提示:“输入有误,输入不能为空” |
|
(注:代码判断输入是先判断是否为空>是否是数字类型>除数是否为0)
疑惑与问题
- 除法计算与其它计算存在除数不能为0的情况,我很纠结要不要把上述2~11种无效等价类放在一起测试
- 需不需要把四种计算方式单独分开划分等价类
- 例如:txt_number1为数字和txt_number2为字母
txt_number1为字母和txt_number2为数字
应当成一种无效等价类还是两种