某程序规定:"输入三个整数 a、 b、 c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。之前面试了几个地方都问了这个题,网上找了下答案。不懂测试理论,也不知道啥叫等级类,也不知道哪个答案更准确。。。。不知道为什么所有答案给出的用例里没有测试边界值,极大的值,负数,小数等等 答案1:http://hi.baidu.com/godmap/blog/item/12ed690f14cc9c2b6059f3bc.html 三角形等价类列表判定类型 有效等价类 无效等价类
一般三角形 ((a>0) Λ(b>0) Λ(c>0)) Λ (a<=0 V b<=0 V c<=0) Λ
(((a+b)>c) V ((a+c)>b) V ((b+c)>a)) (1) (((a+b)<=c) V ((a+c)<=b) V ((b+c)<=a)) (2)
等腰三角形 (1) Λ (a=b V a=c V b=c) (3) (2) V (a!=b V b!=c V a!=c) (4)
等边三角形 (1) Λ (a=b=c ) (5) (2) V (a!=b!=c) (6)
根据上表组成的测试用例:三角形等价类测试用例ID 输入数据 覆盖测试用例 输出结果a b c
1 3 4 5 (1) 一般三角形
2 0 4 5 (2) 非(一般)三角形
3 3 0 5 (2)
4 3 4 0 (2)
5 1 4 5 (2)
6 3 8 5 (2)
7 3 2 1 (2)
8 3 3 5 (3) 等腰三角形
9 3 4 3
10 3 4 4
11 3 4 9 (4) 非等腰三角形
12 3 3 3 (5) 等边三角形
13 -1 0 1 (6) 非等边三角形答案2: http://www.51testing.com/?uid-275201-action-viewspace-itemid-218955分析题目中给出和隐含的对输入条件的要求:
(1)整数
(2)三个数
(3)非零数
(4)正数
(5)两边之和大于第三边
(6)等腰
(7)等边
如果 a、 b 、 c满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号
覆盖有效等价类的测试用例:
a b c 覆盖等价类号码
3 4 5 (1)--(7)
4 4 5 (1)--(7),(8)
4 5 5 (1)--(7),(9)
5 4 5 (1)--(7),(10)
4 4 4 (1)--(7),(11)
覆盖无效等价类的测试用例: 答案3:http://www.docin.com/p-52238990.html 答案4:http://softtest.chinaitlab.com/bug/794757.html 三角形设计测试用例的问题在面试的时候经常遇到。 假设输入三个整数a、b、c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时!要求画出程序的流程图和时序图,并且用自己熟悉的一种语言实现这个功能!我在网上搜索了一下发现已经有好多文章,不过发现很少有写出程序的,其实用java语言也可以实现,流程图和程序图参考的网上的。 第一步:确定测试策略。在本例中,对被测程序的功能有明确的要求,即: (1)判断能否组成三角形; (2)识别等边三角形; (3)识别等腰三角形; (4)识别任意三角形。因此可首先用黑盒法设计测试用例,然后用白盒法验证其完整性,必要时再进行补充。 第二步:根据本例的实际情况,在黑盒法中首先可用等价分类法划分输入的等价类,然后用边界值分析法和猜错法作补充。 等价分类法: 有效等价类 输入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)含有负整数 (11)少于3个整数 (12)含有非整数 (13)含有非数字符 边界值法: (14)2数之和等于第3数 猜错法: (15)输入3个零 (16)输入3个负数 第三步:提出一组初步的测试用例,如下表所示: 第四步:用白盒法验证第三步产生的测试用例的充分性。结果表明,上表中的前8个测试用例,已能满足对被测程序图的完全覆盖,不需要再补充其他的测试用例。
一般三角形 ((a>0) Λ(b>0) Λ(c>0)) Λ (a<=0 V b<=0 V c<=0) Λ
(((a+b)>c) V ((a+c)>b) V ((b+c)>a)) (1) (((a+b)<=c) V ((a+c)<=b) V ((b+c)<=a)) (2)
等腰三角形 (1) Λ (a=b V a=c V b=c) (3) (2) V (a!=b V b!=c V a!=c) (4)
等边三角形 (1) Λ (a=b=c ) (5) (2) V (a!=b!=c) (6)
根据上表组成的测试用例:三角形等价类测试用例ID 输入数据 覆盖测试用例 输出结果a b c
1 3 4 5 (1) 一般三角形
2 0 4 5 (2) 非(一般)三角形
3 3 0 5 (2)
4 3 4 0 (2)
5 1 4 5 (2)
6 3 8 5 (2)
7 3 2 1 (2)
8 3 3 5 (3) 等腰三角形
9 3 4 3
10 3 4 4
11 3 4 9 (4) 非等腰三角形
12 3 3 3 (5) 等边三角形
13 -1 0 1 (6) 非等边三角形答案2: http://www.51testing.com/?uid-275201-action-viewspace-itemid-218955分析题目中给出和隐含的对输入条件的要求:
(1)整数
(2)三个数
(3)非零数
(4)正数
(5)两边之和大于第三边
(6)等腰
(7)等边
如果 a、 b 、 c满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号
覆盖有效等价类的测试用例:
a b c 覆盖等价类号码
3 4 5 (1)--(7)
4 4 5 (1)--(7),(8)
4 5 5 (1)--(7),(9)
5 4 5 (1)--(7),(10)
4 4 4 (1)--(7),(11)
覆盖无效等价类的测试用例: 答案3:http://www.docin.com/p-52238990.html 答案4:http://softtest.chinaitlab.com/bug/794757.html 三角形设计测试用例的问题在面试的时候经常遇到。 假设输入三个整数a、b、c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时!要求画出程序的流程图和时序图,并且用自己熟悉的一种语言实现这个功能!我在网上搜索了一下发现已经有好多文章,不过发现很少有写出程序的,其实用java语言也可以实现,流程图和程序图参考的网上的。 第一步:确定测试策略。在本例中,对被测程序的功能有明确的要求,即: (1)判断能否组成三角形; (2)识别等边三角形; (3)识别等腰三角形; (4)识别任意三角形。因此可首先用黑盒法设计测试用例,然后用白盒法验证其完整性,必要时再进行补充。 第二步:根据本例的实际情况,在黑盒法中首先可用等价分类法划分输入的等价类,然后用边界值分析法和猜错法作补充。 等价分类法: 有效等价类 输入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)含有负整数 (11)少于3个整数 (12)含有非整数 (13)含有非数字符 边界值法: (14)2数之和等于第3数 猜错法: (15)输入3个零 (16)输入3个负数 第三步:提出一组初步的测试用例,如下表所示: 第四步:用白盒法验证第三步产生的测试用例的充分性。结果表明,上表中的前8个测试用例,已能满足对被测程序图的完全覆盖,不需要再补充其他的测试用例。