|
知识路径: > 测试技术的分类 > 白盒测试技术 > 白盒测试综合策略 >
|
相关知识点:4个
|
|
|
|
为实现测试的逻辑覆盖,必须设计足够多的测试用例,并使用这些测试用例执行被测程序,实施测试。我们关心的是,对某个具体程序来说,至少要设计多少测试用例。这里提供一种估算最少测试用例数的方法。
|
|
|
我们知道,结构化程序是由3种基本控制结构组成的。这3种基本控制结构就是:
|
|
|
|
|
|
为了把问题化简,避免出现测试用例极多的组合爆炸,把构成循环操作的重复型结构用选择结构代替。也就是说,并不指望测试循环体所有的重复执行,而是只对循环体检验一次。这样,任一循环便改造成进入循环体或不进入循环体的分支操作了。
|
|
|
如下图所示给出了类似于流程图的N-S图表示的基本控制结构(图中A、B、C、D、S均表示要执行的操作,P是可取真假值的谓词,Y表真值,N表假值)。其中下图(c)和下图(d)两种重复型结构代表了两种循环。在作了如上简化循环的假设以后,对于一般的程序控制流,我们只考虑选择型结构。事实上它已经能体现顺序型和重复型结构了。
|
|
|
|
|
例如,如下图所示表达了两个顺序执行的分支结构。两个分支谓词P1和P2取不同值时,将分别执行a或b及c或d操作。显然,要测试这个小程序,需要至少提供4个测试用例才能做到逻辑覆盖。使得ac、ad、bc及bd操作均得到检验。其实,这里的4是图中第1个分支谓词引出的两个操作,及第2个分支谓词引出的两个操作组合起来而得到的,即2×2=4。并且,这里的2是由于两个并列的操作,1+1=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。故最后得到整个程序所需测试用例数至少为16×3=48。
|
|
|
|
|
|
|