如何评估测试工具

  以下几节将详细描述在软件测试工具的评估过程当中你应该研究的问题。理想情况下,你应该通过亲手测试正在评估的每一个工具,来确认这些信息。

  由于本文下面的部分技术性很强,我们想向你解释一下下文的表述格式。对于每一个部分,我们都有一个标题来描述将要讨论的问题,一个关于该问题重要性的描述,还有一个“要点”部分来概括需要考虑的问题。

  另外,除了表述格式以外,我们也应对专业术语作出注解。 “函数/方法(function)”一词是指一个C函数或C + +类的方法,“单元”是指一个C文件或C + +类。后,请记住,几乎所有的工具都能在一定程度上支持“要点”部分中提到的问题,你的工作是评估自动化程度、易用性,以及支持的完整性。

  解析器和代码生成器

  要建立一个C解析器是相对容易的,但要建立一个完整的C + +解析器是非常困难的。工具评估过程中需要回答的问题之一是:“解析器技术的健壮性和成熟性如何”?一些工具厂商使用商业解析器,他们从解析器技术公司获得许可,还有一些厂商使用自主开发的解析器。使用你项目中具有代表性的复杂的代码结构来评估工具,可以验证解析器和代码生成器的健壮性。

  要点:

  > 解析器技术是商业外购的还是自主研发的?

  > 支持哪些语言?

  > C版本的工具和C + +版本的工具是否相同?

  > 全部是C ++语言实现的,还是局限于其中一部分?

  > 工具能测试我们复杂的代码吗?

  测试驱动程序

  测试驱动程序是控制测试的“主程序”。下面是一个驱动程序的简单例子,它将用来测试标准C库中的正弦函数:

#include <math.h>
#include <stdio.h>
int main () {

float local;
local = sin (90.0);
if (local == 1.0) printf ("My Test Passed! ");
else printf ("My Test Failed! ");
return 0;
}

  虽然这是一个很简单的例子,“手工”工具可能会要求你手工输入(和调试)这一小段代码片段,“半自动化”工具可能会给你某种脚本语言或简单的图形用户界面(GUI)来输入正弦函数的输入参数值。“自动化”工具将提供一个用于构建测试用例、集成代码覆盖率分析的全功能图形用户界面(GUI),一个集成调试器,以及与嵌入式目标环境的集成部署。

  不知你是否注意到,该驱动程序有一个bug。那是正弦函数实际上应该使用弧度值而不是度数来作为角度的输入值。

  要点

  > 驱动程序是自动生成的,还是自己编写的?

  > 我可以不写任何代码来测试下面的内容吗:

    测试覆盖一定范围的值

    组合测试

    数据分区测试(等价类)

    输入值列表

    预期值列表

    预期异常值

    信号处理

  > 我可以在相同的测试中建立一个调用不同方法的序列吗?