对于职业我们要有梦想,不抛弃不放弃。人生才会有乐趣。
测试方法简介---程序插装
上一篇 /
下一篇 2010-12-10 08:42:58
/ 个人分类:测试基础
程序插装(Program Instrumentation)是一种基本的测试手段,在软件测试中有着广泛的应用。
程序插装方法简单地说是借助往被测程序中插入操作来实现测试目的的方法。
我们在调试程序时,常常要在程序中插入一些打印语句。其目的在于,希望执行程序时,打印出我们最为关心的信息。进一步通过这些信息了解执行过程中程序的一些动态特性。比如,程序的实际执行路径,或是特定变量在特定时刻的取值。从这一思想发展出的程序插装技术能够按用户的要求,获取程序的各种信息,成为测试工作的有效手段。
如果我们想要了解一个程序在某次运行中所有可执行语句被覆盖(或称被经历)的情况,或是每个语句的实际执行次数,最好的办法是利用插装技术。这里仅以计算整数X和整数Y的最大公约数程序为例,说明插装方法的要点。图13给出了这一程序的流程图。图中虚线框并不是原来程序的内容,而是为了记录语句执行次数而插入的。这些虚线框要完成的操作都是计数语句,其形式为:C(i) = C(i) + 1 i = 1, 2,…, 6
程序从入口开始执行,到出口结束。凡经历的计数语句都能记录下该程序点的执行次数。如果我们在程序的入口处还插入了对计数器C(i)初始化的语句,在出口处插入了打印这些计数器的语句,就构成了完整的插装程序。它便能记录并输出在各程序点上语句的实际执行次数。图12表示了插装后的程序,图中箭头所指均为插入的语句(原程序的语句已略去)。
通过插入的语句获取程序执行中的动态信息,这一做法正如在刚研制成的机器特定部位安装记录仪表是一样的。安装好以后开动机器试运行,我们除了可以从机器加工的成品检验得知机器的运行特性外,还可通过记录仪表了解其动态特性。这就相当于在运行程序以后,一方面可检验测试的结果数据,另一方面还可借助插入语句给出的信息了解程序的执行特性。正是这个原因,有时把插入的语句称为“探测器”,借以实现“探查”或“监控”的功能。
在程序的特定部位插入记录动态特性的语句,最终是为了把程序执行过程中发生的一些重要历史事件记录下来。例如,记录在程序执行过程中某些变量值的变化情况,变化的范围等。又如本文第二章中所讨论的程序逻辑覆盖情况,也只有通过程序的插装才能取得覆盖信息。实践表明,程序插装方法是应用很广的技术,特别是在完成程序的测试和调试时非常有效。
设计程序插装程序时需要考虑的问题包括:
① 探测哪些信息;
② 在程序的什么部位设置探测点;
③ 需要设置多少个探测点。
其中前两个问题需要结合具体课题解决,并不能给出笼统的回答。至于第三个问题,需要考虑如何设置最少探测点的方案。例如,图11中程序入口处,若要记录语句Q = X和R = Y的执行次数,只需插入C(1) = C(1) + 1这样一个计数语句就够了,没有必要在每个语句之后都插入一个计数语句。在一般的情况下,我们可以认为,在没有分支的程序段中只需一个计数语句。但程序中由于出现多种控制结构,使得整个结构十分复杂。为了在程序中设计最少的计数语句,需要针对程序的控制结构进行具体的分析。这里我们以FORTRAN程序为例,列举至少应在哪些部位设置计数语句:
① 程序块的第一个可执行语句之前;
② ENTRY语句的前后;
③ 有标号的可执行语句处;
④ DO、DO WHILE、DO UNTIL及DO终端语句之后;
⑤ BLOCK-IF、ELSE IF、ELSE及ENDIF语句之后;
⑥ LOGICAL IF语句处;
⑦ 输入/输出语句之后;
⑧ CALL语句之后;
⑨ 计算GO TO语句之后。
收藏
举报
TAG: