《软件工程基础胡思康第6章.pptx》由会员分享,可在线阅读,更多相关《软件工程基础胡思康第6章.pptx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、STY高茜高茜 STY软件测试软件测试-白盒测试白盒测试白盒测试(白盒测试(White Box TestingWhite Box Testing),),按照程按照程序内部的结构、逻辑驱动测试程序,通过测序内部的结构、逻辑驱动测试程序,通过测试来检测产品内部动作是否按照设计说明书试来检测产品内部动作是否按照设计说明书的规定正常进行,检验程序中的每条路径是的规定正常进行,检验程序中的每条路径是否都能按预定要求正确工作。否都能按预定要求正确工作。白盒测试的对象主要是白盒测试的对象主要是源程序源程序。是指用代码。是指用代码内部的分支、路径、条件,使程序设计的控内部的分支、路径、条件,使程序设计的控制结
2、构导出测试用例,是软件测试的主要方制结构导出测试用例,是软件测试的主要方法之一。法之一。不要求在计算机上实际执行所测程序,主要以一些人不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试。静态测试大约工的模拟技术对软件进行分析和测试。静态测试大约可以找出可以找出25%-60%25%-60%的逻辑错误的逻辑错误输入一组预先按照一定的测试准则设计的实例数据驱输入一组预先按照一定的测试准则设计的实例数据驱动运行程序,检查程序功能是否符合设计要求,发现动运行程序,检查程序功能是否符合设计要求,发现程序中的错误的过程。程序中的错误的过程。检查程序的内检查程序的内部数据结构是部数
3、据结构是否有效否有效32原则原则所有逻辑值都所有逻辑值都要测试真和假要测试真和假两种情况两种情况14保证一个模块中保证一个模块中的所有路径至少的所有路径至少被测试一次被测试一次检查上、下边界检查上、下边界及可操作范围内及可操作范围内运行的所有循环运行的所有循环“语句覆盖语句覆盖”是一个比较弱的测试标准,它的含义是:选择是一个比较弱的测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。足够的测试用例,使得程序中每个语句至少都能被执行一次。如如,例,例1 1:PROCEDUREPROCEDUREM(VAR AM(VAR A,B B,X X:REAL)REAL);BEGI
4、N BEGIN IF IF(A1)AND(B=0)THEN X:=X/A(A1)AND(B=0)THEN X:=X/A;IF IF(A=2)OR(X1)THEN X:=X+1(A=2)OR(X1)THEN X:=X+1;END END.为使程序中每个使程序中每个语句至少句至少执行一行一次,只需次,只需设计一个能通一个能通过路径路径ace的例子就可以了,例如的例子就可以了,例如选择输入数据入数据为:A=2,B=0,X=3 就可达到就可达到“语句覆盖句覆盖”标准。准。语句覆盖句覆盖 从上例可看出,语句覆盖实际上是很弱的,如果第一从上例可看出,语句覆盖实际上是很弱的,如果第一个条件语句中的个条件语句
5、中的ANDAND错误地编写成错误地编写成OROR,上面的测试用例,上面的测试用例是不能发现这个错误的;又如第三个条件语句中是不能发现这个错误的;又如第三个条件语句中X X1 1误误写成写成X X0 0,这个测试用例也不能暴露它,此外,沿着路,这个测试用例也不能暴露它,此外,沿着路径径abdabd执行时,执行时,X X的值应该保持不变,如果这一方面有错的值应该保持不变,如果这一方面有错误,上述测试数据也不能发现它们。误,上述测试数据也不能发现它们。比比“语句覆盖语句覆盖”稍强的覆盖标准是稍强的覆盖标准是“分支分支覆盖覆盖”(或或称判定覆盖称判定覆盖)标准。含义是:执行足够的测试用例,使标准。含义
6、是:执行足够的测试用例,使得程序中的每一个分支至少都通过一次。得程序中的每一个分支至少都通过一次。A=2,B=1,X=3A=3,B=0,X=1 判定覆盖判定覆盖 判定覆盖判定覆盖 程序中含有判定的语句包括程序中含有判定的语句包括IF-THEN-ELSEIF-THEN-ELSE、DO-WHILEDO-WHILE、REPEAT-UNTILREPEAT-UNTIL等,除了双值的判定语句外,还有多值的判定等,除了双值的判定语句外,还有多值的判定语句,所以语句,所以“分支分支覆盖覆盖”更一般的含义是:使得每一个更一般的含义是:使得每一个分支分支获得每一种可能的结果。获得每一种可能的结果。“分支分支覆盖覆
7、盖”比比“语句覆盖语句覆盖”严格,因为如果每个分支都执严格,因为如果每个分支都执行过了,则每个语句也就执行过了。但是,行过了,则每个语句也就执行过了。但是,“分支分支覆盖覆盖”还还是很不够的,例如例是很不够的,例如例1 1两个测试用例未能检查沿着路径两个测试用例未能检查沿着路径abdabd执执行时,行时,X X的值是否保持不变。的值是否保持不变。一个判定中往往包含了若干个条件,如例一个判定中往往包含了若干个条件,如例1 1的程的程序中,判定序中,判定 (A(A1)AND(B=0)1)AND(B=0)包含了两个条件:包含了两个条件:A A1 1以及以及 B=0B=0,所以可引进一个更强的覆盖标准
8、,所以可引进一个更强的覆盖标准“条件覆盖条件覆盖”。“条件覆盖条件覆盖”的含义是:的含义是:执行足够的测试用例,执行足够的测试用例,使得判定中的每个条件获得各种可能的结果使得判定中的每个条件获得各种可能的结果。例例1 1的程序有四个条件:的程序有四个条件:A A1 1、B=0B=0、A=2A=2、X X1 1 为了达到为了达到“条件覆盖条件覆盖”标准,需要执行足够的测试用例使得标准,需要执行足够的测试用例使得在在a a点有:点有:A A1 1、A1A1、B=0B=0、B0 B0 等等各种结果出现,以及各种结果出现,以及在在b b点有:点有:A=2A=2、A2A2、X X1 1、X1 X1 等等
9、各种结果出现。各种结果出现。现在只需设计以下两个测试用例就可满足这一标准:现在只需设计以下两个测试用例就可满足这一标准:A=2A=2,B=0B=0,X=4(X=4(沿路径沿路径aceace执行执行);A=1A=1,B=1B=1,X=1(X=1(沿路径沿路径abdabd执行执行)。条件覆盖条件覆盖条件覆盖条件覆盖A=2,B=0,X=4A=1,B=1,X=1“条件覆盖条件覆盖”通常比通常比“分支分支覆盖覆盖”强,因为它使一个强,因为它使一个判定中的每一个条件都取到了两个不同的结果,而判定判定中的每一个条件都取到了两个不同的结果,而判定覆盖则不保证这一点。覆盖则不保证这一点。“条件覆盖条件覆盖”并不
10、包含并不包含“分支分支覆盖覆盖”,如对语句,如对语句IF(A IF(A AND B)THEN S AND B)THEN S 设计测试用例使其满足设计测试用例使其满足“条件条件覆盖覆盖”,即即使使A A为真并使为真并使B B为假为假,以及使以及使A A为假而且为假而且B B为真为真,但是它们都但是它们都未能使语句未能使语句S S得以执行。得以执行。针对上面的问题引出了另一种覆盖标准针对上面的问题引出了另一种覆盖标准“分支分支 条件覆盖条件覆盖”,它的含义是:执行足够的测试用例,使,它的含义是:执行足够的测试用例,使得得分支分支中每个条件取到各种可能的值中每个条件取到各种可能的值,并使,并使每个每
11、个分支分支取取到各种可能的结果到各种可能的结果。对例对例1 1的程序,前面的两个例子的程序,前面的两个例子 A=2A=2,B=0B=0,X=4(X=4(沿沿aceace路径路径)A=1A=1,B=1B=1,X=1(X=1(沿沿abdabd路径路径)是是满足这一标准满足这一标准的。的。针对上述问题又提出了另一种标准针对上述问题又提出了另一种标准“条件组条件组合覆盖合覆盖”。它它的含义是:执行足够的例子,使得的含义是:执行足够的例子,使得每个判定中每个判定中条件的各种可能组合都至少出现一次条件的各种可能组合都至少出现一次。显然,满足。显然,满足“条件组合覆盖条件组合覆盖”的测试用例是一定满足的测试
12、用例是一定满足“分支覆分支覆盖盖”、“条件覆盖条件覆盖”和和“分支分支/条件覆盖条件覆盖”的。的。再看例再看例1 1的程序,我们需要选择适当的例子,的程序,我们需要选择适当的例子,使得下面使得下面 8 8种条件组合都能够出现种条件组合都能够出现:1 1)A1,A1,B=0B=0 2 2)A1,B)A1,B0 30 3)A1,)A1,B=0B=04 4)A1,B)A1,B0 50 5)A=2,X1)A=2,X1 6 6)A=2,X1)A=2,X1 7 7)A2,X1)A2,X1 8)A2,X1 8)A2,X1 5 5)、6)6)、7)7)、8 8)四种情况是第二个)四种情况是第二个 IFIF语句
13、的条件组合,而语句的条件组合,而X X的值在该语句之前是要的值在该语句之前是要经过计算的,所以还必须根据程序的逻辑推经过计算的,所以还必须根据程序的逻辑推算出在程序的入口点算出在程序的入口点X X的输入值应是什么。的输入值应是什么。下面设计的四个例子可以使上述下面设计的四个例子可以使上述 8 8种条件组种条件组合至少出现一次:合至少出现一次:A=2A=2,B=0B=0,X=4 X=4 使使 1)1)、5)5)两种情况出现;两种情况出现;A=2A=2,B=1B=1,X=1 X=1 使使 2)2)、6)6)两种情况出现;两种情况出现;A=1A=1,B=0B=0,X=2 X=2 使使 3)3)、7)
14、7)两种情况出现;两种情况出现;A=1A=1,B=1B=1,X=1 X=1 使使 4)4)、8)8)两种情况出现。两种情况出现。上面四个例子虽然满足条件组合覆上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路盖,但并不能覆盖程序中的每一条路径,例如路径径,例如路径acdacd就没有执行,因此,就没有执行,因此,条件组合覆盖标准仍然是不彻底。条件组合覆盖标准仍然是不彻底。路径测试就是设计足够多的测试用路径测试就是设计足够多的测试用例,覆盖被测试对象中的所有可能例,覆盖被测试对象中的所有可能路径。路径。对于对于例例1 1,下面的测试用例则可对,下面的测试用例则可对程序进行全部的路径覆盖
15、。程序进行全部的路径覆盖。测试用例用例 通通过路径路径 A=2、B=0、X=3 aceA=1、B=0、X=1abdA=2、B=1、X=1abeA=3、B=0、X=1acd例例1 1是很简单的程序函数,只有四条路径。但在是很简单的程序函数,只有四条路径。但在实践中,一个不太复杂的程序,其路径都是一个庞实践中,一个不太复杂的程序,其路径都是一个庞大的数字,要在测试中覆盖所有的路径是不现实的。大的数字,要在测试中覆盖所有的路径是不现实的。为了解决这一难题,只得把覆盖的路径数压缩到一为了解决这一难题,只得把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行一次定限度内,例如,程序中的循环体只执行
16、一次。基本基本路径测试就是这样一种测试方法,它在程序路径测试就是这样一种测试方法,它在程序控制图的基础上,通过分析控制构造的环行复杂性,控制图的基础上,通过分析控制构造的环行复杂性,导出基本可执行路径集合,从而设计测试用例的方导出基本可执行路径集合,从而设计测试用例的方法法。设计。设计出的测试用例要保证在测试中程序的每一出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。个可执行语句至少执行一次。前提前提条件:条件:测试测试进入的前提条件是在测试人员已进入的前提条件是在测试人员已经对被测试对象有了一定的了解,基本上明确了被经对被测试对象有了一定的了解,基本上明确了被测试软件的逻辑结构
17、。测试软件的逻辑结构。测试测试过程:过程:过程过程是通过针对程序逻辑结构设计和是通过针对程序逻辑结构设计和加载测试用例,驱动程序执行,以对程序路径进行加载测试用例,驱动程序执行,以对程序路径进行测试。测试结果是分析实际的测试结果与预期的结测试。测试结果是分析实际的测试结果与预期的结果是否一致。果是否一致。在程序控制流图的基础上,通过分析控制构造的在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计环路复杂性,导出基本可执行路径集合,从而设计测试用例。包括以下测试用例。包括以下4 4个步骤和一个工具方法个步骤和一个工具方法:1.1.程序程序的控制流图:的控制流图
18、:描述程序控制流的一种图示方法。描述程序控制流的一种图示方法。2.2.程序圈复杂度:程序圈复杂度:McCabeMcCabe复杂性度量。从程序的环路复杂性可复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。个可执行语句至少执行一次所必须的测试用例数目的上界。3.3.导出测试用例:导出测试用例:根据圈复杂度和程序结构设计用例数据输入根据圈复杂度和程序结构设计用例数据输入和预期结果。和预期结果。4.4.准备测试用例:准备测试用例:确保基本路径集中的每一条路径的
19、执行。确保基本路径集中的每一条路径的执行。工具方法:工具方法:图形图形矩阵:是在基本路径测试中起辅助作用的软矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径件工具,利用它可以实现自动地确定一个基本路径集。集。在介绍基本路径方法之前,必须先介绍一种简单在介绍基本路径方法之前,必须先介绍一种简单的控制流表示方法,即流图。流图是对待测试程序的控制流表示方法,即流图。流图是对待测试程序过程处理的一种表示。流图使用下面的符号描述逻过程处理的一种表示。流图使用下面的符号描述逻辑控制流,每一种结构化构成元素有一个相应的流辑控制流,每一种结构化构成元素有一个相应的流图符号。图
20、符号。顺序结构顺序结构if 结构结构Case 结构结构while 结构结构until 结构结构流图只有二种图形符号流图只有二种图形符号l图中的每一个图中的每一个圆圆称为流图的结点,代表称为流图的结点,代表一条或多一条或多条语句条语句。l流图中的流图中的箭头箭头称为边或连接,代表称为边或连接,代表控制流控制流。任何过程设计都要被翻译成控制流图。任何过程设计都要被翻译成控制流图。在将程序流程图简化成控制流图时,应注意:在将程序流程图简化成控制流图时,应注意:l在选择或多分支结构中,分支的汇聚处应有一个在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。汇聚结点。l边和结点圈定的区域叫做区域,当对区
21、域计数时,边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。图形外的区域也应记为一个区域。1762,38910114,5 76 231 8 4 511 910节点边区域区域:由边和节点封闭起来的区域计算区域:不要忘记区域外的部分待测试程序用流图表示的待测试程序如果判断中的条件表达式是由一个或如果判断中的条件表达式是由一个或多个逻辑运算符多个逻辑运算符 (OR,AND,NAND,(OR,AND,NAND,NOR)NOR)连接的复合条件表达式,则需要改连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。为一系列只有单条件的嵌套的判断。例如例如:1 if 1 if
22、a or a or b b 2 2 x x 3 else 3 else 4 4 y y独立路径:至少沿一条新的边移动的路径独立路径:至少沿一条新的边移动的路径1762,38910114,5路径路径1 1:1-111-11路径路径2 2:1-2-3-4-5-10-1-111-2-3-4-5-10-1-11路径路径3 3:1-2-3-6-8-9-10-1-111-2-3-6-8-9-10-1-11路径路径4 4:1-2-3-6-7-9-10-1-111-2-3-6-7-9-10-1-11对以上路径的遍历,就是至少一次地执行了程序中的所有语句。第一步:画出控制流图第一步:画出控制流图 流程图流程图用
23、来描述程序控制结构。可将流程图映射到一个相应用来描述程序控制结构。可将流程图映射到一个相应的流的流图。在图。在流图中,每一个圆,称为流图的结点,代表一个或流图中,每一个圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句不代表任何语句(例如:例如:if-else-thenif-els
24、e-then结构结构)。由边和结点限定。由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。的范围称为区域。计算区域时应包括图外部的范围。第一步:画出控制流图第一步:画出控制流图 第二步:计算圈复杂度第二步:计算圈复杂度 圈圈复杂度是一种为程序逻辑复杂性提供定量测度复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该的软件度量,将该度量用于计算程序的基本的独立度量用于计算程序的基本的独立路径数目路径数目,为确保所有语句至少执行一次的测试数,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾量的上界。独立路径必须包含一条在定义之前不曾用到的边。用到的边。第
25、二步:计算圈复杂第二步:计算圈复杂度,对应度,对应右图右图中的圈复杂度,计算如下:中的圈复杂度,计算如下:l流图中有四个区域;流图中有四个区域;lV(G)=10V(G)=10条边条边-8-8结点结点+2=4;+2=4;第三步:导出测试用例第三步:导出测试用例 根据根据上面的计算方法,可得出四上面的计算方法,可得出四个独立的路径个独立的路径。(一条独立路径是指,一条独立路径是指,和其他的独立路径相比,至少引入和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程一个新处理语句或一个新判断的程序通路。序通路。V(G)V(G)值正好等于该程序的值正好等于该程序的独立路径的条数。独立路径的条数。
26、)路径路径1:4-14路径路径2:4-6-7-14路径路径3:4-6-8-10-13-4-14路径路径4:4-6-8-11-13-4-14根据根据上面的独立路径,去设计输入数上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。据,使程序分别执行到上面四条路径。第四步:准备第四步:准备测试用例:为了测试用例:为了确保基本路径集确保基本路径集中的每一条路径的执行,根据判断结点给出的条中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测件,选择适当的数据以保证某一条路径可以被测试试到。到。下例程序流程下例程序流程图描述了最多输入图描述了最多输入5050个值(以个值(以11作作为输入结束标志),为输入结束标志),计算其中有效的学计算其中有效的学生分数的个数、总生分数的个数、总分数和平均值。分数和平均值。开始 i=1,n1=n2=0,sum=0Score i-1 AND n20 AND scorei0average=sum/n1average=1 返回FFFTTT12和345和6789101112课件课件P41 P41 给出六个测试用例给出六个测试用例 MMYTHANKYOU!