白盒测试方法实验报告

合集下载

白盒测试实验报告范本

白盒测试实验报告范本

实验一:白盒软件测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。

熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。

二、实验内容背景:被测测试程序功能:计算被输入日期是星期几;程序定义:已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几;测试环境:Windows vista、Dev C++;说明:本次测试采用插桩测试法,由于程序简单,手动输入测试用例。

程序说明:A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)(1)分析各种输入情况,结合程序输出结果,并给出详细测试用例;(2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例;(3)决策表测试法;①列出输入变量month、 day、 year的有效等价类;(条件桩)②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩)③画出决策表(简化);④根据决策表,给出详细测试用例。

代码:(被测部分为while循环内部语句)#include <iostream>using namespace std;int main(){int x=1,year, month, day;while(x){1.int i, num=0,total, total1, total2;2.cout<<"请输入年份: ";3.cin>>year;4.cout<<"请输入月份: ";5.cin>>month;6.cout<<"请输入日期: ";7.cin>>day;//求得输入年份之前一年末的总天数8.for(i=1; i<year; i++){9.if((i%4==0)&&(i%100!=0)||(i%400==0))10.num++;}11.total1 = 365*(year-num-1) + 366*num;//求得输入年份的总天数12.if((year%4==0)&&(year%100!=0)||(year%400==0)){//求得输入月份之前一月末的总天数13.switch(month){case 1:total2 = 0;break;case 2:total2 = 31;break;case 3:total2 = 60;break;case 4:total2 = 91;break;case 5:total2 = 121;break;case 6:total2 = 152;break;case 7:total2 = 182;break;case 8:total2 = 213;break;case 9:total2 = 244;break;case 10:total2 = 274;break;case 11:total2 = 305;break;case 12:total2 = 335;break;}}else{14.switch(month){case 1:total2 = 0;break;case 2:total2 = 31;break;case 3:total2 = 59;break;case 4:total2 = 90;break;case 5:total2 = 120;break;case 6:total2 = 151;break;case 7:total2 = 181;break;case 8:total2 = 212;break;case 9:total2 = 243;break;case 10:total2 = 273;break;case 11:total2 = 304;break;case 12:total2 = 334;break;}}//在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数15.total = total1 + total2 + day;16.int week;17. week = total % 7;18.cout<<"您输入的日期是";19.switch(week){case 0:cout<<"星期天"<<endl;break;case 1:cout<<"星期一"<<endl;break;case 2:cout<<"星期二"<<endl;break;case 3:cout<<"星期三"<<endl;break;case 4:cout<<"星期四"<<endl;break;case 5:cout<<"星期五"<<endl;break;case 6:cout<<"星期六"<<endl;break;}cout<<"**********退出程序请输入0,否则任一输入继续**********"<<endl;cin>>x;}}2、测试用例设计1)控制流图2)环路复杂度计算由图可知,图中的环路有六条,故环路复杂度为六。

白盒测试实验报告

白盒测试实验报告

白盒测试实验报告一、实验目的本次白盒测试实验的主要目的是深入理解白盒测试的基本原理和方法,通过对给定程序的分析和测试,掌握代码覆盖的评估标准,提高测试用例的设计能力,发现程序中的逻辑错误和潜在缺陷,从而保障软件的质量和可靠性。

二、实验环境本次实验使用的编程环境为具体编程环境名称,测试工具为具体测试工具名称。

三、实验内容1、被测试程序的功能描述被测试程序是一个简单的数学计算程序,用于实现两个整数的加法、减法、乘法和除法运算。

程序接收用户输入的两个整数,并根据用户选择的运算类型进行相应的计算,最后输出计算结果。

2、程序代码分析以下是被测试程序的部分关键代码:```pythondef add_numbers(num1, num2):return num1 + num2def subtract_numbers(num1, num2):return num1 num2def multiply_numbers(num1, num2):return num1 num2def divide_numbers(num1, num2):if num2!= 0:return num1 / num2else:return "除数不能为 0"```3、测试用例设计为了全面测试程序的功能,设计了以下测试用例:|测试用例编号|输入数据(num1, num2, 运算类型)|预期输出|||||| 1 |(5, 3, 'add')| 8 || 2 |(5, 3,'subtract')| 2 || 3 |(5, 3,'multiply')| 15 || 4 |(6, 2, 'divide')| 3 || 5 |(5, 0, 'divide')|除数不能为 0 |4、代码覆盖分析在执行测试用例的过程中,使用测试工具对代码的覆盖情况进行了分析。

