实验项目名称:实验二
一、实验目的
1、 掌握白盒测试的基础知识;
2、 掌握白盒测试的检查内容及测试目的;
3、 掌握黑盒测试的几种基本测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖。
二、实验要求
1、 复习有关内容,理解白盒测试;
2、 掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,并能设计出测试用例;
3、 对具体软件,能分别使用相应的白盒测试方法设计测试用例,并实施测试、分析测试结果。
三、实验内容
l 对实验一1、3题使用逻辑覆盖法进行测试用例设计。
l 对实验一2、4题使用基本路径法进行测试用例设计。
l 5、
程序伪代码
注意: 1)参数表中EMPTAB 为职员表,DEPTTAB为部门表;
2 ) ESIZE为职员表长度,DSIZE为部门表长度;
3)ERRCODE为出错码
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=0;EMPTAB和DEPTTAB均为空 |
ERRCODE=1 |
判定 `ESIZE <=0 |
|
2 |
DEPTTAB:部门A(Sales=500); |
E1+100元,E2+100元,E3+200元; |
条件 SALARY >=15000(真/假)、JOB='M'(真/假)的所有组合 |
|
3 |
DEPTTAB:部门A和B(Sales均为500); |
两个部门员工均+200元; |
判定 SALES[j] == MAXSALES 多次为真(多部门并列最大) |
|
4 |
DEPTTAB:部门A(Sales=500); |
ERRCODE=2 |
判定 FOUND == false(最大销售额部门无员工) |
|
5 |
DEPTTAB:部门A(Sales=500); |
工资+100元; |
边界条件(DSIZE=1,ESIZE=1); |
|
6 |
DEPTTAB:部门A(Sales=500); |
工资+200元; |
条件 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.收获
这次实验让我收获颇丰。起初,面对白盒测试的众多方法,我时常概念混淆,在设计测试用例时也困难重重,分析测试结果更是一头雾水。但通过查阅大量资料,我逐渐攻克这些难题。如今,我不仅熟练掌握了多种白盒测试方法,能独立为程序设计测试用例,还学会了绘制控制流图、计算程序复杂度。在这个过程中,我的逻辑思维和问题解决能力得到极大锻炼,遇到问题时不再慌乱,而是能有条不紊地分析、解决。更重要的是,我深刻认识到软件测试在软件开发中的关键地位,明白了不同测试方法要灵活搭配使用。这次实验让我成长许多,也为我未来在软件测试领域的学习和工作打下了坚实基础 。

浙公网安备 33010602011771号