po3a  

实验项目名称:实验          

一、实验目的

1、 掌握白盒测试的基础知识;

2、 掌握白盒测试的检查内容及测试目的;

3、 掌握黑盒测试的几种基本测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖。

二、实验要求

1、 复习有关内容,理解白盒测试;

2、 掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,并能设计出测试用例;

3、 对具体软件,能分别使用相应的白盒测试方法设计测试用例,并实施测试、分析测试结果。

三、实验内容

l 对实验一1、3题使用逻辑覆盖法进行测试用例设计。

l 对实验一2、4题使用基本路径法进行测试用例设计。

l 5、

 

 

程序伪代码

注意: 1)参数表中EMPTAB 为职员表,DEPTTAB为部门表;

   2 ) ESIZE为职员表长度,DSIZE为部门表长度;

       3ERRCODE为出错码

MAXSALERS = 0;

ERRCODE = 0;

if(ESIZE <= 0 || DSIZE <= 0)

ERRCODE = 1;

else

{

for(i = 1; i < DSIZE ; i++) //选出各部门中最大的销售额值

if(SALES[i] > MAXSALES)

MAXSALES = SALES[i];

for(j = 1; j < DSIZE; j++) //循环找出销售额最大的部门

if(SALES[j] == MAXSALES)

{

FOUND = false;

for(int k = 1; k < ESIZE ; k++) //检查销售额最大部门的所有人员

if(EMPTAB.DEPT(k) == DEPTTAB.DEPT(j))

{

FOUND = true;

if(SALARY(k) >= 15000.00 or JOB(k) = 'M') //满足条件的人员加工资

SALARY(k) = SALARY(k) + 100.00;

else

SALARY(k) = SALARY(k) + 200.00;

}

if(FOUND == false)

ERRCODE == 2;

}

}

 

采用判定覆盖、条件覆盖对该程序进行用例设计

测试用例编号

输入条件

预期结果

覆盖的判定/条件

1

ESIZE=0, DSIZE=0EMPTABDEPTTAB均为空

ERRCODE=1