结果显示,语句覆盖达到了 100%,但分支覆盖只达到了 80%。

白盒测试报告

白盒测试报告

白盒测试报告白盒测试报告项目名称:[项目名称]测试日期:[测试日期]测试负责人:[测试负责人]1. 引言白盒测试是一种测试方法,通过检查和评估系统内部的结构和代码,以验证其逻辑正确性、执行路径覆盖度和代码质量。

本报告旨在汇总白盒测试的结果和发现的问题,以便团队更好地理解系统的稳定性和可靠性。

2. 测试范围指明本次测试所涵盖的模块及其功能。

例如:- 模块A:功能1、功能2、功能3- 模块B:功能4、功能5......3. 测试环境指明测试所使用的环境,包括硬件和软件环境。

例如:- 操作系统:Windows 10- 开发工具:Eclipse 3.0- 编程语言:Java 84. 测试目标定义本次白盒测试的目标和期望结果。

例如:- 确保系统代码的正确性和稳定性- 提高测试覆盖率,达到特定的代码覆盖目标(如语句覆盖、判定覆盖)- 发现并修复潜在的逻辑错误和代码缺陷5. 测试方法说明本次测试所采用的测试方法和技术。

例如:- 代码检查:对源代码进行手动检查,以发现潜在的问题和逻辑错误- 单元测试:通过编写和执行单元测试用例,验证代码的正确性和性能- 集成测试:针对模块间的接口和交互进行测试,确保模块之间的协调和整合正确性6. 测试结果总结测试的结果,包括测试通过的用例数量、失败的用例数量和未执行的用例数量。

例如:- 测试用例总数:100- 通过的用例数量:95- 失败的用例数量:2- 未执行的用例数量:37. 问题和建议列出在测试过程中发现的问题和建议。

例如:- 问题1:模块A的功能3在特定情况下会出现异常,需要修复- 问题2:模块B的功能5在高负载情况下响应时间较长,需要优化8. 测试总结对本次白盒测试的总体效果进行评价和总结。

例如:- 本次测试覆盖了80%的代码,并成功发现和修复了部分问题- 部分模块的代码质量较低,需要进一步改进和优化9. 测试建议提出针对下一步白盒测试的建议和改进措施。

例如:- 加强对代码质量的检查,提高代码的可读性和可维护性- 使用更多的静态代码分析工具,以帮助发现潜在的问题和漏洞10. 附件添附本次白盒测试的详细测试用例和测试日志。

白盒测试技术实验报告

白盒测试技术实验报告

白盒测试技术实验报告白盒测试技术实验报告引言:在软件开发过程中,测试是至关重要的一环。

而白盒测试作为一种常见的测试方法,对于确保软件质量和稳定性起着重要的作用。

本文将对白盒测试技术进行实验,并对实验结果进行分析和总结。

一、实验目的本次实验的目的是通过使用白盒测试技术,对一个简单的软件模块进行测试,验证其功能的正确性,并评估测试的覆盖率。

二、实验环境本次实验使用的软件模块是一个简单的登录功能,开发语言为Java。

实验环境包括Java开发工具包(JDK)、集成开发环境(IDE)和测试框架JUnit。

三、实验步骤1. 首先,我们对登录功能进行功能性测试。

通过输入正确的用户名和密码,验证系统能够成功登录,并显示欢迎页面。

然后,我们输入错误的用户名和密码,验证系统能够给出相应的错误提示。

2. 接下来,我们使用白盒测试技术进行代码覆盖率测试。

通过编写测试用例,覆盖代码中的不同分支和路径,以确保代码的各种情况都能被正确测试到。

同时,我们还使用代码覆盖率工具,如JaCoCo,来评估测试的覆盖率。

3. 在测试用例编写完成后,我们使用JUnit框架来执行测试。

JUnit是一个常用的Java单元测试框架,它提供了一系列的断言方法和测试运行器,方便我们编写和执行测试用例。

4. 运行测试后,我们可以得到测试结果和覆盖率报告。

通过分析报告,我们可以了解到哪些代码分支被覆盖,哪些分支未被覆盖,从而可以进一步完善测试用例,提高测试的覆盖率。

