软件测试4.ppt
《软件测试4.ppt》由会员分享,可在线阅读,更多相关《软件测试4.ppt(60页珍藏版)》请在冰豆网上搜索。
AFreesamplebackgroundfromSlide1第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计第第4章章白盒测试及其用例的设计白盒测试及其用例的设计4.14.1白盒测试方法白盒测试方法4.24.2白盒测试的基本概念白盒测试的基本概念4.34.3覆盖测试覆盖测试4.44.4路径测试路径测试4.54.5最少测试用例数计算最少测试用例数计算AFreesamplebackgroundfromSlide2第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计本章教学目标本章教学目标理论环节理论环节理论环节理论环节nn学习理解白盒测试方法的基本概念学习理解白盒测试方法的基本概念nn学习理解白盒测试的覆盖理论学习理解白盒测试的覆盖理论nn学习掌握白盒测试的路径表达学习掌握白盒测试的路径表达nn学习掌握白盒测试的基本路径测试法学习掌握白盒测试的基本路径测试法实践环节实践环节实践环节实践环节nn通过案例运用学习掌握覆盖问题的解决方法通过案例运用学习掌握覆盖问题的解决方法nn运用基本路径测试方法进行实际程序测试运用基本路径测试方法进行实际程序测试AFreesamplebackgroundfromSlide3第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计4.1白盒测试方法白盒测试方法nn为什么要进行白盒测试?
为什么要进行白盒测试?
如果所有软件错误的根源都可以追溯到某个唯一原因,如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题就简单了。
然而,事实上一个那么问题就简单了。
然而,事实上一个bugbug常常是由多个常常是由多个因素共同导致的,如下图所示。
因素共同导致的,如下图所示。
Return假设此时开发工作已结束,程序假设此时开发工作已结束,程序送交到测试组,没有人知道代码中有送交到测试组,没有人知道代码中有一个潜在的被一个潜在的被00除的错误。
若测试组除的错误。
若测试组采用的测试用例的执行路径没有同时采用的测试用例的执行路径没有同时经过经过x=0x=0和和y=5/xy=5/x进行测试,显然测试进行测试,显然测试工作似乎非常完善,测试用例覆盖了工作似乎非常完善,测试用例覆盖了所有执行语句,也没有被所有执行语句,也没有被00除的错误除的错误发生。
发生。
AFreesamplebackgroundfromSlide4第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计白盒测试方法白盒测试方法(续)(续)nn白盒测试也称结构测试或逻辑驱动测试,是针对被测单元白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。
它根据程序的控制结构设计内部是如何进行工作的测试。
它根据程序的控制结构设计测试用例,主要用于软件或程序验证。
测试用例,主要用于软件或程序验证。
nn白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。
测试,是一种穷举路径的测试方法。
但但即使每条路径都测即使每条路径都测试过了,仍然可能存在错误。
因为:
试过了,仍然可能存在错误。
因为:
穷穷举举路路径径测测试试无无法法检检查查出出程程序序本本身身是是否否违违反反了了设设计计规规范范,即程序是否是一个错误的程序。
即程序是否是一个错误的程序。
穷举路径测试不可能查出程序因为遗漏路径而出错。
穷举路径测试不可能查出程序因为遗漏路径而出错。
穷举路径测试发现不了一些与数据相关的错误。
穷举路径测试发现不了一些与数据相关的错误。
AFreesamplebackgroundfromSlide5第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计白盒测试方法白盒测试方法(续)(续)nn采采用用白白盒盒测测试试方方法法必必须须遵遵循循以以下下几几条条原原则则,才才能能达达到到测试的目的:
测试的目的:
保证一个模块中的所有独立路径至少被测试一次。
保证一个模块中的所有独立路径至少被测试一次。
所有逻辑值均需测试真所有逻辑值均需测试真(true)(true)和假和假(false)(false)两种情况。
两种情况。
检查程序的内部数据结构,保证其结构的有效性。
检查程序的内部数据结构,保证其结构的有效性。
在上下边界及可操作范围内运行所有循环。
在上下边界及可操作范围内运行所有循环。
nn白白盒盒测测试试主主要要是是检检查查程程序序的的内内部部结结构构、逻逻辑辑、循循环环和和路径。
常用测试用例设计方法有:
路径。
常用测试用例设计方法有:
逻辑覆盖法(逻辑驱动测试)逻辑覆盖法(逻辑驱动测试)基本路径测试方法基本路径测试方法AFreesamplebackgroundfromSlide6第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计4.2白盒测试的基本概念白盒测试的基本概念4.2.14.2.1控制流图控制流图4.2.24.2.2环形复杂度环形复杂度4.2.34.2.3图矩阵图矩阵ReturnAFreesamplebackgroundfromSlide7第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计4.2.1控制流图控制流图nn控制流图(可简称流图)是对程序流程图进行简化后得到控制流图(可简称流图)是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。
的,它可以更加突出的表示程序控制流的结构。
nn控制流图中包括两种图形符号:
节点和控制流线。
控制流图中包括两种图形符号:
节点和控制流线。
节点由带标号的圆圈表示,可代表一个或多个语句、一个节点由带标号的圆圈表示,可代表一个或多个语句、一个处理框序列和一个条件判定框(假设不包含复合条件)。
处理框序列和一个条件判定框(假设不包含复合条件)。
控制流线由带箭头的弧或线表示,可称为边。
它代表程序控制流线由带箭头的弧或线表示,可称为边。
它代表程序中的控制流。
中的控制流。
nn对于复合条件,则可将其分解为多个单个条件,并映射成对于复合条件,则可将其分解为多个单个条件,并映射成控制流图。
控制流图。
常见结构的控制流图常见结构的控制流图AFreesamplebackgroundfromSlide9第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计4.2.2环形复杂度环形复杂度nn环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度提供定量尺度的软件度量。
提供定量尺度的软件度量。
nn环形复杂度的应用环形复杂度的应用可以将环形复杂度用于基本路径方可以将环形复杂度用于基本路径方法,它可以提供:
程序基本集的独立路径数量;确保所有法,它可以提供:
程序基本集的独立路径数量;确保所有语句至少执行一次的测试数量的上界。
语句至少执行一次的测试数量的上界。
独立路径是指程序中至少引入了一个新的处理语句集合或独立路径是指程序中至少引入了一个新的处理语句集合或一个新条件的程序通路。
一个新条件的程序通路。
采用流图的术语,即独立路径必采用流图的术语,即独立路径必须至少包含一条在本次定义路径之前不曾用过的边。
须至少包含一条在本次定义路径之前不曾用过的边。
nn测试可以被设计为基本路径集的执行过程,但基本路径集测试可以被设计为基本路径集的执行过程,但基本路径集通常并不唯一。
通常并不唯一。
AFreesamplebackgroundfromSlide10第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计计算环形复杂度的方法计算环形复杂度的方法nn环形复杂度以图论为基础,为我们提供了非常有用的软件环形复杂度以图论为基础,为我们提供了非常有用的软件度量。
可用如下三种方法之一来计算环形复杂度:
度量。
可用如下三种方法之一来计算环形复杂度:
控制流图中区域的数量对应于环形复杂度。
控制流图中区域的数量对应于环形复杂度。
给定控制流图给定控制流图GG的环形复杂度的环形复杂度V(G)V(G),定义为定义为V(G)=E-N+2V(G)=E-N+2其中,其中,EE是控制流图中边的数量,是控制流图中边的数量,NN是控制流图中的节点是控制流图中的节点数量。
数量。
给定控制流图给定控制流图GG的环形复杂度的环形复杂度V(G)V(G),也可定义为也可定义为V(G)=P+1V(G)=P+1其中,其中,PP是控制流图是控制流图GG中判定节点的数量。
中判定节点的数量。
AFreesamplebackgroundfromSlide11第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计4.2.3图矩阵图矩阵nn图矩阵是控制流图的矩阵表示形式。
图矩阵是控制流图的矩阵表示形式。
nn图图矩阵是一个方形矩阵,矩阵是一个方形矩阵,其维数等于控制流图的节点数。
其维数等于控制流图的节点数。
矩阵中的矩阵中的每列和每行都对应于标识的节点,矩阵元素对应每列和每行都对应于标识的节点,矩阵元素对应于节点间的边。
于节点间的边。
nn通常,控制流图中的结点用数字标识,边则用字母标识。
通常,控制流图中的结点用数字标识,边则用字母标识。
如果在控制流图中从第如果在控制流图中从第ii个结点到第个结点到第jj个结点有一个标识个结点有一个标识为为xx的边相连接,则在对应图矩阵的第的边相连接,则在对应图矩阵的第ii行第行第jj列有一个列有一个非空的元素非空的元素xx。
AFreesamplebackgroundfromSlide12第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计习题习题nn根据左图给出的程序流程图,根据左图给出的程序流程图,完成以下要求:
完成以下要求:
(11)画出相应的控制流图。
)画出相应的控制流图。
(22)计算环形复杂度。
)计算环形复杂度。
(33)给出相应的图矩阵。
)给出相应的图矩阵。
(44)找出程序的独立路径集合。
)找出程序的独立路径集合。
AFreesamplebackgroundfromSlide13第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计4.3覆盖测试覆盖测试4.3.14.3.1测试覆盖率测试覆盖率4.3.24.3.2逻辑覆盖法逻辑覆盖法4.3.34.3.3面向对象的覆盖面向对象的覆盖4.3.44.3.4测试覆盖准则测试覆盖准则ReturnAFreesamplebackgroundfromSlide14第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计4.3.1测试覆盖率测试覆盖率nn测试覆盖率:
用于确定测试所执行到的覆盖项的百分比。
测试覆盖率:
用于确定测试所执行到的覆盖项的百分比。
其中的覆盖项是指作为测试基础的一个入口或属性,比如其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。
语句、分支、条件等。
nn测试覆盖率可以表示出测试的充分性,在测试分析报告中测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。
但可以作为量化指标的依据,测试覆盖率越高效果越好。
但覆盖率不是目标,只是一种手段。
覆盖率不是目标,只是一种手段。
nn测试覆盖率包括功能点覆盖率和结构覆盖率:
测试覆盖率包括功能点覆盖率和结构覆盖率:
功能点覆盖率大致用于表示软件已经实现的功能与软件需功能点覆盖率大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系。
要实现的功能之间的比例关系。
结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、路径覆盖率等等。
路径覆盖率等等。
AFreesamplebackgroundfromSlide15第四章第四章白盒测试及其用例的设计白盒测试及其用例的设计4.3.2逻辑覆盖法逻辑覆盖法nn根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定根据覆盖目标的不同,逻辑