判定 `ESIZE <=0

2

DEPTTAB:部门ASales=500);
EMPTAB
- E1(工资16000,非经理)
- E2(工资14000,经理)
- E3(工资10000,非经理)

E1+100元,E2+100元,E3+200元;
ERRCODE=0

条件 SALARY >=15000(真/假)、JOB='M'(真/假)的所有组合

3

DEPTTAB:部门ABSales均为500);
EMPTAB:部门AB1名员工(工资均<15000,非经理)

两个部门员工均+200元;
ERRCODE=0

判定 SALES[j] == MAXSALES 多次为真(多部门并列最大)

4

DEPTTAB:部门ASales=500);
EMPTAB:员工属于部门B

ERRCODE=2

判定 FOUND == false(最大销售额部门无员工)

5

DEPTTAB:部门ASales=500);
EMPTAB:部门A员工(工资15000,非经理)

工资+100元;
ERRCODE=0

边界条件(DSIZE=1ESIZE=1);
条件 SALARY >=15000 为真

6

DEPTTAB:部门ASales=500);
EMPTAB:部门A员工(工资14000,非经理)

工资+200元;
ERRCODE=0

条件 SALARY >=15000(假)且 JOB='M'(假)

 

 

四、实验结果:

实验1:

 

控制流图

 

逻辑覆盖法

语句覆盖

输入

测试路径

测试结果

Year

Month

Day

a

11

30

1-2-3-17

输入日期无效

2023

3

28

1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17

星期一

 

条件覆盖/条件覆盖/判定条件覆盖/条件组合覆盖

输入

测试路径

测试结果

Year

Month

Day

a

11

30

1-2-3-17

输入日期无效

2001

a

12

1-2-3-4-5-17

输入日期无效

2022

9

b

1-2-3-4-5-6-7-17

输入日期无效

3000

10

1

1-2-3-4-5-6-7-8-17

输入日期无效

2020

14

4

1-2-3-4-5-6-7-8-9-17

输入日期无效

2021

1

32

1-2-3-4-5-6-7-8-9-10-17

输入日期无效

2008

2

30

1-2-3-4-5-6-7-8-9-10-11-17

输入日期无效

2009

2

29

1-2-3-4-5-6-7-8-9-10-11-12-17

输入日期无效

2022

1

32

1-2-3-4-5-6-7-8-9-10-11-12-13-17

输入日期无效

2023

6

31

1-2-3-4-5-6-7-8-9-10-11-12-13-14-17

输入日期无效

2023

3

28

1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17

星期一

 

路径覆盖

输入

测试路径

测试结果

Year

Month

Day

a

11

30

1-2-3-17

输入日期无效

2001

a

12

1-2-3-4-5-17

输入日期无效

2022

9

b

1-2-3-4-5-6-7-17

输入日期无效

3000

10

1

1-2-3-4-5-6-7-8-17

输入日期无效

2020

14

4

1-2-3-4-5-6-7-8-9-17

输入日期无效

2021

1

32

1-2-3-4-5-6-7-8-9-10-17

输入日期无效

2008

2

30

1-2-3-4-5-6-7-8-9-10-11-17

输入日期无效

2009

2

29

1-2-3-4-5-6-7-8-9-10-11-12-17

输入日期无效

2021

1

32

1-2-3-4-5-6-7-8-9-10-11-12-13-17

输入日期无效

2022

4

31

1-2-3-4-5-6-7-8-9-10-11-12-13-14-17

输入日期无效

2023

3

28

1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17

星期一

 

实验一,第二题,基本路径法

控制流图

 

计算复杂度V(G)

判定节点数+1=5

测试用例

基本路径法(5)

输入

测试路径

测试结果

商品价格

支付金额

e

99

1-2-7

输入无效

99

a

1-2-3-7

输入无效

32

999

1-2-3-4-7

输入无效

20

10

1-2-3-4-5-7

输入无效

30

64

1-2-3-4-5-6

1元4张

5元0张

10元3张

50元0张

 

实验一,第三题。逻辑覆盖法

程序流程图

 

控制流图

 

测试用例图 

语句覆盖/判定覆盖/条件覆盖判定条件覆盖/条件组合覆盖

输入

测试路径

测试结果

Button1

Button2

e

1

1-2-3-10

输入无效

2

1

1-2-3-4-5-6-11-9

取走啤酒

2

2

1-2-3-4-5-6-7-12-9

取走橙汁

1

1

1-2-3-4-5-6-7-8-13-9

取走啤酒,找零五角

1

2

1-2-3-4-5-6-7-8-14-9

取走橙汁,找零五角

 

 

路径覆盖

输入

测试路径

测试结果

Button1

Button2

e

1

1-2-3-10

输入无效

2

1

1-2-3-4-5-6-11-9

取走啤酒

2

2

1-2-3-4-5-6-7-12-9

取走橙汁

1

1

1-2-3-4-5-6-7-8-13-9

取走啤酒,找零五角

1

2

1-2-3-4-5-6-7-8-14-9

取走橙汁,找零五角

1

e

1-2-3-5-10

输入无效

 

 

实验一,第四题,基本路径法

控制流图

 

计算复杂度V(G)

判定节点数(8)+1=9

测试用例

基本路径法(9)

输入

测试路径

测试结果

航线

舱位

飞行时间

e

1

2

1-2-10

输入无效

1

e

2

1-2-3-10

输入无效

1

2

e

1-2-3-4-10

输入无效

1

2

2

1-2-3-4-5-11

食物供应,播放电影

2

1

1

1-2-3-4-5-6-12

食物供应,播放电影

2

2

1

1-2-3-4-5-6-7-13

食物供应

3

1

2

1-2-3-4-5-6-7-8-14

食物供应

3

2

2

1-2-3-4-5-6-7-8-9-15

食物供应

3

2

1

1-2-3-4-5-6-7-8-9-16

 

2 设计测试用列表

判定覆盖

 1.输入表格

Employee Table

NAME

JOB CODE

DEPT

Salary

A

E

1

10000

B

E

1

9000

C

M

1

16000

D

E

1

15000

E

E

2

15000

F

E

2

15000

 

Department Table

DEPT

SALES

1

50000

2

30000

输出为0

2.输入表格

Employee Table

NAME

JOB CODE

DEPT

Salary

 

 

 

 

Department Table

DEPT

SALES

 

 

输出为1

3.输入表格

Employee Table

NAME

JOB CODE

DEPT

Salary

A

E

2

15000

B

E

2

15000

Department Table

DEPT

SALES

1

50000

2

30000

输出为2

条件覆盖

1.输入表格

Employee Table

NAME

JOB CODE

DEPT

Salary

A

E

1

10000

B

E

1

9000

C

M

1

16000

D

E

1

15000

E

E

2

15000

F

E

2

15000

Department Table

DEPT

SALES

1

50000

2

30000

输出为0

2.输入表格

Employee Table

NAME

JOB CODE

DEPT

Salary

A

E

1

12000

Department Table

DEPT

SALES

 

 

输出为1

3.输入表格

Employee Table

NAME

JOB CODE

DEPT

Salary

A

E

2

15000

B

E

2

15000

Department Table

DEPT

SALES

1

50000

2

30000

 

五、实验体会:

1.遇到了哪些问题

测试用例设计困难:对于复杂的程序逻辑,像实验中涉及多条件判断和循环结构的代码,设计全面且有效的测试用例存在挑战。在考虑所有可能的输入组合和程序执行路径时,容易遗漏某些情况,使得测试不够充分。

结果分析复杂:在分析测试结果时,面对大量的测试数据和多样的输出情况,难以快速准确地判断程序是否存在缺陷。尤其是当测试结果不符合预期时,很难迅速定位到问题出在代码的哪个部分。

2.问题如何解决的

优化设计思路:在设计测试用例时,先对程序逻辑进行详细分析,绘制控制流图或流程图,清晰展示程序的执行路径和条件判断。然后,根据不同的覆盖标准,有针对性地设计测试用例,逐步覆盖所有可能的情况。同时,运用边界值分析、等价类划分等方法辅助测试用例的设计,确保测试的全面性。

改进分析流程:建立一套系统的测试结果分析流程。首先,将实际输出与预期输出进行对比,确定是否存在差异。若存在差异,根据测试用例所覆盖的路径和条件,逐步排查代码中可能出现问题的地方。利用调试工具,跟踪程序的执行过程,查看变量的值和程序的执行逻辑,从而快速定位问题所在。

3.收获

这次实验让我收获颇丰。起初,面对白盒测试的众多方法,我时常概念混淆,在设计测试用例时也困难重重,分析测试结果更是一头雾水。但通过查阅大量资料,我逐渐攻克这些难题。如今,我不仅熟练掌握了多种白盒测试方法,能独立为程序设计测试用例,还学会了绘制控制流图、计算程序复杂度。在这个过程中,我的逻辑思维和问题解决能力得到极大锻炼,遇到问题时不再慌乱,而是能有条不紊地分析、解决。更重要的是,我深刻认识到软件测试在软件开发中的关键地位,明白了不同测试方法要灵活搭配使用。这次实验让我成长许多,也为我未来在软件测试领域的学习和工作打下了坚实基础

 

posted on 2025-04-29 09:24  po3a  阅读(9)  评论(0)    收藏  举报