二、插桩技术
软件动态测试中,插桩测试是一个被广泛应用的测试方法。插桩测试就是向源程序中插入语句然后执行程序,通过打印语句,获得动态信息(我们最为关心的信息)。
图1 求最大公约数的程序插桩流程图
在这里,举一个最简单的例子,以计算整数X和整数Y的最大公约数为例,来说明插桩技术的要点。
插桩后求最大公约数的程序流程图如图1所示。
图1中虚线框中的内容并不是源程序的内容,而是我们为了记录语句的执行次数而插入的。虚线框中的程序就是为了完成计数,其形式为
C(n)=C(n)+1(n = 1,2,3,…,n)
该程序从入口开始执行,到出口结束执行。只要是有这个计数语句的程序点,其执行一次就被记录一次。我们在程序的特殊位置插入记录动态特征的语句,就是为了把程序执行过程中重要的历史事件记录下来。
在插桩测试时需要注意的要点是:
需要哪些信息。
在什么位置插入语句。
需要在几个点插入语句以及在特定的位置需要什么特殊的判断性语句。
对于插桩测试,分析好这三个要点尤为重要。前两个要点是需要结合具体的程序来判断的,不能给出具体的答案。对于最后一个要点,就要考虑如何才能插入最少的点,来完成实际的问题。这些通过工作经验的积累会很容易地解决。
三、基本路径测试法
基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个执行语句至少执行一次。
基本路径测试法的重点内容如下:
程序的控制流图:描述程序控制流的一种图示方法。
程序环形复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。
导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。
准备测试用例:确保基本路径集中的每一条路径的执行。