软件测试技术PPT第3章 动态测试技术.pptx

上传人:eieieie 文档编号:21713488 上传时间:2023-11-03 格式:PPTX 页数:54 大小:833.57KB
返回 下载 相关 举报
软件测试技术PPT第3章 动态测试技术.pptx_第1页
第1页 / 共54页
软件测试技术PPT第3章 动态测试技术.pptx_第2页
第2页 / 共54页
软件测试技术PPT第3章 动态测试技术.pptx_第3页
第3页 / 共54页
软件测试技术PPT第3章 动态测试技术.pptx_第4页
第4页 / 共54页
软件测试技术PPT第3章 动态测试技术.pptx_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《软件测试技术PPT第3章 动态测试技术.pptx》由会员分享,可在线阅读,更多相关《软件测试技术PPT第3章 动态测试技术.pptx(54页珍藏版)》请在三一文库上搜索。

1、第3章 动态测试技术思维导图 边界值分析法 函数可以理解为从一个集合(函数的定义域)值映射到另一个集合(函数的 值域),定义域和值域可以是其他集合的叉积。边界值分析法测试的重点是从变量的定义域(或值域)来进行分析并设计测试用例。3.1 黑盒测试技术 基本边界值分析为了便于理解,先讨论具有两个变量 x1 和 x2 的函数 F。边界值分析关注的是输入变量的边界,假设程序的错误或缺陷出现在输入变量的极限值附近,依据边界来设计测试用例。这里假设a=x1=b,c=x2=d。边界值分析法3.1 黑盒测试技术 基本边界值分析基本边界值分析基于“单缺陷”假设,即由于缺陷导致的程序失效是由单个变量在其边界值附近

2、取值引起的。所以应取每个输入变量的取值区间内最小值、略高于最小值、正常值、略低于最大值和最大值 5 个值。下面是两个变量的基本边界值分析的测试用例的输入组合(实际上两个变量都取正常值的测试用例保留一个即可):边界值分析法3.1 黑盒测试技术 基本边界值分析对于n个变量的被测程序,每次使除一个以外的所有其他变量取正常值,使剩余的那个变量分别取最小值、略高于最小值、位于或接近中间的正常值、略低于最大值和最大值,对每个变量都重复进行一次。最终得到4n+1个测试用例。基本边界值分析具有局限性。如果被测程序有多个独立的变量,这些变量也是物理量,则很适合用边界值分析。但如万年历中的月份、日期和年三变量之间

3、具有依赖关系,使用边界值分析无法考虑到变量之间的依赖,这样设计的测试用例测试效果不佳。边界值分析法3.1 黑盒测试技术 健壮性边界分析健壮性边界分析是基本边界值分析的一种简单扩展。除了变量的 5 个边界值分析取值以外,还要取一个略超过最大值(max+)的值,以及取一个略小于最小值(min-)的值,以测试超过边界极值时系统会有什么表现。健壮性边界分析主要的价值是观察程序的例外处理情况,其理论测试用例数为 6n1,其中 n 为变量的个数。边界值分析法3.1 黑盒测试技术 最坏情况边界分析最坏情况边界分析基于“多缺陷”假设,即程序的失效是由于两个(或多个)变量值在其边界值附近取值共同引起的。对每个变

4、量,首先取包含最小值、略高于最小值、正常值、略低于最大值和最大值 5 个值构成一个集合,然后对这些集合进行笛卡儿积计算,生成的新集合中的每个元素均是一个测试用例的输入。两个变量的测试用例如下:边界值分析法3.1 黑盒测试技术 最坏情况边界分析最坏情况边界分析更彻底,也意味着花费更多的工作量。对于n变量函数的最坏情况测试,会产生 5n 个测试用例,与基本边界值分析一样,两者也有相同的局限性。除了上述方法之外,还有一种更为极端的边界值分析方法,即健壮最坏情况边界值分析。其测试用例的设计是对每个变量分别取比最小值小、最小值、略高于最小值、正常值、略低于最大值、最大值、略高于最大值共 7 个值构成一个

