白盒测试试验三.docx
- 文档编号:4143508
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:13
- 大小:18.45KB
白盒测试试验三.docx
《白盒测试试验三.docx》由会员分享,可在线阅读,更多相关《白盒测试试验三.docx(13页珍藏版)》请在冰豆网上搜索。
白盒测试试验三
软件测试基础与实践
实验报告
实验名称:
白盒测试实验二
实验地点:
机房
实验日期:
学生姓名:
学生学号:
「、实验目的
(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;
while(*eptr)
{
charc;
c=*eptr;
if(c=='+')
{/*Case1:
'+'mapstoblank*/
*dptr='';
}
elseif(c=='%')
{/*Case2:
'%xx'ishexforcharacterxx*/
intdigit_high=getHexValue(*(++eptr));
intdigit_low=getHexValue(*(++eptr));
if(digit_high==-1||digit_low==-1){
/**dptr='?
';*/
ok=1;/*Badreturncode*/
}else{
*dptr=16*digit_high+digit_low;
}
}else{/*Case3:
Allothercharactersmaptothemselves*/*dptr=*eptr;
}
++dptr;
++eptr;
}
*dptr='\0';/*Nullterminatorforstring*/
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
returnok;
流图如图所示(双击可打开和编辑
9/10/
11
1236/37
14/15
1618
2031
22/2333/34
2428
26
Encoded
Node
Type
Code
7
DEF
intdecode(char*encoded,char*decoded)
9
USE
char*eptr=encoded
可能的路径数为:
1X1=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
可能的路径数为:
1X1=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
intdigithigh=getHexValue(*(++eptr))
23
DEF,USE
intdigitlow=getHexValue(*(++eptr))
31
USE
*dptr=*eptr
34
DEF
++eptr
可能的路径数为:
4X5=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
P&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
intdigithigh=getHexValue(*(++eptr))
23
DEF,USE
intdigitlow=getHexValue(*(++eptr))
31
USE
*dptr=*eptr
34
USE,DEF
++eptr
可能的路径数为:
4X6=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*digithigh+digitlow
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*digithigh+digitlow
31
USE
*dptr=*eptr
33
USE,DEF
++dptr
36
USE
*dptr='\0'
可能的路径数为:
2X5=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
可能的路径数为:
1X2=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=='%')
可能的路径数为:
2X2=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
digithigh
Node
Type
Code
22
DEF,
intdigithigh=getHexValue(*(++eptr))
24
USE
if(digithigh==-1||digitlow==-1)
28
USE
*dptr=16*digithigh+digitlow
可能的路径数为:
1X2=2
P1:
22-23-24
P2:
22-23-24-28
约简后:
P:
22-23-24-28
测试用例:
编号
执行条件
输入
期望输出
实际输出
路径
001
数据流测试
('%3','=')
returnok
returnok
22-23-24-28
digitlow
Node
Type
Code
23
def.
intdigitlow=getHexValue(*(++eptr))
24
USE
if(digithigh==-1||digitlow==-1)
24
USE
*dptr=16*digithigh+digitlow
可能的路径数为:
1X2=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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测试 试验
![提示](https://static.bdocx.com/images/bang_tan.gif)