第08课--白盒测试路径分析测试(基本路径测试)
- 格式:ppt
- 大小:665.50 KB
- 文档页数:63
软件白盒测试-基本路径测试基本路径测试也是一种常用的白盒测试用例设计方法。
在实际工作中,即使一个简单的程序,路径数量往往也比较多,要在测试中覆盖所有的路径是不现实的。
而基本路径测试的方法就是一种简化路径数的测试方法,它是在分析程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证程序的每一个可执行语句至少执行一次。
1.1绘制控制流图控制流图是描述程序控制流的一种图示方法。
控制流图是退化的程序流程图,它是把程序流程图中的每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧。
这种图只描述程序内部的控制流程,完全不表现对数据的具体操作以及分支和循环的具体条件。
因此,它往往把一个简单的if语句与循环语句的复杂性看成是一样的,把嵌套的if语句与case语句的复杂性看成是一样的。
程序中的基本控制结构对应的图形符号如图1.1所示。
图1.1控制结构示意图图中的圆圈为控制流图的一个结点,它表示一个或多个无分支的源代码语句。
在绘制控制流图前,一般先画出程序的流程图,再把流程图映射成控制流图。
例如,有下面的函数。
void sort(int iRecordNum,int iType)1 {2 int x=0;3 int y=0;4 while (iRecordNum-- > 0)5 {6 if(0==iType)7 x=y+2;8 else9 if(1==iType)10 x=y+10;11 else12 x=y+20;13 }14 }其流程图如图1.2所示。
把流程图映射成对应的控制流图,如图1.3所示。
图1.2流程图图1.3控制流图映射关系如下。
一组顺序处理框可以映射为一个单一结点。
控制流图中的箭头表示了控制流的方向,类似于流程图中的流线,一条边必须终止于一个结点,但在选择或多分支结构中分支的汇聚处,即使没有可执行语句也应该绘制一个结点。
白盒测试white-box testing1测试概述白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
在动态分析技术中,最重要的技术是路径和分支测试。
下面要介绍的六种覆盖测试方法属于动态分析方法。
测试方法白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
要求1.保证一个模块中的所有独立路径至少被使用一次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运行所有循环;4.检查内部数据结构以确保其有效性。
白盒测试之基本路径测试法例1请根据下面的程序画出流程图procedure Example(A, B: real; var X: real); beginif (A > 1) and (B = 0) thenX := X / A;if (A = 2) or (X > 1) thenX := X + 1;end图1 例1程序的流程图―白盒‖测试的内容有:对程序模块的所有独立执行路径至少测试一次。
●对所有的逻辑判定,取―真‖与取―假‖的两种情况都至少测试一次。
●在循环的边界和运行的边界限内执行循环体。
●测试内部数据结构的有效性。
该程序的程序流程图如图1所示。
一逻辑覆盖逻辑覆盖是以程序内部的逻辑结构为基础的测试方法,属―白盒‖测试。
这一方法是一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试,要求测试人员对程序的逻辑结构有清楚的了解。
从覆盖源程序的语句的详尽程度分析,大致可以分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
1. 语句覆盖为了暴露程序中的错误,语句覆盖是最起码的测试要求,要求设计足够多的测试用例,使得每一条语句至少被执行一次。
对于例1来说,只要选取a=2,b=0,x=3就可以达到每一条语句至少执行一次的要求。
语句覆盖对程序的逻辑覆盖很少,在例1中,两个判定条件都只测试了条件为真的情况,如果条件为假时处理有误,显然不能发现。
此外,语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。
在例1中,为了满足语句覆盖测试的要求,只需两个判定表达式(a>1)and (b=0) 和(a=2)or (x>1) 都取真值,因此使用上述一组测试数据就够了。
但是如果把程序中的第一个判定表达式中的逻辑运算符and写成o r,或者把第二个判定表达式中的条件写成―x<1‖,使用上边的测试数据则不能查出这些错误。
因此,语句覆盖是很弱的逻辑覆盖标准,为了更充分地测试程序,可以采用下边讲述的逻辑覆盖方法。