5、集合,然后对这些变量的取值集合进行笛卡儿积计算,生成的新集合中的每个元素均是一个测试用例的输入。会产生的测试用例个数为 7n,n 为变量的个数。边界值分析法3.1 黑盒测试技术 边界值分析设计测试用例的原则(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。(2)如果输入变量规定了值的个数,则用最大个数、最小个数、比最小个数少 1、比最大个数多 1 的数作为测试数据。(3)边界值分析同样适用于输出变量,根据规格说明的每个输出条件,使用前面的原则(1)和(2)。(4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个

6、元素和最后一个元素来设计测试用例。边界值分析法3.1 黑盒测试技术 边界值分析设计测试用例的原则(5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值来设计测试用例。(6)分析规格说明,找出其他可能的边界条件。(7)分析变量的独立性,以确定边界值分析法的合理性。(8)在取中间值或正常值时,只要取接近取值范围中间的值就可以了。(9)在取比最小值小的值时,根据情况可以取多个,可以取负值、0 和小数。(10)在取比最大值大的值时,根据情况可以取多个,当最大值非指定时,根据业务具体分析。等价类测试法使用等价类作为功能性测试的基础有两个方面考虑:希望所设计的测试用例比较完备,同时又

7、避免测试用例的冗余。等价类的基本思想是对变量(输入或输出变量)划分等价类,根据变量划分成的等价类构成了不同的子集,这些子集的并即是变量的整个集合或全集。这对于测试用例的设计有两点非常重要的意义:子集并成整个集合或全集提供了测试用例设计的完备性;而子集之间的互不相交可保证测试用例设计的一种形式上的无冗余。通过对每个等价类中取一个元素或一个点来作为测试用例,如果等价类划分合理,则可以大大降低测试用例数量和测试用例之间的冗余。3.1 黑盒测试技术 等价类测试法3.1 黑盒测试技术 弱一般等价类测试弱等价类测试用例的设计基于如下因素考虑:基于单缺陷假设 测试用例的个数是变量划分区间最多的那个变量的有效

8、区间个数 测试用例的选取应该考虑分布的均匀这里讨论一个有两个变量 x1 和 x2 的程序 P。输入变量 x1 和 x2 拥有以下边界以及边界内的区间:ax1e,区间为a,b),b,c),c,d),d,e fx2h,区间为f,g),g,h 等价类测试法3.1 黑盒测试技术 弱一般等价类测试从图中可以看出标识为 1,2,3,4,5,6,7,8 的范围的区域均可以理解为一个有效等价类,因为在这些不同的区间内其所有的点具有同样的特性,即符合等价关系的定义。根据弱一般等价类设计原则,对于有两个变量 x1 和 x2 的程序 P 的弱等价类测试用例的个数为 4 个,测试用例分布可以是图中标号为 1,6,3,

9、8 或者是标号为 5,2,7,4 的区域(有效等价类)的任一组。等价类测试法3.1 黑盒测试技术 强一般等价类测试强一般等价类测试与弱一般等价类测试的不同主要在于强等价类测试是基于多缺陷假设,需要从不同的输入或输出变量划分的有效等价类中或区间中取一个值分别构成集合,这些不同变量取值构成的集合的笛卡儿积中的每个元素就对应一个强一般等价类的测试用例的输入。上图中,变量 x1 和 x2 在其有效区间构成的集合是:等价类测试法3.1 黑盒测试技术 强一般等价类测试强一般等价类测试具有一定的完备性:一是保证测试用例覆盖所有的有效等价类,二是输入或输出变量每个有效区间或每个有效等价类之间的每个组合均能取一

10、个测试用例。特别强调的是等价类划分既可以基于输入变量进行,也可以基于输出变量进行。等价类测试法3.1 黑盒测试技术 弱健壮等价类测试弱健壮等价类测试是在弱一般等价类测试的基础上考虑了无效等价类的情况。测试用例的设计思想仍然是考虑了单缺陷假设。其测试用例由两个部分构成:弱一般等价类部分的测试用例。额外弱健壮部分的测试用例。对于 n 个变量而言,在这 n 个变量中每次取一个变量,分别取这个变量的所有可能的无效值和其他 n-1 个变量取有效值组合来构成测试用例的输 入,保证如此取法涉及每个变量即每个变量取一次。等价类测试法3.1 黑盒测试技术 弱健壮等价类测试右图中弱健壮等价类测试用例来自以下区域,

