最近在读《软件测试的艺术》这本书,个人感觉挺不错的。其中涉及到有一个问题是这样的:
设计一组测试用例,适当地测试一个相当简单的程序。
这个程序从一个输入框中读取三个整数值,这三个整数值代表了三角形三条边的长度。程序显示提示信息,指出该三角形是何种三角形:不规则三角形、等腰三角形还是等边三角形。
这时就想到了等价类的方法来设计测试用例:
有效等价类:这三条边的长度能构成一个三角形;
无效等价类:这三条边的长度不能构成一个三角形。
其中,有效等价类的测试用例包括:
1. 一个有效的不规则三角形(不规则三角形指的是三条边不相等,并且任意两边之和大于第三边),比如:(4,5,2);
2. 一个有效的等腰三角形,比如:(9,9,8),(9,8,9),(8,9,9);
3. 一个有效的等边三角形,比如:(5,5,5);
无效等价类的测试用例包括:
4. 三条边都为正整数但不能构成三角形:
4.1 任意两边之和等于第三边,如:(1,2,3),(1,3,2),(3,2,1);
4.2 任意两边之和小于第三边,如:(4,3,2),(2,3,4),(4,2,3);
5. 某边的长度为0,如:(0,2,3),(0,0,2),(0,0,0);
6. 某边的长度为负数:如:(-1,2,1),(-4,-4,3),(-4,-4,-4);
7. 某边的长度输入为非整数值:
7.1 输入为小数,如:(3.5, 3.3, 3.7),(3.4, 3.4, 3.4),(3.4, 3.4, 3.5);
7.2 输入为英文字符/中文字符,如:(a, b, c)或者(一,二,三)等;
8. 输入的边长个数不对,输入一个/两个,如:(1),(1,2);
除此之外:
9. 对于每一个测试用例,除了定义输入值之外,还要定义程序针对该输入值的预期输出值