三角形、nextday、佣金问题黑盒测试
1.设计三角形的路径覆盖测试用例,如语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖等
伪代码程序如下:
① Input(a,b,c)
② if(a>200||a<1||b>200||b<1||c>200||c<1) then
③ X="请输入一个1~200的数值”
④ End if
⑤ If((a+b>c)&&(a+c)>b&&(b+c)>a) then
⑥ If(ab&&bc) then
⑦ X=“等边三角形”
⑧ END if
⑨ if(ab||bc||a==c)
⑩ X=“等腰三角形”
⑪ else
⑫ X=“一般三角形”
⑬ End if
⑭ else
⑮ X=“这不是一个三角形”
⑯ ENd if
⑰ Output(X)
1)语句覆盖测试:使程序每一条语句都被执行一次。
测试用例如下:
序号 输入 预期输出 实际输出 测试结果 覆盖路径
A B C
1 5 6 7 一般三角形 一般三角形 Passed 1-2-4-5-
6-9-11-12-13-16-17
2 6 6 7 等腰三角形 等腰三角形 Passed 1-2-4-5-
9-10-13-17
3 6 6 6 等边三角形 等边三角形 Passed 1-2-4-5-
6-7-8-17
4 3 3 6 不是三角形 不是三角形 Passed 1-2-4-5-
14-15-16-17
5 200 -20 -1 请输入一个1~200的数值 请输入一个1~200的数值 Passed 1-2-3-17
2)判定覆盖测试:使程序中每一个判定至少获得一次”真”值和”假”值。
测试用例如下:
序号 输入 a>200||a<1||b>200||b<1||c>200||c<1 (a+b>c)&&(a+c)>b&&(b+c)>a ab&&bc ab||bc||a==c 测试结果
A B C
1 3 4 5 真 真 假 假 Passed
2 3 3 4 真 真 假 真 Passed
3 5 5 5 真 真 真 - Passed
4 2 2 6 真 假 - - Passed
5 200 201 -1 假 - - - Passed
4)判定条件覆盖:使得判断中每个条件所有的可能取值至少执行一次,同时每个判断本身所有的结果也要至少执行一次)。
测试用例:
序号 输入 覆盖条件 a>200||a<1||b>200||b<1||c>200||c<1 (a+b>c)&&(a+c)>b&&(b+c)>a ab&&bc ab||bc||a==c 测试结果
A B C
1 5 6 7 T1、T2、T3、T4、T5、T6、-T7、-T8、-T9、-T10 真 真 假 假 Passed
2 6 6 7 T1、T2、T3、T4、T5、T6、-T7、T8、-T9、-T10 真 真 假 真 Passed
3 6 6 6 T1、T2、T3、T4、T5、T6、T7 真 真 真 - Passed
4 3 3 6 T1、T2、T3、-T4、T5、T6 真 假 - - Passed
5 220 -2 -1 -T1、-T2、-T3 假 - - - Passed
6 7 6 6 T1、T2、T3、T4、T5、T6、-T7、-T8、T9、-T10 真 真 假 真 Passed
7 6 7 6 T1、T2、T3、T4、T5、T6、-T7、-T8、-T9、T10 真 真 假 真 Passed
8 6 3 3 T1、T2、T3、T4、T5、-T6 真 假 - - Passed
9 3 6 3 T1、T2、T3、T4、-T5、T6 真 假 - - Passed
5)路径覆盖:设计的测试用例可以覆盖程序中所有可能的执行路径
路径组合有
P1:1-2-3-17
P2:1-2-4-5-6-7-8-17
P3:1-2-4-5-9-10-13-17
P4:1-2-4-5-14-15-16-17
P5:1-2-4-5-6-9-11-12-13-16-17
序号 输入 预期输出 实际输出 测试结果 覆盖路径
A B C
1 200 -20 -1 请输入一个1~200的数值 请输入一个1~200的数值 Passed 1-2-3-17
2 3 3 3 等边三角形 等边三角形 Passed 1-2-4-5-6-7-8-17
3 6 6 9 等腰三角形 等腰三角形 Passed 1-2-4-5-9-10-13-17
4 3 2 6 不是三角形 不是三角形 Passed 1-2-4-5-14-15-16-17
5 4 3 2 一般三角形 一般三角形 Passed 1-2-4-5-6-9-11-12-13-16-17
2.对NextDate问题尝试采用基路径方法设计
① Input(y,m,d);
② if (y > 1811&&y<2113&& m > 0 && m < 13 && d > -1 && d < 32 || y == 0 || m == 0 || d == 0) {
③ if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10) {
④ if (d < 31) {
⑤ d = d + 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);
⑥ } else if (d == 31) {
⑦ m = m + 1;d = 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);}
⑧ } else if (m == 4 || m == 6 || m == 9 || m == 11) {
⑨ if (d < 30) {
⑩ d = d + 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);
⑪ } else if (d == 30) {
⑫ m = m + 1;d = 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);}
⑬ } else if (m == 12) {
⑭ if (d < 31) {
⑮ d = d + 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);
⑯ Else
⑰ y = y + 1;m = 1;d = 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);
⑱ } else if (m == 2) {
⑲ if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
⑳ if (d < 29) {
21 d = d + 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);
22 } else if (d == 29) {
23 m = m + 1;d = 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);}
24 } else if (d < 28) {
25 d = d + 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);
26 } else if (d == 28) {
27 m = m + 1;d = 1;Msg=String.format("%d" + “年” + “%d” + “月” + “%d” + “日”, y, m, d);
28 }else {
29 Msg=String.format(“输入日期错误,”+"%d"+“年2月只有28天,”, y);}}}
30 else {
31 Msg=“请输入正确的日期”;
32 Output(Msg)}}}
其程序流程图如下:在这里插入图片描述
节点图:
基本路径组合有:
P1:1-2-30-31-32
P2:1-2-8-9-10-32
P3:1-2-8-11-12-32
P4:1-2-13-14-15-32
P5:1-2-13-16-17-32
P6:1-2-3-4-5-32
P7:1-2-3-4-6-7-32
P8:1-2-18-24-25-32
P9:1-2-18-28-29-32
P10:1-2-18-26-27-32
P11:1-2-18-19-22-23-32
P12:1-2-18-19-20-21-32
分别通过1~~12测试用例来对P1~P12进行路径覆盖测试:
序号 输入 预期输出 实际输出 测试结果 覆盖路径 备注
年 月 日
1 800 1 1 请输入正确的日期 请输入正确的日期 Passed 1-2-30-31-32
2 2000 6 6 2000年6月7号 2000年6月7号 Passed 1-2-8-9-10-32
3 2000 6 30 2000年7月1号 2000年7月1号 Passed 1-2-8-11-12-32
4 2000 12 12 2000年12月13号 2001年1月1日 Failed 1-2-13-14-15-32
5 2000 12 31 2001年1月1号 2001年1月1号 Passed 1-2-13-16-17-32
6 2000 8 8 2000年8月9号 2000年8月9号 Passed 1-2-3-4-5-32
7 2000 8 31 2000年9月1号 2000年9月1号 Passed 1-2-3-4-6-7-32
8 2010 2 16 2010年2月17号 2010年2月17号 Passed 1-2-18-24-25-32
9 2009 2 29 输入日期错误,2009年2月只有28天 输入日期错误,2009年2月只有28天 Passed 1-2-18-28-29-32
10 2011 2 28 2011年3月1号 2011年3月1号 Passed 1-2-18-26-27-32
11 2008 2 29 2008年3月1号 2008年3月1号 Passed 1-2-18-19-22-23-32
12 2008 2 22 2008年2月23号 2008年2月23号 Passed 1-2-18-19-20-21-32
3.对佣金问题采用数据流测试方法设计测试用例
① Input(value1,value2,value3);
② if (value1 == -1 || value2 == -1 || value3 == -1) {{
③ if (sum > 1800) {
④ sum1 = (0.1 * 1000 + 0.15 * 800 + 0.2 * (sum - 1800));
⑤ } else if (sum > 1000) {
⑥ sum1 = (0.1 * 1000 + 0.15 * (sum - 1000));
⑦ } else {
⑧ sum1 = (0.1 * sum);}
⑨ } else {
⑩ sum = value1 * 45 + value2 * 30 + value3 * 25 + sum;
⑪ End if
⑫ Output(sum1)
其程序流程图如下:在这里插入图片描述
节点图:
定义结点和使用结点:
变量 定义结点 使用结点
value1 1 2、10
value2 1 2、10
value3 1 2、10
sum 10 3、4、5、6、8、10
sum1 4、6、8 4、6、8、12
谓词使用和计算使用:
谓词使用 2、3、5
计算使用 4、6、8、10
定义—引用路径:
变量 定义—引用路径
value1 1,2
1,10
value2 1,2
1,10
value3 1,2
1,10
sum 10,3
10,4
10,5
10,6
10,8
10,10
sum1 4,4
4,6
4,8
4,12
6,4
6,6
6,8
6,12
8,4
8,6
8,8
8,12
经测试无错误