11、包含两个部分:弱一般的部分,即在 1,6,3,8 这 4 个区域内或在 5,2,7,4 这 4 个区域内分别取一个测试用例,加上弱健壮部分即在 9,10,11,12,13,14,15,16,17,18,19,20 这 12 个区域内分别取一个测试用例,构成测试用例集的测试用例输入或输出组合。等价类测试法3.1 黑盒测试技术 强健壮等价类测试强健壮等价类测试是在强一般等价类测试的基础上考虑无效等价类的情况。测试用例的设计思想仍然考虑多缺陷假设。其测试用例由两个部分构成:强一般等价类部分的测试用例。额外强健壮部分的测试用例:是在“额外弱健壮部分的测试用例”的基础上进一步考虑 n 个变量中两个或两个

12、以上变量或所有变量都无效的情况下等价类内的取值。等价类测试法3.1 黑盒测试技术 强健壮等价类测试右图中标有数字的区域均是测试用例的取值区域,其中的 1,2,3,4,5,6,7,8 为强一般等价类部分的测试用例取值区域;9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 为额外强健壮部分的测试用例取值区域 等价类测试法3.1 黑盒测试技术 等价类方法设计原则 在输入或输出条件规定了取值范围或取值个数的情况下,可以确立一个有效等价类和两个无效等价类。在输入或输出条件规定了输入或输出值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个

13、无效等价类。在输入或输出条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。在规定了输入数据的一组值(假定 n 个),并且程序要对每一个输入值分别处理的情况下,可确立 n 个有效等价类和一个无效等价类。等价类测试法3.1 黑盒测试技术 等价类方法设计原则 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。在确知已划分的等价类中,各元素在程序中的处理方式的不同,则应再将该等价类进一步地划分为更小的等价类。一个输入条件或一个输出条件均可能划分成多个有效等价类和多个无效等价类。错误推测法错误推测法就是基于经验和直觉推测程序中

14、所有可能存在的各种错误或缺陷,有针对性地设计测试用例的方法。错误推测法的基本思想是列举出程序中所有可能有的错误或缺陷和容易发生错误或缺 陷的特殊情况,根据这些推测来设计测试用例。错误推测法本身不是一种测试技术,而是一 种可以应用到所有测试技术中产生更加有效测试的一种技能,总之,用好错误推测法应该具备如下条件:充分地理解业务;具有开发和测试的实际经验;掌握全面的测试技术。3.1 黑盒测试技术 因果图法在边界值分析法和等价类划分法中,未考虑输入条件之间的联系、相互组合。考虑描述多种条件的组合,这些组合相应地会产生多个行动,可以考虑根据这些组合和行动来设计测试用例,这就需要利用因果图。因果图法的特点

15、:考虑输入条件间的组合关系;考虑输出条件对输入条件的信赖关系,即因果关系;测试用例发现错误或缺陷的效率高;能检查出功能说明书(规约)中的某些不一致或遗漏;因果图方法最终生产的就是判定表,它适合于检查程序输入条件和各种组合情况3.1 黑盒测试技术 因果图法(1)分割功能说明书。对于规模比较大的程序来说,由于输入条件的组合数太大,所以很难 整体上使用一个因果图。可以把它划分为若干部分,然后分别对每个部分使用因果图。例如,可以把一个系统的功能分解成不同子系统的功能,把子系统的功能分解成不同模块的功能,针对每个模块分析因果图。(2)识别出“原因”和“结果”,并加以编号。所谓的原因,是指输入条件或输入条

16、件的等价类;而结果则是指输出条件或输出条件的等价类。每个原因或结果都对应于因果图中 的一个节点。当原因或结果成立(或出现)时,相应的节点取值为 1,否则为 0。(3)根据功能说明书中规定的原因和结果之间的关系画出因果图的基本符号。3.1 黑盒测试技术 因果图法3.1 黑盒测试技术 右图中左边的节点表示原因,右边的节点表示结果。(4)根据功能说明在因果图中加上约束条件。由于语法或环境限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。如下图所示:因果图法3.1 黑盒测试技术(5)根据因果图画出判定表。画判定表的方法一般比较简单

17、,可以把所有原因作为输入条件,每一项原因(输入条件)安排为一行,而所有的输入条件的组合一一列出(真值为 1,假值为 0),对于每一种条件组合安排为一列,并把各个条件的取值情况分别添入判定表中对应的每一个单元格中。(6)为判定表的每一列设计一个测试用例,即为从因果图中导出的判定表中的每一列设计一 个测试用例。采用因果图分析的一个好处是可以清晰地归纳出输入条件之间的限制关系,直接将某些条件的组合忽略掉。决策表测试法3.1 黑盒测试技术 决策表的组成描述如下:条件桩(condition stub):列出了问题的所有条件。通常认为列出条件的先后次序无关紧要。行动桩(action stub):列出了所有

