您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第二章软件测试技术(白盒)
第二章软件测试技术沈阳师范大学软件学院1软件工程系孟磊netmenglei@126.com本章内容白盒测试技术黑盒测试技术沈阳师范大学软件学院2本节内容2.1白盒测试技术2.1.1静态测试方法2.1.2逻辑覆盖测试2.1.3基本路径测试2.1.4其他白盒测试技术沈阳师范大学软件学院32.1.1静态测试方法白盒测试概述程序的结构和处理过程像白盒子一样透明。允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。沈阳师范大学软件学院4输入输出2.1.1静态测试方法桌前检查由程序员自己检查编写好的程序。程序员在程序通过编译之后,进行单元测试设计之前,对源程序代码进行分析、检验,并补充相关的文档,目的是发现程序中的错误。范例习题沈阳师范大学软件学院52.1.1静态测试方法代码审查代码审查是由若干程序员和测试员组成一个审查小组,通过阅读、讨论和争议,对程序进行静态分析的过程。沈阳师范大学软件学院62.1.1静态测试方法代码审查代码审查一般分如下七步:1.计划2.概述3.准备4.审查会议5.审查报告6.返工7.跟进沈阳师范大学软件学院72.1.1静态测试方法代码走查走查与代码审查基本相同,其过程分为两步。第一步也把材料先发给走查小组每个成员,让他们认真研究程序,然后再开会。开会的程序与代码审查不同,不是简单地读程序和对照错误检查表进行检查,而是让与会者“充当”计算机,即首先由测试组成员为被测程序准备一批有代表性的测试用例,提交给走查小组。走查小组开会,集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程序的踪迹,供分析和讨论用。沈阳师范大学软件学院82.1.2逻辑覆盖测试逻辑覆盖测试•语句覆盖•判定覆盖•条件覆盖•判定-条件覆盖•条件组合覆盖沈阳师范大学软件学院92.1.2逻辑覆盖测试逻辑覆盖沈阳师范大学软件学院10(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdceL1(ace)={(A1)and(B=0)}and{(A=2)or(X1)}2.1.2逻辑覆盖测试逻辑覆盖沈阳师范大学软件学院11(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdceL2(abd)=not{(A1)and(B=0)}andnot{(A=2)or(X1)}L1(ace)2.1.2逻辑覆盖测试逻辑覆盖沈阳师范大学软件学院12(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdceL3(abe)=not{(A1)and(B=0)}and{(A=2)or(X1)}L1(ace)L2(abd)2.1.2逻辑覆盖测试逻辑覆盖沈阳师范大学软件学院13(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdceL4(acd)={(A1)and(B=0)}andnot{(A=2)or(X1)}L1(ace)L2(abd)L3(abe)2.1.2逻辑覆盖测试逻辑覆盖路径约定:a,b,c,d,e(如上图所示)判断条件约定:T1:A1T2:B=0T3:A=2T4:X1沈阳师范大学软件学院142.1.2逻辑覆盖测试语句覆盖每一可执行语句至少执行一次。选择路径L1当前测试用例:A=2,B=0,X=4.沈阳师范大学软件学院15问题:若AND错写为OR,或X1错写为X1,或OR错写为AND,仍可覆盖所有4条语句。无法发现判断中逻辑运算的错误。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdce2.1.2逻辑覆盖测试判定覆盖在⑴的基础上,每个判定的真、假分支至少执行一次。选择路径L4和L3当前测试用例:A=3,B=0,X=3(满足A1,B=0;A2,X1)A=2,B=1,X=2(满足A1,B0;A=2,X1)沈阳师范大学软件学院16问题:若X1错写为X1,仍可得到同样结果。不一定能发现判断的条件中存在的错误。(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdce2.1.2逻辑覆盖测试条件覆盖在(2)基础上,每个判定的每个条件的可能取值至少执行一次沈阳师范大学软件学院17(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdceA1,取真值为T1,取假值为T1B=0,取真值为T2,取假值为2TA=2,取真值为T3,取假值为3TX1,取真值为T4,取假值为4TT1andT2T3orT42.1.2逻辑覆盖测试条件覆盖沈阳师范大学软件学院18测试用例通过路径条件取值覆盖分支2,1,1L3T1T2T3T4b,e1,0,2L3T1T2T3T4b,e(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdce2.1.2逻辑覆盖测试判定-条件覆盖•即判定覆盖条件覆盖,即同时考虑条件的组合值及判定结果的检验。沈阳师范大学软件学院19测试用例通过路径条件取值2,0,4L1(ace)T1T2T3T41,1,1L2(abd)T1T2T3T4(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdce问题:某些条件可能掩盖另一些条件。不一定能发现逻辑表达式中的错误。如何彻底检查所有条件的取值?2.1.2逻辑覆盖测试判定-条件覆盖沈阳师范大学软件学院20andorA1TB=0TX=X/ATFFA=2TFX1FX=X+12.1.2逻辑覆盖测试条件-组合覆盖•每个判定表达式中条件的各种可能组合都至少执行一次。沈阳师范大学软件学院21•全部可能的条件组合为:①A1,B=0(T1T2)②A1,B0(T1T2)③A1,B=0(T1,T2)④A1,B0(T1T2)⑤A=2,X1(T3,T4)⑥A=2,X1(T3T4)⑦A2,X1(T3,T4)⑧A2,X1(T3T4)(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdce测试用例通过路径覆盖条件覆盖组合号2,0,4L1(ace)T1T2T3T4①⑤2,1,1L3(abe)T1T2T3T4②⑥1,0,3L3(abe)T1T2T3T4③⑦1,1,1L2(abd)T1T2T3T4④⑧2.1.3基本路径测试基本路径测试上节的例子是个比较简单的程序段,只有两条路径。但在实际问题中,即使一个不太复杂的程序,其路径的组合都是一个庞大的数字。如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次。沈阳师范大学软件学院222.1.3基本路径测试程序的控制流图控制流图是描述程序控制流的一种图示方式。其中基本的控制结构对应的图形符号如下图所示。在下图的图形符号中,圆圈称为控制流图的一个结点,它表示一个或多个无分支的语句或源程序语句。沈阳师范大学软件学院232.1.3基本路径测试程序的控制流图符号○为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。沈阳师范大学软件学院242.1.3基本路径测试程序的控制流图下图左所示的是一个程序的流程图,它可以映射成图右所示的控制流图。沈阳师范大学软件学院252.1.3基本路径测试程序的控制流图流图中用谓词结点来表示简单条件判断,即谓词结点不允许含有复合条件。对于程序(或流程图)中的复合条件,应将其转化为多个简单条件判断,在流图中用相应的谓词结点加以表示。沈阳师范大学软件学院262.1.3基本路径测试程序的环路复杂性程序的环路复杂性(CyclomaticComplexity)又称为圈复杂性,其值等于流图中的区域个数。在进行基本路径测试时,确定了程序的环路复杂性,则可在其基础上确定程序基本路径集合的独立路径数目,这个数目是确保程序中每条可执行语句至少执行一次的测试用例数目的最小值。独立路径是一条含有以前未处理的语句或判断的路径,在流图中,独立路径表现为至少含有一条其他独立路径中均没有的边的路径。沈阳师范大学软件学院272.1.3基本路径测试程序的环路复杂性上图所示的流图含有4个区域,故其对应的程序的环路复杂性度量V(G)为4,程序有以下4条独立路径。路径1:1—11路径2:1—2—3—4—5—10—1—11路径3:1—2—3—6—8—9—10—1—11路径4:1—2—3—6—7—9—10—1—11沈阳师范大学软件学院282.1.3基本路径测试程序的环路复杂性•可由此设计测试用例,覆盖以上4条独立路径,则可使程序中的所有可执行语句和所有判断的真、假分支至少执行一次。•也可利用以下公式计算程序的环路复杂性度量V(G)。V(G)=E-N+2公式中的E代表流图中的边数,N代表流图中的结点数。如图4-3(b)所示的流图中,边数为11,结点数为9,故V(G)=11-9+2=4。沈阳师范大学软件学院292.1.3基本路径测试程序的环路复杂性•此外,还可利用流图中的谓词结点数来计算环路复杂性度量V(G)。V(G)=P+1公式中的P为流图中的谓词结点数。如图所示的流图中,谓词结点数为3,故V(G)=3+1=4。若能事先确定程序中的简单条件判断的个数(即等于流图中的谓词结点数),则可在不画出流图的情况下确定程序的环路复杂性。沈阳师范大学软件学院302.1.3基本路径测试计算程序环路复杂性进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。所谓独立路径,是指包括若干未曾处理的语句或条件的一条路径。沈阳师范大学软件学院312.1.3基本路径测试计算程序环路复杂性基本路径集不是惟一的,对于给定的控制流图,可以得到不同的基本路径集。通常环路复杂性可用以下3种方法求得。•将环路复杂性定义为控制流图中的区域数。•设E为控制流图的边数,N为图的结点数,则定义环路的复杂性为V(G)=E−N+2。•若设P为控制流图中的判定结点数,则有V(G)=P+1。沈阳师范大学软件学院322.1.3基本路径测试基本路径测试法步骤基本路径测试法适用于模块的详细设计及源程序,其主要步骤如下。•以详细设计或源代码作为基础,导出程序的控制流图。•计算得到的控制流图G的环路复杂性V(G)。•确定线性无关的路径的基本集。•生成测试用例,确保基本路径集中每条路径的执行。沈阳师范大学软件学院332.1.3基本路径测试基本路径测试法步骤范例:习题:沈阳师范大学软件学院342.1.4其他白盒测试技术域测试基域测试是一种基于程序结构的测试方法。域测试正是在分析输入域的基础上,选择适当的测试点以后进行测试的。沈阳师范大学软件学院352.1.4其他白盒测试技术符号测试符号测试的基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,这一方法也因此而得名。沈阳师范大学软件学院362.1.4其他白盒测试技术程序变异测试程序变异方法是一种错误驱动测试。所谓错误驱动测试方法,是指该方法是针对某类特定程序错误的。经过多年的测试理论研究和软件测试的实践,人们逐渐发现要想找出程序中所有的错误几乎是不可能的。比较现实的解决办法是将错误的搜索范围尽可能地缩小,以利于专门测试某类错误是否存在。错误驱动测试主要有两种,即程序强变异和程序弱变异。沈阳师范大学软件学院37
本文标题:第二章软件测试技术(白盒)
链接地址:https://www.777doc.com/doc-1493711 .html