本文提供若干实用的建议,帮助项目组开发出可测性更强的软件产品。
本文对可测性(Testability)的定义为可见性和可控制性。可见性是我们能观察被测软件的状态、输出、资源利用和其它影响的程度;可控制性是我们能向被测软件输入或把它设置到某个特定状态的程度。
可见性基础
可见性的基本方面是能访问代码、设计文档和更改记录。这些是对大部分可测性进行改进的前提条件。
测试人员需要知道如何阅读代码,以及如何理解设计模型所采用的语言。在测试人员能提出测试接口、错误注入钩子或其它可测性特性之前,他们需要对系统设计有基本的理解。
可测性的改进需要测试人员和开发人员都使用共同的语言。
详细的输出
很多程序都有详细输出模式,这是可测性的很好的例子,它让人可以看到软件运转的细节。Unix的Mail程序就是其中一个例子:
mail -vbret@pettichord.com
Subject: testability example
Sample text.
.
Cc:
bret@pettichord.com... Connecting to mx.io.com. via relay... 220-deliverator.io.com
ESMTP Sendmail 8.9.3/8.9.3; Fri, 12 Jan 2001 15:34:36 -00 220 Welcome to
Illuminati Online, Fnord!
>>> EHLO eris.io.com
250-deliverator.io.com Hello IDENT:wazmo@eris.io.com [199.170.88.11], pleased tu
250-8BITMIME
250-SIZE 5000000
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP
>>> MAIL From: <wazmo@eris.io.com> SIZE=67
250 <wazmo@eris.io.com>... Sender ok
>>> RCPT To: <bret@pettichord.com>
250 <bret@pettichord.com>... Recipient ok
>>> DATA
354 Enter mail, end with “.” on a line by itself
>>> .
250 PAA07752 Message accepted for deliverybret@pettichord.com... Sent (PAA07752
Message accepted for delivery) Closing connection to mx.io.com.
>>> QUIT
221 deliverator.io.com closing connection
这些详细的输出信息可以帮助测试人员了解客户端和服务器端之间的通讯过程,从而帮助设计出测试用例来测试服务器的错误处理能力。同时这些信息可以帮助暴露问题出现的地方。
日志
详细的输出信息是记录软件事件的其中一种技术。日志可以帮助测试人员更容易理解软件的运转情况。也可以帮助发现一些容易忽略的bug。当bug出现,日志可以帮助定位到错误的代码和帮助调试。
诊断、监视和错误注入
断言是一种普遍的诊断。断言是使程序对处理的输入的假设更加清晰明确的额外代码行。当断言被违反了(假设不成立),错误或异常就自动出现。所以断言被违反就意味着bug。
如果没有断言,你可能不会注意到bug已经发生,因为内部数据可能已经被破坏,但是只有当进一步的测试访问到这些数据时才出错。断言也可以帮助定位错误出现的代码位置。
查找内存泄漏问题的有效的方法是监视内存使用。有很多工具可以做到这点。如果能监视内部内存设置会使测试更容易。例如在Netscape输入“about:config”能把所有设置输出。对于于配置问题的追踪会有很大帮助,尤其是某些问题只是在特定的机器才会出现。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/