18、可能采取的操作。这些操作之间的排列先后顺序没有约束。条件条目(condition item):列出针对各条件桩的所有可能取值,这些值可能为真假值或其他取值。行动条目(action item):列出在条件条目下的各种取值情况应该采取的动作或操作。规则:任何一个条件组合的特定取值及其相应要执行的操作。决策表测试法3.1 黑盒测试技术 如图给出了决策表的一个例子,共有 6 个测试用例,其中的 X 表示行动桩对应的操作有效,即如果 c1、c2 和 c3 都为真,则采取行动 a1 和 a2。在 c1 为真,c2 为假的条件下,规则中的 c3 条目叫作“不关心”条目。不关心条目有两种主要解释:条件无关或条

19、件不适用或此条件不需要考虑。决策表测试法3.1 黑盒测试技术 决策表的设计建立在软件规格说明的基础上,其设计基本步骤如下:(1)根据规约分析条件个数和条件的取值,决定用有限条目的决策表还是用扩展条目的决策表。(2)分析理论规则的个数。假如用有限条目的决策表设计,每个条件取“真”和”假”两个值,那么对于 n 个条件的决策表规则数为 2n 个;假如用扩展条目的决策表设计,规则的个数可以根据不同变量划分的等价类个数的积及结合其他方法来确定。(3)列出所有可能的行动桩。(4)列出所有的条件条目和行动条目,并考虑“不可能”条目和”不关心”条目。(5)根据规则完成测试用例的设计。(6)评审决策表和测试用例

20、集。Use Case 法(场景法)现在的软件几乎都是用事件触发来控制流程的,像 GUI 软件、游戏软件等事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。在使用场景法测试一个软件的时候,测试流程按照一定的事件流正确地实现某个软件的功能时,这个流称为该软件功能的基本流;而凡是出现故障或缺陷或例外的流程,就称之为备选流。用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流,也就是说,场景是由基本流和备选流组成。3.1 黑盒测试技术 Use Case 法(场景法)3.1 黑盒测试技术 如图所示,直黑线表示基本流,是测试用例对应的最简单的路径。备

21、选流用带有弧线箭头线表示。可以说基本流就是正常的业务流;备选流就是那些非正常的,即被中断的或是意外的业务流。如图可以确定以下不同的用例场景:场景 1:基本流;场景 2:基本流、备选流 1;基本流;场景 3:基本流、备选流 1、备选流 2;场景 4:基本流、备选流 3;基本流;场景 5:基本流、备选流 3、备选流 1;基本流;.Use Case 法(场景法)3.1 黑盒测试技术 场景法设计步骤(1)根据说明书或规约,分析出系统或程序功能的基本流及所有可能的备选流。(2)根据基本流和各项备选流设计不同的场景。(3)对每一个场景生成相应的逻辑测试用例。(4)根据逻辑测试用例设计实际(物理)测试用例。

22、(5)对生成的测试用例集进行评审,基本的覆盖指标是基本流和所有的备选流在所设计的场景中至少覆盖一次。正交实验法3.1 黑盒测试技术 拉丁方用 n 个不同的拉丁字母排成一个 n 阶方阵(n26),如果每行的 n 个 字母均不相同,每列的 n 个字母均不相同,则称这种方阵为 n*n 拉丁方或 n 阶拉丁方,即每个字母在任一行、任一列中只出现一次。正交拉丁方设有两个 n 阶的拉丁方,如果将它们叠合在一起,恰好出现 n2 个不同的有序数对,则称为这两个拉丁方为互相正交的拉丁方,简称正交拉丁方。3阶拉丁方如下:正交实验法3.1 黑盒测试技术 在利用决策表或因果图来设计测试用例时,作为输入条件的原因与输出

