白盒测试实验三.docx
- 文档编号:29089638
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:14
- 大小:79.53KB
白盒测试实验三.docx
《白盒测试实验三.docx》由会员分享,可在线阅读,更多相关《白盒测试实验三.docx(14页珍藏版)》请在冰豆网上搜索。
白盒测试实验三
软件测试基础与实践
实验报告
实验名称:
白盒测试实验三
实验地点:
机房
实验日期:
学生姓名:
学生学号:
一、实验目的
(1)巩固白盒测试知识,能应用数据流覆盖方法设计测试用例;
(2)学习测试用例的书写。
二、实验背景:
在Web服务等应用中,CGI(CommonGatewayInterface)是用户访问服务器端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/**TranslateastringfromtheCGIencodingtoplainasciitext.
2*'+'becomesspace,%xxbecomesbytewithhexvaluexx,
3*otheralphanumericcharactersmaptothemselves.
4*Returns0forsuccess,positiveforerroneousinput
5*1=badhexadecimaldigit
6*/
7intdecode(char*encoded,char*decoded)
8{
9char*eptr=encoded;
10char*dptr=decoded;
11intok=0;
12while(*eptr)
13{
14charc;
15c=*eptr;
16if(c=='+')
17{/*Case1:
'+'mapstoblank*/
18*dptr='';
19}
20elseif(c=='%')
21{/*Case2:
'%xx'ishexforcharacterxx*/
22intdigit_high=getHexValue(*(++eptr));
23intdigit_low=getHexValue(*(++eptr));
24if(digit_high==-1||digit_low==-1){
25/**dptr='?
';*/
26ok=1;/*Badreturncode*/
27}else{
28*dptr=16*digit_high+digit_low;
29}
30}else{/*Case3:
Allothercharactersmaptothemselves*/
31*dptr=*eptr;
32}
33++dptr;
34++eptr;
35}
36*dptr='\0';/*Nullterminatorforstring*/
37returnok;
38}
流图如图所示(双击可打开和编辑)
Encoded
Node
Type
Code
7
DEF
intdecode(char*encoded,char*decoded)
9
USE
char*eptr=encoded
可能的路径数为:
1×1=1
P:
7-9
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('+',-)
returnok
returnok
7-9
Decoded
Node
Type
Code
7
DEF
intdecode(char*encoded,char*decoded)
10
USE
char*dptr=decoded
可能的路径数为:
1×1=1
P:
7-9-10
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('+','=')
returnok
returnok
7-9-10
*eptr
Node
Type
Code
9
DEF
char*eptr=encoded
12
USE
while(*eptr)
15
USE
c=*eptr;
22
DEF,USE
intdigit_high=getHexValue(*(++eptr))
23
DEF,USE
intdigit_low=getHexValue(*(++eptr))
31
USE
*dptr=*eptr
34
DEF
++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
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('$$','=')
returnok
returnok
9-10-11-12-14-15-16-20-31
002
数据流测试
('%3','=')
returnok
returnok
9-10-11-12-14-15-16-20-22-23
003
数据流测试
('%3$','=')
returnok
returnok
22-23-24-28-33-34-12-14-15-16-20-31
004
数据流测试
('%%','=')
returnok
returnok
23-24-28-33-34-12-14-15-16-20-22
Eptr
Node
Type
Code
9
DEF
char*eptr=encoded
12
USE
while(*eptr)
15
USE
c=*eptr;
22
DEF,USE
intdigit_high=getHexValue(*(++eptr))
23
DEF,USE
intdigit_low=getHexValue(*(++eptr))
31
USE
*dptr=*eptr
34
USE,DEF
++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
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('$$','=')
returnok
returnok
9-10-11-12-14-15-16-20-31
002
数据流测试
('%','=')
returnok
returnok
9-10-11-12-14-15-16-20-22-23
003
数据流测试
('+','=')
returnok
returnok
9-10-11-12-14-15-16-18-33-34
004
数据流测试
('%3$','=')
returnok
returnok
22-23-24-28-33-34-12-14-15-16-20-31
005
数据流测试
('%3%','=')
returnok
returnok
23-24-28-33-34-12-14-15-16-20-22
*dptr
Node
Type
Code
10
DEF
char*dptr=decoded
18
DEF
*dptr=''
28
DEF
*dptr=16*digit_high+digit_low
31
DEF
*dptr=*eptr
33
DEF
++dptr
36
DEF
*dptr='\0'
可能的路径数为:
0
测试用例:
无
Dptr
Node
Type
Code
10
DEF
char*dptr=decoded
18
USE
*dptr=''
28
USE
*dptr=16*digit_high+digit_low
31
USE
*dptr=*eptr
33
USE,DEF
++dptr
36
USE
*dptr='\0'
可能的路径数为:
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-31P4:
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
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('+','=')
returnok
returnok
10-11-12-14-15-16-18
002
数据流测试
('%3','=')
returnok
returnok
10-11-12-14-15-16-20-22-23-24-28
003
数据流测试
('$$','=')
returnok
returnok
10-11-12-14-15-16-20-31-33-34-12-36
004
数据流测试
('3+','=')
returnok
returnok
33-34-12-14-15-16-18
005
数据流测试
('+%3','=')
returnok
returnok
33-34-12-14-15-16-20-22-23-24-28
006
数据流测试
('+$','=')
return
return
33-34-12-14-15-16-20-31
Ok
Node
Type
Code
11
DEF
intok=0
26
DEF
ok=1
37
USE
returnok
可能的路径数为:
1×2=2
P1:
11-12-36-37
P2:
26-33-34-12-36-37
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
(' ','=')
returnok
returnok
11-12-36-37
002
数据流测试
('%-3','=')
returnok
returnok
26-33-34-12-36-37
C
Node
Type
Code
14
DEF
charc
15
DEF
c=*eptr
16
USE
if(c=='+')
20
USE
elseif(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
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('=','=')
returnok
returnok
14-15-16-20
digit_high
Node
Type
Code
22
DEF,
intdigit_high=getHexValue(*(++eptr))
24
USE
if(digit_high==-1||digit_low==-1)
28
USE
*dptr=16*digit_high+digit_low
可能的路径数为:
1×2=2
P1:
22-23-24
P2:
22-23-24-28
约简后:
P:
22-23-24-28
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('%3','=')
returnok
returnok
22-23-24-28
digit_low
Node
Type
Code
23
DEF,
intdigit_low=getHexValue(*(++eptr))
24
USE
if(digit_high==-1||digit_low==-1)
24
USE
*dptr=16*digit_high+digit_low
可能的路径数为:
1×2=2
P1:
23-24
P2:
23-24-28
约简后:
P:
23-24-28
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('%3','=')
returnok
returnok
23-24-28
三、实验体会
在白盒测试中数据流测试是一个很重要的测试方法,通过这次实验,加深了对数据流测试的理解,特别是在有指针的情况下,在指针发生变化的时候,会影响到相应的指针变量的值,这时候定义节点和使用节点会发生变化.应当注意.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测试 实验