四、实验结果经过测试,我们发现登录功能在输入正确的用户名和密码时能够成功登录,并显示欢迎页面。

而在输入错误的用户名和密码时,系统能够给出相应的错误提示,确保了功能的正确性。

在代码覆盖率测试方面,我们使用JaCoCo工具进行了测试。

结果显示,我们的测试用例覆盖了代码中的90%分支和路径,达到了较高的覆盖率。

然而,仍有一小部分分支未被覆盖到,可能需要进一步优化测试用例。

五、实验总结通过本次实验,我们了解了白盒测试技术的基本原理和应用方法。

白盒测试方法实验报告

白盒测试方法实验报告

实验报告课程名称软件测试题目白盒方法测试院系信息工程学院班级计算机学号学生姓名指导老师日期 2019年一、实验题目白盒方法测试二、实验目的使学生能够更进一步理解白盒测试方法。

能够区分语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖所达到的覆盖层次,并能用各层次覆盖的设计思想设计相应的测试用例。

区分语句覆盖、判定覆盖、条件覆盖的异同,掌握其测试用例设计方法和程序特征;三、实验环境Windows系统平台和Dev-C++开发环境。

四、实验内容某程序的逻辑设计如下图所示,自行分析程序结构,请为该程序设计测试用例使其分别满足:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖,并按照测试用例测试程序,完善测试用例各项内容的填写。

#include <iostream>using namespace std;int main(){int F=0;int T=0;int x,y;cin>>x>>y;if(x>=50&&y>=50){F=1;}if(x+y>80){T=2;}else{T=3;}cout<<F<<endl<<T<<endl;}4五、实验步骤1.依据程序逻辑结构图分析程序结构,找出程序的各种组合。

2.依据实验要求设计测试用例使测试达到特定覆盖。

3.选择自己熟悉的语言编写程序。

4.用各种测试用例测试程序。

5.1语句覆盖特点:语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每条语句至少被执行一次。

在本例中,可执行语句是指语句块1到语句块4中的语句。

优点:可以很直观地从流程图得到测试用例,可以测试所有的执行语句。

缺点:语句覆盖不能准确的判断运算中的逻辑关系错误。

假设第一个判断语句if(x>=50 && y>=50)中的“&&”被错误地写成了“||”,即if(x>=50 || y>=50),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖。

实验01 白盒测试方法

实验01 白盒测试方法

实验01白盒测试方法[实验目的]1.掌握白盒测试技术2.能应用白盒测试技术设计测试用例;[预习要求]1.逻辑覆盖:逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。

设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。

(6)路径覆盖。

设计足够的测试用例,使程序的每条可能路径都至少执行一次。

如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。

2.基本路径测试:基本路径测试法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

步骤:(1)依据代码绘制流程图(2)确定流程图的环路复杂度(3)确定线性独立路径的基本集合(4)设计测试用例覆盖每条基本路径[实验题]三角形问题输入三个整数a,b,c,分别作为三角形的三条边,现通过程序判断三条边构成三角形的类型为:a)一般三角形b)等边三角形c)等腰三角形d)不构成三角形要求:(1)编写代码:根据题目描述使用Java编写三角形类,其中包括判定三条边构成三角形的方法。

(2)绘制控制流图:列出所编写的代码,注明语句编号,画出程序的控制流图。

(3)设计测试用例:分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。

格式参照以下表格:(4)编写测试代码,执行测试:使用JUnit编写测试代码,并在上表中记录测试结果。

实验01 白盒测试方法

实验01白盒测试方法[实验目的]1.掌握白盒测试技术2.能应用白盒测试技术设计测试用例;[预习要求]1.逻辑覆盖:逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。

设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。

(6)路径覆盖。

设计足够的测试用例,使程序的每条可能路径都至少执行一次。

如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。

2.基本路径测试:基本路径测试法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

步骤:(1)依据代码绘制流程图(2)确定流程图的环路复杂度(3)确定线性独立路径的基本集合(4)设计测试用例覆盖每条基本路径[实验题]三角形问题输入三个整数a,b,c,分别作为三角形的三条边,现通过程序判断三条边构成三角形的类型为:a)一般三角形b)等边三角形c)等腰三角形d)不构成三角形要求:(1)编写代码:根据题目描述使用Java编写三角形类,其中包括判定三条边构成三角形的方法。