23、结果之间的因果关系,有时很难从软件需求规格说明中得到。为了有效地、合理地减少测试的工时与费用,可利用正交实验法进行测试用例的设计。下面通过一个例子来说明:为提高某化工产品的转化率,选择了三个有关因子进行条件试验:反应温度 A,反应时间 B,用碱量 C,并确定了它们的实验范围如下。A:8090 B:90150 分钟 C:57 正交实验法3.1 黑盒测试技术 这里对因子 A、B 和 C 在试验范围内都选了三个水平。A:A1=80,A2=85,A3=90;B:B1=90 分钟,B2=120 分钟,B3=150 分钟;C:C1=5,C2=6,C3=7。这个三因子三水平的条件试验,通常有两种试验方法:全

24、面实验法:取三因子所有水平之间的组合,缺点是当因子数目多时,实验量非常大。固定法:变化一个因子而固定其他因子,如首先固定 B、C 于 B1、C1,使 A 变化,得出结果 A3最好,继续固定A、C.最后得到最好的工艺条件是 A3B2C2。缺点是实验方法不全面,且单个数据的简单比较不能剔除误差,必然造成结论的不稳定。正交实验法3.1 黑盒测试技术 考虑兼顾这两种试验方法的优点,从全面试验的点中选择具有典型性、代表性的点,使实验点在实验范围内分布得很均匀,能反映全面情况。上例中,对应于 A 有 A1、A2、A3 共 3 个平面,对应于 B、C 也各有 3 个平面,共 9 个平面。则这 9 个平面上的

25、试验点都应当一样多,即对每个因子的每个水平都要同等看待。具体来说,每个平面上都有 3 行、3 列,要求在每行、每列上的点一样多,这符合正交拉丁方的思想。测试用例如图所示,试验点用表示。正交实验法3.1 黑盒测试技术(1)提取功能说明,构造因子状态(水平)表。利用正交实验设计方法来设计测试用例时,首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把它们当作因子;而把各个因子的取值当作状态(水平)。(2)加权筛选,生成因素分析表。对因子与状态的选择可按其重要程度分别加权。(3)利用正交表构造测试数据集。利用正交实验设计方法设计测试用例与使用等价类划分、边界值分析、因果图等方法

26、相 比,具有以下优点:节省测试工作工时;可控制生成的测试用例数量;测试用例具有一定的 覆盖率。正交实验法3.1 黑盒测试技术 行数(Runs):正交表中行的个数,即实验的次数,也是通过正交实验法设计的测试用例的个数。因素数(Factors):正交表中列的个数,即要测试的功能点。状态或水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从 0 到“水平数-1”或从 1 到“水平数”,即要测试功能点的输入条件。正交表的形式:L 行数(水平数因素数)如:L8(27),其中 7 为此表列的数目(最多可安排的因子数);2 为因子的水平数;8 为此表行的数目(实验次数)。黑盒测

27、试方法选择的策略3.1 黑盒测试技术(1)首先考虑等价类划分,包括输入条件和输出条件的等价类划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法。可以充分利用不同的等价类方法,最好既考虑有效的等价类,也考虑无效的等价类。(2)在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计出的测试用例发现软件缺陷的能力最强。但是,边界值法没有考虑变量之间的依赖关系,所以,如果被测软件的变量有比较严密的逻辑关系,最好在使用边界值法的同时考虑使用决策表和因果图之类的方法。(3)可以用错误推测法追加一些测试用例作补充,这需要依靠测试工程师的智慧和经验。黑盒测试方法选择的策略3.1 黑

28、盒测试技术(4)如果软件的功能说明中含有输入条件的组合情况,也就是输入变量之间有很强的依赖关系,则一开始就可选用因果图法或决策表法。但是不要忘记用边界值法或其他 方法设计测试用例作补充。(5)如果被测软件的业务逻辑清晰,同时又是系统级别的测试,那么可以考虑用场景法来设计测试用例。涉及系统级别的测试时,在考虑使用场景法的同时,理解需求规约尤为重要。在分析测试是否达到了所有的功能点覆盖时,功能点的划分要根据具体情况划分得越细越好,但要考虑每个功能的高内聚性和低耦合性。同时,综合考虑使用其他测试方法。(6)对于参数配置类的软件,选用正交试验法可以达到测试用例数量少且分布均匀的目的。白盒测试概念3.2

29、 白盒测试技术 白盒测试是一种可视的测试软件的方法,即它把测试对象看作一个透明的盒子,测试人员要了解程序结构和处理过程,按照程序内部逻辑测试程序,检查程序中的每条通路是否按照预定要求正确工作。白盒测试的主要特点是它主要针对被测程序的源代码,测试者可以完全不考虑程序的功能,所以,如果需求规约中的功能没有实现,那么白盒测试很难发现。白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z 路径覆盖、程序变异以及程序控制流分析、数据流分析等。白盒测试主要用于单元测试、集成测试及其回归测试,但实际上白盒测试的思想也可以 用于系统级别的测试。白盒测

