实验3:白盒测试
姓名 | 院系 | 软件学院 | 学号 | ||||
任课教师 | 实验指导教师 | ||||||
实验地点 | 院实验室21#428 | 实验时间 | 2014.12.19 | ||||
实验目的 | |||||||
●掌握静态白盒测试方法及一般要求 ●掌握白盒测试用例的设计方法 ●掌握白盒测试基本测试方法:逻辑覆盖、路径测试。 | |||||||
实验内容 | |||||||
1. 输入三个数a、b、c分别作为三边的边长构成三角形。通过程序判定所构成的三角形是一般三角形、等腰三角形还是等边三角形。在三角形计算中,要求三角形的三个边长:A B C。(1)、 当三边不可能构成三角形时提示错误,可构成三角形时计算三角形周长。 (2)、若是等腰三角形打印“等腰三角形”, 若两个等腰的平方和等于第三边平方和,则打印“等腰直角三角形”。 (3)、若是等边三角形,则打印:“等边三角形”。 2.请用逻辑覆盖测试方法对下面的java代码进行测试。代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key的元素。 要求: (1)针对上面的描述,用自己熟悉的语言写出程序,并画出程序的控制流图(用语句编号表示) (2)根据项目功能要求,设计白盒测试的语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法的测试用例,并写出每个测试用例的执行路径(用语句编号表示)。 (3)编译运行程序,完成各项测试。 | |||||||
实验结果 |
第一题
测试代码(测试部分已用序号标注):
import java.util.Scanner;
public class Triangle {
public static void main(String[] args) {
int a;
int b;
int c;
Scanner scanner=new Scanner(System.in);
while(true)
{
a=scanner.nextInt();
b=scanner.nextInt();
c=scanner.nextInt();
1. if(a+b>c&&a+c>b&&b+c>a&&a>0&&b>0&&c>0)
2. {
3. if(a==b&&b==c)
4. System.out.println("等边三角形"+" 周长为:"+(3*a));
5. else{
6. if(a==c||a==b||b==c)
7. System.out.println("等腰三角形"+" 周长为:"+(a+b+c));
8. else
9. System.out.println("普通三角形"+" 周长为:"+(a+b+c));
10. }
11. }
12. else{
13. System.out.println("不构成三角形");
14. }
15. }
}
}
程序的控制流图如下:
程序段的控制流图
测试用例表
T1:(a+b>c&&a+c>b&&b+c>a&&a>0&&b>0&&c>0)为真
–T1:(a+b>c&&a+c>b&&b+c>a&&a>0&&b>0&&c>0)为假
T2:(a==b&&b==c)为真
–T2:(a==b&&b==c)为假
T3:(a==c||a==b||b==c)为真
–T3:(a==c||a==b||b==c)为假
T11:(a+b>c)为真
–T11:(a+b>c)为假
T12:(a+c>b)为真
–T12:(a+c>b)为假
T13:(b+c>a)为真
–T13:(b+c>a)为假
T14:(a>0)为真
–T14:(a>0)为假
T15:(b>0)为真
–T15:(b>0)为假
T16:(c>0)为真
–T16:(c>0)为假
T21:(a==b)为真
–T21:(a==b)为假
T22:(b==c)为真
–T22:(b==c)为假
T31:(a==c)为真
–T31:(a==c)为假
T32 = T21
–T32 = –T21
T33 = T22
–T33 = –T22
测试用例 | 执行路径 | 覆盖条件 | 预计输出结果 | 实际输出结果 | |
语句覆盖 | a=1 b=2 c=-2 a=3 b=3 c=3 a=5 b=5 c=3 a=5 b=6 c=7 | 1-13-15 1-3-4-15 1-3-6-7-15 1-3-6-9-15 | –T1 T1 T2 T1 –T2 T3 T1 –T2 –T3 | 不构成三角形 等边三角形 9 等腰三角形 13 普通三角形 14 | 不构成三角形 等边三角形 9 等腰三角形 13 普通三角形 14 |
判定覆盖 | a=1 b=3 c=-1 a=6 b=7 c=8 a=4 b=4 c=4 a=8 b=8 c=5 | 1-13 -15 1-3-6-9-15 1-3-4-15 1-3-6-7-15 | –T1 T1 –T2 –T3 T1 T2 T1 –T2 T3 | 不构成三角形 普通三角形 21 等边三角形 12 等腰三角形 21 | 不构成三角形 普通三角形 21 等边三角形 12 等腰三角形 21 |
条件覆盖 | a=1 b=2 c=-1 a=3 b=3 c=3
a=2 b=3 c=2 a=3 b=4 c=5 | 1-13-15 1-3-4-15 1-3-6-7 1-3-6-9-15 | –T11–T12–T13 –T14–T15–T16 T11 T12 T13 T14 T15 T16 T21 T22 T11 T12 T13 T14 T15 T16 –T21 T31 –T22 T11 T12 T13 T14 T15 T16 –T21–T22–T31 | 不构成三角形 等边三角形9 等腰三角形7 普通三角形12 | 不构成三角形 等边三角形9 等腰三角形7 普通三角形12 |
判断、条件覆盖 | a=-1 b=-3 c=-2 a=2 b=2 c=2 a=3 b=7 c=7 a=5 b=3 c=6 | 1-13-15 1-3-4-15 1-3-6-7-15 1-3-6-9-15 | -T1 -T11–T12–T13 –T14–T15-T16 T1 T2 T11 T12 T13 T14 T15 T16 T21 T22 T1 -T2 T3 T11 T12 T13 T14 T15 T16 -T21 –T22 T31 T1 T2 –T3 T11 T12 T13 T14 T15 T16 -T21 –T22-T31 | 不构成三角形 等边三角形6 等腰三角形17 普通三角形14 | 不构成三角形 等边三角形6 等腰三角形17 普通三角形14 |
组合覆盖 | a=-1 b=-3 c=-2 a=7 b=7 c=7 a=3 b=4 c=4 a=8 b=6 c=7 | 1-13-15 1-3-4-15 1-3-6-7-15 1-3-6-9-15 | -T1 -T11–T12–T13 –T14–T15-T16 T1 T2 T11 T12 T13 T14 T15 T16 T21 T22 T1 -T2 T3 T11 T12 T13 T14 T15 T16 -T21 –T22 T31 T1 T2 –T3 T11 T12 T13 T14 T15 T16 -T21 –T22-T31 | 不构成三角形 等边三角形6 等腰三角形17 普通三角形14 | 不构成三角形 等边三角形6 等腰三角形17 普通三角形14 |
路径覆盖 | a=0 b=-2 c=-1 a=2 b=2 c=2 a=3 b=2 c=3 a=4 b=7 c=6 | 1-13-15 1-3-4-15 1-3-6-7-15 1-3-6-9-15 | –T1 T1 T2 T1 –T2 T3 T1 –T2 –T3 | 不构成三角形 等边三角形 6 等腰三角形 8 普通三角形 17 | 不构成三角形 等边三角形 6 等腰三角形 8 普通三角形 17 |
测试代码:
public int binSearch(int array[], int key) {
1 int mid, low, high;
2 low = 0;
3 high = array.length - 1;
4 while (low <= high) {
5 mid = (low + high) / 2;
6 if (key == array [mid]) {
7 return mid;
8 } else if (key < array[mid]) {
9 high = mid - 1;
10 } else {
11 low = mid + 1;
}
}
12 return -1;
}
程序的控制流图如下:
测试用例表
语言覆盖: 取 array=【1,2,3,4,5,6,7,8,9】 key=5
执行路径:1-2-3-4-5-6-8-10-11-4-5-6-7-12
预期结果:第5个
实际结果:第5个
判定覆盖:1.取array=Φ 执行路径:1-2-3-4-1-2
预期结果:-1
实际结果:-1
2.取array=【1,2,3,4,5,6,7,8,9】 key=2
执行路径:1-2-3-4-5-6-8-9-4-5-6-8-10-11-4-5-6-7-12
预期结果:第2个
实际结果:第2个
条件覆盖:1.取array=Φ 执行路径:1-2-3-4-1-2
预期结果:-1
实际结果:-1
2.取array=【1,2,3,4,5,6,7,8,9】 key=2
执行路径:1-2-3-4-5-6-8-9-4-5-6-8-10-11-4-5-6-7-12
预期结果:第2个
实际结果:第2个
判定/条件判定:1.取array=Φ 执行路径:1-2-3-4-1-2
预期结果:-1
实际结果:-1
2.取array=【1,2,3,4,5,6,7,8,9】 key=2
执行路径:1-2-3-4-5-6-8-9-4-5-6-8-10-11-4-5-6-7-12
预期结果:第2个
实际结果:第2个
组合覆盖:1.取array=Φ 执行路径:1-2-3-4-1-2
预期结果:-1
实际结果:-1
2.取array=【1,2,3,4,5,6,7,8,9】 key=4
执行路径:1-2-3-4-5-6-7-12
预期结果:第4个
实际结果:第4个
3.取array=【1,2,3,4,5,6,7,8,9】 key=1
执行路径:1-2-3-4-5-6-8-9-4-5-6-7-12
预期结果:第1个
实际结果:第1个
4.取array=【1,2,3,4,5,6,7,8,9】 key=5
执行路径:1-2-3-4-5-6-8-10-11-4-5-6-7-12
预期结果:第5个
实际结果:第5个
路径覆盖:1.取array=Φ 执行路径:1-2-3-4-1-2
预期结果:-1
实际结果:-1
2.取array=【1,2,3,4,5,6,7,8,9】 key=4
执行路径:1-2-3-4-5-6-7 12
预期结果:第4个
实际结果:第4个
3.取array=【1,2,3,4,5,6,7,8,9】 key=1
执行路径:1-2-3-4-5-6-8-9-4-5-6-7-12
预期结果:第1个
实际结果:第1个
4.取array=【1,2,3,4,5,6,7,8,9】 key=5
执行路径:1-2-3-4-5-6-8-10-11-4-5-6-7-12
预期结果:第5个
实际结果:第5个 | ||
扣分原因(有扣分时填写) | 扣分 | 0 |
日期: |
其他情况:扣分<=5分 总扣分不能大于10分下载本文