(2)绘制控制流图:列出所编写的代码,注明语句编号,画出程序的控制流图。

(3)设计测试用例:分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。

格式参照以下表格:(4)编写测试代码,执行测试:使用JUnit编写测试代码,并在上表中记录测试结果。

白盒测试用例实验报告

白盒测试用例实验报告《白盒测试用例实验报告》一、实验目的本实验旨在通过白盒测试用例的实验报告,了解白盒测试的原理和方法,掌握白盒测试用例的编写和执行过程。

二、实验环境1. 软件环境:Windows 10操作系统、Eclipse集成开发环境2. 硬件环境:个人电脑三、实验内容1. 理解白盒测试的原理和方法2. 编写白盒测试用例3. 执行白盒测试用例4. 分析测试结果并撰写实验报告四、实验步骤1. 阅读相关文献,了解白盒测试的原理和方法2. 选择一个简单的软件模块,编写白盒测试用例3. 在Eclipse中创建测试类,并将编写的测试用例添加到测试类中4. 执行测试用例,观察测试结果5. 分析测试结果,撰写实验报告五、实验结果1. 经过测试,所有编写的白盒测试用例均能正确执行,并且符合预期结果2. 通过对测试结果的分析,发现了一些潜在的代码逻辑错误,并及时进行了修复3. 实验报告中详细记录了测试用例的编写过程、执行结果和分析结论六、实验总结通过本次实验,我对白盒测试有了更深入的了解,掌握了白盒测试用例的编写和执行方法。

同时,通过对测试结果的分析,我也发现了一些代码逻辑上的问题,并及时进行了修复。

这次实验不仅提高了我的软件测试能力,也增强了我对软件质量控制的认识。

七、实验感想白盒测试是软件测试中非常重要的一部分,通过本次实验,我深刻体会到了白盒测试对软件质量的重要性。

在今后的学习和工作中,我将继续深入学习白盒测试的理论知识,提高自己的测试能力,为软件质量的提升贡献自己的力量。

八、参考文献1. 《软件测试与质量保障》,王晓敏,清华大学出版社2. 《软件测试方法与技术》,李彦,人民邮电出版社以上就是本次实验的白盒测试用例实验报告,希望对大家有所帮助。

白盒测试实验报告

白盒测试实验报告一、实验目的。

本次实验旨在对软件系统的内部结构进行测试,以验证代码的逻辑正确性、路径覆盖率和条件覆盖率等指标,从而提高软件系统的质量和稳定性。

二、实验环境。

1. 软件系统,本次实验选择了XXX软件系统作为测试对象,该系统包含了多个模块和功能,是一个typical的软件系统。

2. 测试工具,我们使用了XXX测试工具来进行白盒测试,该工具能够帮助我们对代码进行覆盖率分析、路径跟踪和条件测试等。

3. 测试人员,实验由XXX团队的测试人员进行,每位成员都具备扎实的编程基础和测试经验。

三、实验步骤。

1. 确定测试目标,我们首先对软件系统进行分析,确定了需要测试的模块和功能,以及测试的重点和难点。

2. 设计测试用例,针对每个测试目标,我们设计了一系列的测试用例,覆盖了各种可能的输入、路径和条件组合。

3. 执行测试用例,测试人员按照设计的测试用例,对软件系统进行了全面的白盒测试,记录了测试过程中的日志和结果。

4. 分析测试结果,通过测试工具对测试结果进行分析,统计了代码的覆盖率、路径覆盖情况和条件覆盖情况,发现了一些潜在的问题和漏洞。

5. 修复和再测试,根据分析结果,开发人员对发现的问题进行了修复,然后再次进行了白盒测试,确保问题得到了解决。

四、实验结果。

经过本次实验,我们对软件系统进行了全面的白盒测试,覆盖了大部分的代码路径和条件分支,发现了一些潜在的问题和漏洞,并及时进行了修复。

最终,软件系统的质量得到了显著提高,稳定性和可靠性得到了保障。

五、实验总结。

通过本次实验,我们深刻认识到了白盒测试在软件开发过程中的重要性,它能够帮助我们发现代码中的潜在问题,提高软件系统的质量和稳定性。