30、试概念3.2 白盒测试技术 在白盒测试过程中,程序员通常要开发桩模块和驱动模块来配合白盒测试的进行。驱动模块就是用于触发被测模块的一个软件模块,桩模块就是能够代替被测模块所调用的软件模块的程序,可以模拟实际组件行为的组件或对象。桩模块和驱动模块通常被看作是随时可以抛弃的代码,但是这些代码往往要被充分使用,最好对桩代码和驱动代码进行配置管理。逻辑覆盖测试法3.2 白盒测试技术 结构测试是依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成测试。结构测试中的一个重要问题是测试进行到什么地步就达到要求,可以结束测试了。这就是说需要给出结构测试的覆盖准则。语句覆盖 语句覆盖的含义是在测试时,首先设

31、计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次。语句覆盖是比较弱的覆盖原则。在测试被测程序中,除去对检查不可执行语句有一定作用外,语句覆盖并没有排除被测程序包含错误的风险。逻辑覆盖测试法3.2 白盒测试技术 判定(判断)覆盖 按判定覆盖准则进行测试是指设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均被满足。判定覆盖又称为分支覆盖或判断覆盖。只做到判定覆盖仍无法确定判断内部条件的错误。因此,需要有更强的逻辑覆盖准则去检验判断内的条件。条件覆盖 条件覆盖是指设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能

32、取值至少满足一次。覆盖了条件的测试用例不一定覆盖了分支。逻辑覆盖测试法3.2 白盒测试技术 判定-条件覆盖 判定-条件覆盖要求设计足够的测试用例,使得判断中每个条件的所有可能至少满足一次,并且每个判断本身的判定结果也至少出现一次。判断-条件覆盖的不足之处:表面上看来,判断-条件覆盖测试了所有条件的取值,但实际上并非如此,而是某些条件掩盖了另一些条件(由于多重条件判定)。条件组合覆盖 条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。条件组合覆盖的不足之处:固然覆盖了条件组合,同时也覆盖了所有分支,但仅覆盖了部分路径,而路径能否全面覆盖在软件测试

33、中是个重要问题。逻辑覆盖测试法3.2 白盒测试技术 路径覆盖 按路径覆盖要求进行测试是指设计足够多的测试用例,要求覆盖程序中所有可能的路径。在实际问题中,一个不太复杂的程序,其路径数都是一个庞大的数字,要在测试中覆盖这样多的路径是无法实现的。为解决这一难题,只得把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行有限次。其实,即使对于路径数很有限的程序已经做到了路径覆盖,仍然不能保证被测程序的正确性。由此看出,各种结构测试方法都不能保证程序的正确性。逻辑覆盖测试法3.2 白盒测试技术 基路径算法讨论 为了解决难以覆盖所有可执行路径这一难题,需要把测试用例覆盖的路径数压缩到一定限度内,并且

34、被覆盖的这些路径应该具有代表性。假设把程序图中的每个可执行路径看成向量空间的一个向量,程序图中所有的可执行路径将构成一个向量空间,向量空间中的向量可以是无穷多。如果能从由所有可执行路径构成的向量空间中找到该向量空间的一个基,那么程序图的所有可执行路径将能由这个基中的向量来线性表示。因此要解决的问题是:基路径中的独立路径个数,也就是向量空间的基中的向量个数。基路径中的路径如何得到。也就是如何得到向量空间的一个基。逻辑覆盖测试法3.2 白盒测试技术 基路径算法讨论 解决第一个问题的办法是根据程序图的环路复杂性(也称程序图的独立路径数)公式来计算:其中的 e 为程序图的边数,n 为程序图的节点数。V

35、G就是基路径中的独立的路径个数。解决第二个问题的办法是执行寻找基路径的算法,算法描述如下:根据程序图,利用公式:VG=e n 2 得到独立路径数;根据程序图找到一条基线路径,这条基线路径不唯一。基线路径应该满足:是从源节点开始到汇节点结束的路径;尽量长;尽量多经过出度大于或等于 2 的节点;基线路径对应的业务最好是执行正常的业务流。逻辑覆盖测试法3.2 白盒测试技术 基路径算法讨论 以这条基线路径为基础,从这条基线路径的第一个节点开始,从头往后搜索以找到第一个出度大于或等于 2 的节点(包括第一个节点本身),以这个节点为轴进行旋转,将这个节点在基线路径中的儿子节点和不在基线路径中的其他儿子节点

