实验1白盒测试
实验一 白盒测试用例设计
班级: B12531 学号: [1**********] 姓名: 刘志峰
一. 实验目的
1.掌握白盒测试用例设计方法;
2.综合运用所学的白盒测试方法设计进行测试用例设计; 3.掌握测试用例的编写方法。
二. 实验内容及要求
1.使用逻辑覆盖法测试以下程序段。
private void DoWork(int x, int y, int z) 1 {
2 int k = 0, j = 0;
3 if ((x > 3) && (z < 10)) 4 {
5 k = x * y - 1;
6 j = (int)Math.Sqrt(k); 7 }
8 if ((x == 4) || (y > 5)) 9 j = x * y + 10; 10 j = j % 3;
11 lbResult.Text = "k=" + k.ToString() +" j=" +j.ToString () ; 12 }
说明:程序段中每行开头的数字是对每条语句的编号。 要求:
(1) 画出程序的控制流图(用题中给出的语句编号表示)。
(2) 分别以语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
(3) 执行测试用例,并记录测试结果。 (4) 根据控制流图计算程序的环路复杂度,导出基本路径集合并根据基本路径集合设计测试
用例。
2.已知C源程序如下:[2009.9四级软件测试题] # include
int day; int month; int year;
}
int leap(struct ydate d) 1. {
2. if((d.year%4==0 && d.year%100!=0)||(d.year % 400==0)) 3. return 1; 4. else
5. return 0; 6. }
int numdays(struct ydate d) 7. {
8. int day;
9. static int daytab[]={31,28,31,30,31,30,31,31,30,31,30,31}; 10. if(leap(d) && d.month==2) 11. day=29; 12. else
13. day=daytab[d.month-1]; 14. return day; 15. }
int main(void) 16. {
17. struct ydate today,tomorrow; 18. printf(“format of date is:year,month,day 输入的年、月、日之间应用逗号隔开\n”); 19. printf(“ today is:”);
20. scanf(“%d,%d,%d”,&today.year,&today.month,&today.day);
21. while((0>=today.year || today.year>65535 ||0>=today.month ||today.month>12) ||
0>=today.day || today.day>numdays(today)) 22. {
23. printf(“input date error! Reenter the day!\n”); 24. printf(“ today is:”);
25. Scanf(“%d,%d,%d”,&today.year,&today.month,&today.day); 26. }
27. if(today.day!=numdays(today)) 28. {
29. tomorrow.year=today.year; 30. tomorrow.month=today.month; 31. tomorrow.day=today.day+1; 32. }
33. else if(today.month==12) 34. {
35. tomorrow.year=today.year+1; 36. tomorrow.month=1; 37. tomorrow.day=1; 38. } 39. else
40. {
41. tomorrow.year=today.year;
42. tomorrow.month=today.month+1; 43. tomorrow.day=1; 44. }
45. printf(“tomorrow is: %d,%d,%d\n\n”,tomorrow.year,tomorrow.month,
tomorrow.day); 46. }
(1) 画出该程序中所有函数的的控制流图; (2) 设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果
认为该程序的语句或分支覆盖率无法达到100%,请说明原因。
三. 实验结果
1. 实验结果: (1)控制流图
3.1 x>3 3.2 z<10 8.1 x=4 8.2 y>5
判定覆盖:
条件组合覆盖:
(3)
环路复杂度为:5
基本路径集合:
1)1-2-3.1-8.1-8.2-10-11-12 2)1-2-3.1-8.1-8.2-9-10-11-12 3)1-2-3.1-8.1-9-10-11-12 4)1-2-3.1-3.2-8.1-9-10-11-12
5)1-2-3.1-3.2-4-5-6-7-8.1-9-10-11-12
测试用例表:
2. 实验结果: (1)控制流图
2.1: d.year%4 10.1: leap(d) 2.2: d.year%100 10.2: d.month == 2
2.3: d.year%400 == 0
(2)测试用例表:
== ==
0 0
四. 实验总结
通过本次实验我了解到了控制流图的画法和测试用例的写法。
实验1白盒测试
实验一 白盒测试用例设计
班级: 11511 学号: [1**********] 姓名: 张琳静
一. 实验目的
1.掌握白盒测试用例设计方法;
2.综合运用所学的白盒测试方法设计进行测试用例设计; 3.掌握测试用例的编写方法。
二. 实验内容及要求
1.使用逻辑覆盖法测试以下程序段。
private void DoWork(int x, int y, int z) 1 {
2 int k = 0, j = 0;
3 if ((x > 3) && (z
5 k = x * y - 1;
6 j = (int)Math.Sqrt(k); 7 }
8 if ((x == 4) || (y > 5)) 9 j = x * y + 10; 10 j = j % 3;
11 lbResult.Text = "k=" + k.ToString() +" j=" +j.ToString () ; 12 }
说明:程序段中每行开头的数字是对每条语句的编号。 要求:
(1) 画出程序的控制流图(用题中给出的语句编号表示)。
(2) 分别以语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
(3) 执行测试用例,并记录测试结果。 2.基本路径测试
按要求对下面的代码进行测试。代码功能是:用折半查找在元素呈升序排列的数组中查找值为 key的元素。代码如下:
1 2 3 4 5 6
private int BinSearch(int [] array,int key) {
int mid,low,high; low=0;
high = array.Length - 1; while (low
7 mid = (low + high) / 2; 8 if (key == array[mid]) 9 return mid;
10 else if (key
13 low = mid + 1; 14 }
15 return -1; 16 }
(1) 画出该程序的控制流图; (2) 计算该程序的环路复杂度;
(3) 用基本路径测试法设计测试路径,之后为各测试路径设计测试用例,并记录执行结果。
三. 实验结果
1. 实验结果: (1)控制流图
判定-
条件覆盖:
条件组合覆盖:
路径覆盖
:
2. 实验结果: (1)控制流图
(2)环路复杂度V(G)=4 (3)基本路径为:
路径1:1,2,3,4,5,15,16
路径2:1,2,3,4,5,6,7,8,9,16
路径3:1,2,3,4,5,6,7,8,10,11,14,5,15,16 路径4:1,2,3,4,5,6,7,8,10,12,13,14,5,15,16
测试用例表:
四. 实验总结
在此次实验过程中,开始的时候,由于粗心犯了很多错误,也由于我对语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖法设计测试用例方法的不熟悉,所以导致效率很低,书写测试用例中出现很多错误,通过同学的帮助已经解决,通过这次白盒测试用例的实验,我对的重测试用例方法更加熟悉,也在犯错误的过程中,加深了对软件测试的理解,一个合格的软件测试员应时刻把不断测试和尽早测试作为首要原则,实现客户需求。
白盒测试实验
实验题1.
编写判断是否为闰年的程序,①画出程序流程图②转换成控制流图③得到控制流矩阵④参考课件分别设计语句覆盖、判定覆盖、条件覆盖、判定---条件覆盖和路径覆盖的测试用例。 实验题2. 参考以下流程图,编写判断三角形的函数。并对其进行如下操作: ① 转换成控制流图 ② 得到控制流矩阵
③ 参考课件分别设计语句覆盖、判定覆盖、条件覆盖、判定---条件覆盖和路径覆盖的测试用例。
实验题3. 程序流程图如下,并对其进行如下操作: ① 转换成控制流图 ② 得到控制流矩阵
③ 参考课件分别设计语句覆盖、判定覆盖、条件覆盖、判定---条件覆盖和路径覆盖的测试用例。
备注: 下课之前 以word文档形式(班级+学号+姓名)发到 clmjet@163.com
实验题1.
判断是否是润年程序代码: package ww;
import java.util.Scanner; public class Tes { public static void main(String[] args) { Scanner in = new Scanner(System.in); int year = in.nextInt(); /* 闰年的条件是: ① 能被4整除,但不能被100整除; ② 能被100整除,又能被400整除。*/ System.out.println("请输入年份:"); Scanner sc=new Scanner(System.in); sc.nextInt(); if(year%4==0&&year%100!=0||year%400==0) { System.out.println("是闰年"); }else{ System.out.println("不是闰年"); } } }
程序流程图:
控制流图:
a
b
③
d
e f g
k m
语句覆盖:int year = 2016;int year =2017;int year=2018; 判定覆盖:
实验题2.
#include
int a,b,c;
bool flag = false;
scanf("%d%d%d",&a,&b,&c); if((a+b)>c&&(b+c)>a&&(a+c)>b) { flag =true; if(flag){
if(a != b && b != c) { printf("不等边三角形。"); } else{ printf("等腰三角形。"); } } } else {
printf("不构成三角形。"); } }
控制流程图:
b
f
h ⑦ ⑧
实验题3.
#include
int age,comm; string sex;
scanf("%d%d%s",&comm,&age,&sex); if(age>25&&sex='m') {
if(age>50||comm>2000) { printf("end"); } else{ comm-=200;
} } else {
comm+=150; } }
控制流程图:
白盒测试实验
实验四 白盒测试
一、实验目的
1. 掌握白盒测试技术,并能应用白盒测试技术设计测试用例。
2. 熟练使用Junit实施测试。
二、实验设备
主流 PC 机一台,要求安装 windows 操作系统、Office、Eclipse 和 Junit。
三、实验内容
1. 使用逻辑覆盖测试方法测试以下程序段
voidDoWork ( int x, int y, int z ) {
1 int k=0, j=0;
2 if((x>3)&&(z
3 {
4 k=x*y-1;
5 j=sqrt(k);
6 }
7 if((x==4)||(y>5))
8 j=x*y+10;
9 j=j%3;
10 }
说明:程序段中每行开头的数字(1—10)是对每条语句的编号。
(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方 法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
2. 计算生日是星期几
已知公元1年1月1日是星期一。编写一个程序,只要输入年月日,就能回答那天是星 期几。应用逻辑覆盖方法和基本路径测试方法为上面的问题设计测试用例。
四、实验步骤
1. 根据白盒测试技术设计测试用例,主要考虑逻辑覆盖测试(语句覆盖、判断覆盖、 条件覆盖、判断/条件覆盖、条件组合覆盖、路径覆盖)和基本路径测试技术。
2. 计算测试用例的分支覆盖率、条件覆盖率和语句覆盖率等测试管理指标。
五、实验要求
1. 根据题目要求编写测试用例;
2. 撰写实验报告。
六、实验思考
1. 在实际的白盒测试中,如何设计测试用例才能达到用最少的测试用例检测出最多的缺陷?
2. 在进行用例设计时,如何考虑软件测试用例的充分性和减少软件测试用例的冗余性?
白盒测试实验三
软件测试基础与实践
实验报告
白盒测试实验三 机房
实验名称:实验地点:实验日期:学生姓名:学生学号:
一、实验目的
(1)巩固白盒测试知识,能应用数据流覆盖方法设计测试用例; (2)学习测试用例的书写。
二、实验背景:
在 Web 服务等应用中,CGI(Common Gateway Interface)是用户访问服务器端 Web 页面内容的一种传输标准。 在应用程序开发中,常常需要将 CGI 编码的字符串解码为普通的 ASCII 字符串。 程序 CgiDecode 正实现了此功能。
实验 1:数据流测试技术实验
运用数据流测试方法,对 CgiDecode 程序中的 decode()方法进行测试。 要求:
(1) 测试要考虑 decode()中 encoded, decoded, *eptr, eptr, *dptr, dptr, ok, c, digit_high, digit_low 变量; (2) 给出每个变量对应的 du-path;
(3) 根据变量的 du-path 设计测试用例,完成对 decode()的测试;
decode()函数的语句及其编号如下:
1 /** Translate a string from the CGI encoding to plain ascii text. 2 * '+' becomes space, %xx becomes byte with hex value xx, 3 * other alphanumeric characters map to themselves. 4 * Returns 0 for success, positive for erroneous input 5 * 1 = bad hexadecimal digit 6 */
7 int decode(char *encoded, char *decoded) 8 {
9 char *eptr = encoded; 10 char *dptr = decoded; 11 int ok=0; 12 while (*eptr) 13 { 14 char c; 15 c = *eptr; 16 if (c == '+')
17 { /* Case 1: '+' maps to blank */
19 } 20 else if (c == '%')
21 { /* Case 2: '%xx' is hex for character xx */ 22 int digit_high = getHexValue(*(++eptr)); 23 int digit_low = getHexValue(*(++eptr)); 24 if ( digit_high == -1 || digit_low==-1) { 25 /* *dptr='?'; */
26 ok=1; /* Bad return code */ 27 } else {
28 *dptr = 16* digit_high + digit_low; 29 }
30 } else {/* Case 3: All other characters map to themselves */ 31 *dptr = *eptr; 32 } 33 ++dptr; 34 ++eptr;
36 *dptr = '\0'; /* Null terminator for string */ 37 return ok; 38 }
流图如图所示(双击可打开和编辑)
Encoded
可能的路径数为:1×1=1 P:7-9 测试用例:
Decoded
可能的路径数为:1×1=1 P:7-9-10 测试用例:
*eptr
可能的路径数为:4×5=20 P1:9-10-11-12 P2:9-10-11-12-14-15
P3:9-10-11-12-14-15-16-20-31 P4:9-10-11-12-14-15-16-20-22 P5:9-10-11-12-14-15-16-20-22-23 P6:22-23-24-28-33-34-12 P7:22-23-24-28-33-34-12-14-15
P8:22-23-24-28-33-34-12-14-15-16-20-31 P9:22 P10:22-23
P11:23-24-28-33-34-12 P12:23-24-28-33-34-12-14-15
P13:23-24-28-33-34-12-14-15-16-20-31 P14:23-24-28-33-34-12-14-15-16-20-22 P15:23 P16: 34-12 P17: 34-12-14-15 P18:34-12-14-15-16-20-31 P19:34-12-14-15-16-20-22 P20:34-12-14-15-16-20-22-23 约简后得:
P1:9-10-11-12-14-15-16-20-31 P2:9-10-11-12-14-15-16-20-22-23 P3:22-23-24-28-33-34-12-14-15-16-20-31
P4:23-24-28-33-34-12-14-15-16-20-22 测试用例:
Eptr
可能的路径数为:4×6=24 P1:9-10-11-12 P2:9-10-11-12-14-15
P3:9-10-11-12-14-15-16-20-31 P4:9-10-11-12-14-15-16-20-22 P5:9-10-11-12-14-15-16-20-22-23 P6:9-10-11-12-14-15-16-18-33-34 P7:22-23-24-28-33-34-12 P8:22-23-24-28-33-34-12-14-15
P9:22-23-24-28-33-34-12-14-15-16-20-31 P10:22 P11:22-23
P12:22-23-24-28-33-34 P13:23-24-28-33-34-12 P14:23-24-28-33-34-12-14-15
P15:23-24-28-33-34-12-14-15-16-20-31 P16:23-24-28-33-34-12-14-15-16-20-22
P17:23
P18:23-24-28-33-34 P19:34-12 P20:34-12-14-15
P21:34-12-14-15-16-20-31 P22:34-12-14-15-16-20-22 P23:34-12-14-15-16-20-22-23 P24:34 约简后:
P1:9-10-11-12-14-15-16-20-31 P2:9-10-11-12-14-15-16-20-22-23 P3:9-10-11-12-14-15-16-18-33-34 P4:22-23-24-28-33-34-12-14-15-16-20-31 P5:23-24-28-33-34-12-14-15-16-20-22 测试用例:
*dptr 可能的路径数为:0 测试用例:无 Dptr
可能的路径数为:2×5=10 P1:10-11-12-14-15-16-18
P2:10-11-12-14-15-16-20-22-23-24-28
P3:10-11-12-14-15-16-20-31 P4:10-11-12-14-15-16-20-31-33-34-12-36 P5:10-11-12-14-15-16-20-31-33 P6:33-34-12-14-15-16-18
P7:33-34-12-14-15-16-20-22-23-24-28 P8:33-34-12-14-15-16-20-31 P9:33
P10:33-34-12-36
约简后:
P1:10-11-12-14-15-16-18
P2:10-11-12-14-15-16-20-22-23-24-28 P3:10-11-12-14-15-16-20-31-33-34-12-36 P4:33-34-12-14-15-16-18
P5:33-34-12-14-15-16-20-22-23-24-28 P6:33-34-12-14-15-16-20-31 测试用例:
Ok
可能的路径数为:1×2=2 P1:11-12-36-37 P2:26-33-34-12-36-37 测试用例:
C 可能的路径数为:2×2=4
P1:14-15-16 P2:14-15-16-20 P3:15-16 P4:15-16-20 约简后: P:14-15-16-20
测试用例:
digit_high
可能的路径数为: 1×2=2 P1:22-23-24 P2:22-23-24-28 约简后: P:22-23-24-28
测试用例:
digit_low 可能的路径数为: 1×2=2
P1:23-24 P2:23-24-28 约简后: P: 23-24-28
测试用例:
三、实验体会
在白盒测试中数据流测试是一个很重要的测试方法,通过这次实验, 加深了对数据流测试的理解,特别是在有指针的情况下,在指针发生变化的时候,会影响到相应的指针变量的值,这时候定义节点和使用节点会发生变化.应当注意.