同时,我们也意识到了白盒测试需要结合黑盒测试和其他测试手段来进行,以全面保证软件系统的质量。

在未来的工作中,我们将继续深入研究和应用白盒测试技术,为软件开发和测试工作贡献更多的价值。

六、参考文献。

[1] XXX.《软件测试与质量保障》. 机械工业出版社,2018.[2] XXX.《白盒测试技术与实践》. 电子工业出版社,2017.[3] XXX.《软件测试工程师教程》. 清华大学出版社,2016.以上就是本次白盒测试实验的报告内容,谢谢阅读。

白盒测试实验报告

白盒测试实验报告1. 引言白盒测试是软件开发过程中非常重要的一环,它能够深入了解软件内部的实现细节,发现潜在的错误和漏洞。

本次实验旨在对一款电商网站的后台管理系统进行白盒测试,并报告测试过程中发现的问题和提出的改进建议。

2. 测试环境和工具为了开展白盒测试,我们构建了一套适用于该电商网站的测试环境。

测试环境包括服务器、数据库和部署在服务器上的后台管理系统。

在测试过程中,我们使用了一系列白盒测试工具,包括静态代码分析工具、代码覆盖率工具以及调试器。

3. 功能测试在功能测试中,我们对后台管理系统的各个功能模块进行了测试。

我们模拟了管理员登录、商品管理、订单管理、用户管理等多种场景进行测试,并详细记录了测试用例、测试数据以及测试结果。

在功能测试过程中,我们发现了一些问题。

例如,某个功能模块在处理大量订单数据时出现了性能问题,导致系统响应变慢。

此外,某个功能模块在处理特定边界条件时出现了异常情况,导致系统崩溃。

4. 安全性测试在安全性测试中,我们对后台管理系统的安全性进行了评估。

我们模拟了黑客攻击、SQL注入、XSS跨站脚本等多种攻击方式进行测试,并评估系统对这些攻击的防御能力。

安全性测试中,我们发现了系统对于某些攻击方式的防御能力较弱,容易受到黑客攻击。

例如,系统在处理用户提交的数据时没有进行严格的输入验证,容易受到SQL注入攻击。

5. 性能测试在性能测试中,我们对后台管理系统的响应时间、并发性能、负载能力等进行了评估。

我们使用负载测试工具模拟了大量用户同时访问后台管理系统,以评估系统在高负载下的性能表现。

性能测试中,我们发现了系统在处理高并发请求时响应时间较长,用户体验较差。

此外,系统在处理大规模数据时处理速度较慢,需要进行性能优化。

6. 代码分析和覆盖率分析为了深入了解后台管理系统的内部实现,我们使用了静态代码分析工具对系统的源代码进行了分析。

通过分析,我们发现了一些潜在的代码问题,如代码冗余、死代码等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告
课程名称软件测试题目白盒方法测试
院系信息工程学院
班级计算机
学号
学生姓名
指导老师
日期 2019年
一、实验题目
白盒方法测试
二、实验目的
使学生能够更进一步理解白盒测试方法。

能够区分语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖所达到的覆盖层次,并能用各层次覆盖的设计思想设计相应的测试用例。

区分语句覆盖、判定覆盖、条件覆盖的异同,掌握其测试用例设计方法和程序特征;
三、实验环境
Windows系统平台和Dev-C++开发环境。

四、实验内容
某程序的逻辑设计如下图所示,自行分析程序结构,请为该程序设计测试用例使其分别满足:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖,并按照测试用例测试程序,完善测试用例各项内容的填写。

#include <iostream>
using namespace std;
int main()
{
int F=0;
int T=0;
int x,y;
cin>>x>>y;
if(x>=50&&y>=50)
{F=1;}
if(x+y>80)
{
T=2;
}
else
{
T=3;
}
cout<<F<<endl<<T<<endl;
}
4
五、实验步骤
1.依据程序逻辑结构图分析程序结构,找出程序的各种组合。

2.依据实验要求设计测试用例使测试达到特定覆盖。

3.选择自己熟悉的语言编写程序。

4.用各种测试用例测试程序。

5.1语句覆盖
特点:语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每
条语句至少被执行一次。

在本例中,可执行语句是指语句块1到语句块4中的语
句。

优点:可以很直观地从流程图得到测试用例,可以测试所有的执行语句。