36、互换,如果不在基线路径中的其他儿子节点数大于一个,则任意选择一个即可,同时,尽量多地保留基线路径中的其他节点不变(称为回溯),这样就得到了另外一条路径。下一步一般情况下仍然是以基线路径为基础,从刚才找到的出度大于或等于的节点开始往后继续寻找,执行的同样流程得到其他路径。如果基线路径中的出度大于或等于 2 的节点全部找到,并根据的流程得到了其他所有可能的路径,这时路径总数仍然没有达到 VG的值,则可以把以基线路径旋转 得到的路径看成另外一个基线路径,同样执行一直到得到的路径数量等于 VG为止。逻辑覆盖测试法3.2 白盒测试技术 基路径算法讨论实际上很多时候得到了基路径之后会发现基路径中有些路径不

37、符合业务逻辑,也就是说将这些路径和业务逻辑进行关联的时候,这些路径是不可能执行的。在这种情况下,有两种不同的处理方法:找到和业务逻辑进行关联不可行的路径,在这个路径中找到出度大于或等于 2 的节点按照以上进行旋转得到另外的路径,直到得到的这个路径符合业务逻辑为止。找到和业务逻辑进行关联不可行的路径,通过人工干预得到一条符合业务逻辑的路径。程序插装3.2 白盒测试技术 程序插装方法简单地说是借助往被测程序中插入操作来实现测试目的的方法。程序插装的基本原理是在不破坏被测试程序原有逻辑完整性的前提下,在程序的相应位置上插入一些探针。通过探针的执行并输出程序的运行特征数据。基于对这些特征数据的分析,揭

38、示程序的内部行为和特征。如果想要了解一个程序在某次运行中所有可执行语句被覆盖(或称被遍历)的情况,或 是每个语句的实际执行次数,最好的办法是利用插装技术。设计程序插装程序时需要考虑的问题包括:(1)探测哪些信息。(2)在程序的什么部位设置探测点。(3)需要设置多少个探测点。其他白盒测试方法简介3.2 白盒测试技术 域测试域测试(Domain Testing)是一种基于程序结构的测试方法。如果程序的控制流有错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫作域错误。域测试是指主要针对域错误进行的程序测试。域测试的“域”是指程序的输入空间。域测试方法基于对输入空间的分析。

39、域测试有两个致命的弱点:一是为进行域测试对程序提出的限制过多,二是当程序存在很多路径时,所需的测试点也就很多。其他白盒测试方法简介3.2 白盒测试技术 符号测试符号测试的基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,这一方法也是因此而得名。这里所说的符号值可以是基本符号变量值,也可以是这些符号变量值的一个表达式。符号测试可以看作是程序测试和程序验证的一个折中方法。一方面,它沿用了传统的程序测试方法,通过运行被测程序来验证它的可靠性。另一方面,由于一次符号测试的结果代 表了一大类普通测试的运行结果,实际上是证明了程序接受此类输入,所得输出是正确的,还是错误的。目前符号测试存在一

40、些未得到圆满解决的问题,分别是:1)分支问题;2)二义性问题;3)大程序问题白盒测试方法选择的策略3.2 白盒测试技术 在白盒测试中,使用各种测试方法的综合策略参考如下:在测试中,应尽量先用人工或工具进行静态结构分析。测试中可采取先静态后动态的组合方式:先进行静态结构分析、代码检查并进行静态质量度量,再进行覆盖率测试。利用静态分析的结果作为引导,通过代码检查和动态测试的方式对静态分析结果进行进一步的确认,使测试工作更为有效。覆盖率测试是白盒测试的重点,一般可使用基路径测试法达到语句覆盖标准;对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率。在不同的测试阶段,测试的侧重点不同:在单元测试阶段,以代码检查、逻辑覆盖为主;在集成测试阶段,需要增加静态结构分析、静态质量度量;在系统测试阶段,应根据黑盒测试的结果,采取相应的白盒测试。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育


经营许可证编号:宁ICP备18001539号-1