testing and SQA_动态白盒测试

一、软件测试技术:

黑盒:在不知道程序内部结构,只知道程序结构的情况下采用的测试技术或策略。

白盒:在知道程序内部结构的情况下采用的测试技术或策略。

两种测试方法从不同的角度出发,反映了软件的不同侧面,也试用于不同的开发环境。


testing and SQA_动态白盒测试_第1张图片

二、白盒法又称为逻辑覆盖法,目前常用的覆盖法:

    技巧:条件组合覆盖>判定覆盖>语句覆盖

          路径覆盖>判定覆盖>语句覆盖

1、语句覆盖——每个语句至少执行一次

Test case :  A=2 , B=0 , X=4. 

testing and SQA_动态白盒测试_第2张图片

2、判定覆盖(分支覆盖)——每个判定的分支至少执行一次

Test cases:①A=3 , B=0 , X=3②A=2 , B=1 , X=1

testing and SQA_动态白盒测试_第3张图片

3、条件覆盖——即一个判断语句中往往包含了若干条件。通过给出测试用例,使判断中的每个条件都获得各种可能的结果。

Test cases:  ①A=2 , B=0 , X=4(满足A>1, B=0; A=2, X>1)

             A=1,B=1, X=1

testing and SQA_动态白盒测试_第4张图片

4、判断/条件覆盖——选取足够多的测试数据,使判断中每个条件都取得各种可能值,并使每个判断表达式也取到各种可能的结果。

testing and SQA_动态白盒测试_第5张图片

5、条件组合覆盖——使得每个判断中条件的各种可能组合都至少出现一次。

testing and SQA_动态白盒测试_第6张图片


三、最少用例计算方法

为实现测试的逻辑覆盖,必须设计足够多的测试用例,并使用这些测试用例执行被测程序,实施测试。我们关心的是,对某个具体程序来说,至少要设计多少测试用例。这里提供一种估算最少测试用例数的方法。我们知道,结构化程序是由 3 种基本控制结构组成,这 3 种基本控制结构就是:

                     顺序型——构成串行操作;

                     选择型——构成分支操作;

                     重复型——构成循环操作。

为了把问题化简,避免出现测试用例极多的组合爆炸,把构成循环操作的重复型结构用选择结构代替。也就是说,并不指望测试循环体所有的重复执行,而是只对循环体检验一次。这样,任一循环便改造成进入循环体或不进入循环体的分支操作了。

下图给出了类似于流程图的N-S图表示的基本控制结构(图中A、B、C、D、S均表示要执行的操作,P是可取真假值的谓词,Y表真值,N表假值)。其中图9(c)和图9(d)两种重复型结构代表了两种循环。在作了如上简化循环的假设以后,对于一般的程序控制流,我们只考虑选择型结构。事实上它已能体现了顺序型和重复型结构了。

testing and SQA_动态白盒测试_第7张图片

几个相关帮助理解的练习:

1.如下图表达了两个顺序执行的分支结构。两个分支谓词P1和P2取不同值时,将分别执行a或b及c或d操作。显然,要测试这个小程序,需要至少提供4个测试用例才能作到逻辑覆盖。使得ac、ad、bc及bd操作均得到检验。其实,这里的4是图中第1个分支谓词引出的两个操作,及第2个分支谓词引出的两个操作组合起来而得到的,即2×2 = 4。并且,这里的2是由于两个并列的操作,1 + 1 = 2 而得到的。

testing and SQA_动态白盒测试_第8张图片

2.下图表示的程序为例,该程序中共有9个分支谓词,尽管这些分支结构交错起来似乎十分复杂,很难一眼看出应至少需要多少个测试用例,我们注意到该图可分上下两层:分支谓词1的操作域是上层,分支谓词8的操作域是下层。这两层正像前面简单例中的P1和P2的关系一样。只要分别得到两层的测试用例个数,再将其相乘即得总的测试用例数。这里需要首先考虑较为复杂的上层结构。谓词1不满足时要作的操作又可进一步分解为两层,这就是图中的子图(a)和(b)。它们所需测试用例个数分别为1+1+1+1+1 = 5及1+1+1 = 3。因而两层组合,得到5×3 = 15。于是整个程序结构上层所需测试用例数为1+15 = 16。而下层十分显然为3。故最后得到整个程序所需测试用例数至少为6×3 = 48。

testing and SQA_动态白盒测试_第9张图片

计算方法:

testing and SQA_动态白盒测试_第10张图片


你可能感兴趣的:(白盒测试,testing)