缺点:语句覆盖不能准确的判断运算中的逻辑关系错误。

假设第一个判断语
句if(x>=50 && y>=50)中的“&&”被错误地写成了“||”,即if(x>=50 || y>=50),使
用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖。

在六种逻辑覆盖标准中,语句覆盖标准最弱的。

5.2判定覆盖
特点:判定覆盖(分支覆盖)要求设计足够多的测试用例,运行被测程序,使得程序中的每个判断的“真”和“假”都至少被执行一次。

即:程序中的每个分支至少执行一次。

在本例中共有两个判断if(x>=50 && y>=50)(记为P1)和if(x+y>80)(记为P2)。

两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。

优点:由于可执行语句要不就在判定的真分支,要不就在假分支上,判定覆盖比语句覆盖要多几乎一倍的测试路径,所以,只要满足了判定覆盖标准就一定满足语句覆盖标准。

因此,判定覆盖比语句覆盖强。

缺点:判定覆盖会忽略条件中取或(or)的情况。

假设第一个判断语句if(x>=50 && y>=50)中的“&&”被程序员错误地写成了“||”,使用上面设计出来的一组测试用例,仍然可以达到100%的判定覆盖,所以判定覆盖也无法发现上述的逻辑错误。

5.3条件覆盖
特点:条件覆盖要求设计足够多的测试用例,运行被测程序,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

在本例中有两个判断if(x>=50 && y>=50)(记为P1)和if(x+y>80)(记为P2),共计三个条件x>=50(记为C1)、y>=50(记为C2)和x+y>80(记为C3)。

时也到达了100%判定覆盖的标准。

但并不能保证达到100%条件覆盖标准的测
的语句覆盖标准了。

优点:显然条件覆盖比判定覆盖,增加了对符合判定情况的测试。

缺点:要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。

5.4判定-条件覆盖
特点:设计足够多的测试用例,运行被测程序,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。

即同时满足100%判定覆盖和100%条件覆盖的标准。

用例设计:
足了一次。

优点:达到100%判定-条件覆盖标准一定能够达到100%条件覆盖、100%判定覆盖和100%语句覆盖。

判定-条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。

缺点:未考虑条件的组合情况。

5.5条件组合覆盖
特点:要求设计足够多的测试用例,运行被测程序,使得被测试程序中每个判定中条件结果的所有可能组合至少执行一次。

注意:
1)条件组合只针对同一个判断语句内存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。

2)不同的判断语句内的条件取值之间无需组合。

3)对于单条件的判断语句,只需要满足自己的所有取值即可。

优点:多重条件覆盖准则满足判定覆盖、条件覆盖、判定-条件覆盖准则。

缺点:线性地增加了测试用例的数量。

但上面的例子中,只走了三条路径a-c-e-f、a-c-d-f和a-b-d-f,而本例的程序存在四条路径。

所以条件组合覆盖不能保证所有的路径被执行。

5.6路径覆盖
特点:设计足够的测试用例,运行被测程序,覆盖程序中所有可能的路径。

优点:这种测试方法可以对程序进行彻底的测试,比前面五种覆盖面都广。

100%满足路径覆盖,一定能100%满足判定覆盖标准(因为路径就是从判断的某条分支走的)。

缺点:100%满足路径覆盖,但并不一定能100%满足条件覆盖(C2只取到了真),也就不能满足100%条件组合覆盖。

经过分析,它们之间的关系可以用下图表示(路径覆盖在该图无法表示):
从上例可知,单独采用任何一种逻辑覆盖方法都不能完全覆盖所有的测试用例,任何一个高效的测试用例,都是针对具体测试场景的。

逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。

所以在实际测试用例设计中,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。

要根据不同需要和不同测试用例设计特征,将不同的设计方法组合起来,交叉使用,以实现最佳的测试用例输出。

六、实验总结
本次实验通过用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖,完成了示例程序的白盒测试。

区分了各个覆盖所达到的覆盖层次,并能用各层次覆盖的设计思想设计相应的测试用例。

对课本上的知识进行了一次实践,使我对白盒测试及各种覆盖有了更加清楚的认识。

在实验过程中遇到的问题,通过询问同学也得到了更加清楚地认识。

同时也认识了自己的不足,在以后会更加认真的学习软件测试的知识。

相关文档
最新文档