动态测试工具

发表于:2011-4-08 13:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  动态测试就是通过选择适当的测试用例,实际运行所测程序,比较实际运行结果和预期结果,以找出错误。动态测试分为结构测试与功能测试。在结构测试中常采用语句测试、分支测试或路径测试。作为动态测试工具,它应能使所测试程序有控制地运行,自动地监视、记录、统计程序的运行情况。典型方法是在所测试程序中插入检测各语句的执行次数、各分支点、各路径的探针(probe),以便统计各种覆盖情况。有些程序设计语言的源程序清单中没有标号,在进行静态分析或动态测试时,还要重新对语句进行编号,以便能标志各分支点和路径。在有些程序的测试中,往往要统计各个语句执行时的cPU时间,以便对时间花费最多的语句或程序段进行优化。

  (1)测试覆盖监视程序

  主要用在结构测试中,可以监视测试的实际覆盖程度。主要的工作有:分析并输出每一可执行语句的执行特性;中国自学编程网整理发布分析并输出各分支或各条路径的执行特性;计算并输出程序中谓词的执行特性;为此,测试覆盖监视程序的工作过程分为以下三个阶段:

  1)对所测试程序做预处理。如在程序的分支点和汇合点插入“执行计数探针”;在非简单赋值语句(相对于赋常数值或下标计算等简单赋值语句而言)后插入“记忆变量值探针”,记录变量的首次赋值、末次赋值、最小值、最大值。以及在循环语句中插入“记忆控制变量值探针”,记录循环控制变量的首次赋值、末次赋值、最小值、最大值。

  2)编译预处理后的源程序,运行目标程序。在运行过程中,利用探针,监视、检查程序的动态行为,收集与统计有关信息。

  3)一组测试后,可以根据要求,输出某一语句的执行次数,某一转移发生的次数,某赋值语句的数值范围,某循环控制变量的数据范围,某子程序运行的时间、所调用次数等。从而发现在程序中从未执行的语句,不应该执行而实际执行了的语句,应该执行但实际没有执行的语句,以及发现不按预定要求终止的循环、下标值越界、除数为零等等异常情况。

  (2)断言处理程序

  “断言”是指变量应满足的条件。例如,I<10,A(6)>O等。在所测试源程序中,在指定位置按一定格式,用注释语句写出的断言叫做断言语句。在程序执行时,对照断言语句检查事先指定的断言是否成立。可以帮助复杂系统的检验、调试和维护。

  断言分局部性断言和全局性断言两类。局部性断言,是指在程序的某一位置上,例如,重要的循环或过程的入口和出口处,或者在一些可能引起异常的关键算法之前设置的断言语句。例如在赋值语句A—B/z之前,设置局部性断言语句:

  C ASSERT L()CAL(Z<>O)

  全局性断言,是指在程序运行过程中自始至终都适用的断言。例如,变量I、J、K只能取O到100之间的值,变量M、N只能取2、4、6、8四个值等。全局性断言写在程序的说明部分。描述格式为

  C  ASSERT VALUES(I,J,K)(O:100)

  C  ASSERT VALUES(M,N)(2,4,6,8)

  程序员在每个变量、数组的说明之后,都可写上反映其全局特性的断言。

  动态断言处理程序的工作过程如下:

  1)动态断言处理程序对语言源程序做预处理,为注释语句中的每一个断言插入一段相应的检验程序。

  2)运行经过预处理的程序,检验程序将检查程序的实际运行结果与断言所规定的逻辑状态是否一致。对于局部性断言,每当程序执行到这个位置时,相应的检验程序就要工作;对于全局性断言,在每次变量被赋值后,相应的检验程序就进行工作。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号