白盒测试实验

实验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 struct ydate {

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 #include void main() {

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 #include void main() {

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

测试用例:

三、实验体会

在白盒测试中数据流测试是一个很重要的测试方法,通过这次实验, 加深了对数据流测试的理解,特别是在有指针的情况下,在指针发生变化的时候,会影响到相应的指针变量的值,这时候定义节点和使用节点会发生变化.应当注意.

扫一扫手机访问

发表评论