时间:2024-05-04
黎秀 电子科技大学成都学院
关键字:软件测试 逻辑覆盖 NS 流程图 最小测试用例数
随着软件技术的发展以及人们对软件功能要求越来越高,软件的复杂的也随之增大,那么在软件测试过程中,逻辑覆盖测试的难度也会越来越大,所以为了实现测试的逻辑覆盖,必须设计足够多的测试用例,并使用这些测试用例执行被测程序,实施测试。但是基于对软件逻辑进行全覆盖的不可实现性,我们更加关心的是,对于某个具体程序来说,至少要设计多少测试用例数才能做到足够的覆盖。本文我们将提供一种基于NS 流程图的最小测试用例数的计算方法。
NS 流程图是一种取代传统流程图的一种描述方式。它是以结构化程序设计方法为基础,并完全去掉了流程线,算法的每一步都用一个矩形框来描述,把一个个矩形框按执行的次序连接起来就是一个完整的算法描述。NS 流程图包含了结构话程序设计的3 种基本控制结构,即:顺序型、选择型和重复型。
在NS 流程图中,每个“处理步骤”是用一个盒子表示的,所谓“处理步骤”可以是语句序列。需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有限制,只要整张图在一页纸上能容纳得下,由于只能从上边进入盒子然后从下边走出,除此之外没有其他的入口和出口,所以NS 流程图限制了随意的控制转移,保证了程序的良好结构。
利用NS 流程图进行最小测试用例计算算法中,一般要考虑问题的简化,避免出现测试用例极多的组合爆炸,把构成循环操作的重复型结构用选择结构代替。也就是说,并不指望测试循环体所有的重复执行,而是只对循环体检验一次。这样,任一循环便改为造成进入循环体或不进入循环体的分支操作了。
例如,图1 表达了两个顺序执行的分支结构。两个分支谓词P1和P2 取不同值时,将分别执行a 或b 及c 或d 操作。显然,要测试这个小程序,需要至少提供4 个测试用例才能作到逻辑覆盖,使得ac、ad、bc 及bd 操作均得到检验。 这里的4 是图中第1 个分支谓词引出的两个操作,及第2 个分支谓词引出的两个操作组合起来而得到的,即2×2 =4。其中的2 是由于两个并列的操作,1 十1=2 而得到的。
对于一般的、更为复杂的问题,估算最少测试用例数的原则也是同样的,例如图2 表示的程序中共有9 个分支谓词。尽管这些分支结构交错起来似乎十分复杂,很难一眼看出应该至少需要多少个测试用例,但如果仍然用上面的方法,也是很容易解决的。将图分为上下两层:分支谓词1 的操作域是上层;分支谓词8 的操作域是下层。这两层正像前面简单例中的P1 和P2 的关系一样。只要分别得到两层的测试用例个数,再将其相乘即得总的测试用例数。
首先考虑较为复杂的上层结构。当谓词1 不满足时要作的操作又可进一步分解为两层。其中第一层所需测试用例个数分别为1 十1十1 十1 十1=5;第二层所需测试用例个数分别为及1 十1 十1=3。因而两层组合,得到5×3 =15。整个程序的上层所需测试用例数为1十15 =16。
接着考虑整个程序的最下层,观察图中不难发现,最下层所需的测试用例数3。于是,对于整个程序所需的测试用例数为上层数量乘以下层数量,即为:16×3 =48。
软件测试执行过程中,决定测试效率的关键因素在于测试用例的选取。基于测试时间的限制,测试用例数量不宜过多;当然,为了达到足够的测试覆盖,测试用例数量也不能过少。本文提供的基于NS流程图的方式计算最少测试用例数的方法从两方面对测试进行了保证,第一方面,对于程序逻辑结构进行了完整的分析,保证了程序分支的各种组合不被遗漏;另一方面,本方法是基于成熟的NS 流程图的方法,理论上得到了很好的保证。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!