软件测试之可测试性分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件测试之可测试性分析
在理想的情况下,软件工程师在设计计算机程序、系统或产品时应该考虑可测试性,这就使得负责测试的人能够更容易地设计有效的测试用例,但是,什么是“可测试性”呢?JamesBach②这样描述可测试性:
软件可测试性就是一个计算机程序能够被测试的容易程度。

因为测试是如此的困难,因此,需要知道做些什么才能理顺测试过程。

有时,程序员愿意去做对测试过程有帮助的事,而一个包括可能的设计点、特性等等的检查表对他们是很有用的。

肯定存在可用于在很多方面测度可测试性的度量,有时,可测试性被用来表示一个特定测试集覆盖产品的充分程度。

在军方还用它来表示工具被检验和修复的容易程度。

这两种意义都略不同于“软件可测试性” 。

下面的检查表提供了一组可测试软件的特征:
可操作性。

“运行得越好,被测试的效率越高。


•系统的错误很少(错误加上测试过程中的分析和报告开销)。

•没有阻碍测试执行的错误。

•产品在功能阶段的演化(允许同时的开发和测试)。

可观察性。

“你所看见的就是你所测试的。


•每个输入有唯一的输出。

•系统状态和变量可见,或在运行中可查询。

•过去的系统状态和变量可见,或在运行中可查询(例如:事务日志)。

•所有影响输出的因素都可见。

•容易识别错误输出。

•通过自测机制自动侦测内部错误。

•自动报告内部错误。

•可获取源代码。

可控制性。

“对软件的控制越好,测试越能够被自动执行与优化。


•所有可能的输出都产生于某种输入组合。

•通过某种输入组合,所有的代码都可能被执行。

•测试工程师可直接控制软件和硬件的状态及变量。

•输入和输出格式保持一致且有结构。

•能够便利地对测试进行说明、自动化和再生。

可分解性。

“通过控制测试范围,能够更快地分解问题,执行更灵巧的再测
•软件系统由独立模块构成。

•能够独立测试各软件模块。

简单性。

“需要测试的内容越少,测试的速度越快。


•功能简单性(例如:特性集是满足需求所需的最小集合)
•结构简单性(例如:将体系结构模块化以限制错误的繁殖)。

•代码简单性(例如:采用代码标准为检查和维护提供方便)。

稳定性。

“改变越少,对测试的破坏越小。

•软件的变化是不经常的。

•软件的变化是可控制的。

•软件的变化不影响已有的测试。

•软件失效后能得到良好恢复。

易理解性。

“得到的信息越多,进行的测试越灵巧。


•设计能够被很好地理解
•内部、外部和共享构件之间的依赖性能够被很好地理解。

•设计的改变被通知。

•可随时获取技术文档。

•技术文档组织合理。

•技术文档明确详细。

•技术文档精确性稳定。

软件工程师可运用James Bach 提出的这些属性来开发可测试的软件配置(即程序、数据和文档)。

但是关于测试本身呢?Kaner , Falk和Nguyen [ KAN93给出了“好”测试的一些属性:
1. 一个好的测试发现错误的可能性很高。

为了达到这个目标,测试者必须理解软件,并尝试设想软件如何才能失败,理想,被探测的错误类别,例如,
在GUI(图形用户界面)中有一种潜在的错误,即错误识别鼠标位置。

应该设计一个测试集来验证鼠标位置识别的错误。

2. 一个好的测试并不冗余。

测试的时间和资源是有限的,没有必要构造一
个与其他测试用途完全相同的测试,每一个测试都应该有不同的用途(哪怕是细微的差异)。

例如,软件SafeHom①中有一个模块被用来识别用户密码以决定是否启动系统,为了测试密码输入的错误,测试者设计了一系列的输入密码测试。

在不同的测试中输入有效与无效密码(四个数字),然而,每一个有效/无效密码将检测一种不同错误模式,例如,一个将8080 作为有效密码的系统将不会接受非法密码1234,如果接收1234,将产生错误,另一个测试输入1235,与1234 的测试意图相同,因此是冗余的,然而,非法输入8081 或8180 就有些细微的差异,即对与有效密码相近但并
不相同的密码该进行测试。

3. 一个好的测试应该是“最佳品种” [KAN93]。

在一组目的相似的测试中,时间和资源的限制可能只影响其某个子集的执行,此时,应该使用最可能找到所有错误的测试。

4. 一个好的测试既不会太简单,也不会太复杂。

虽然有时会将一组测试组合到一个测试用例中,其副作用可能屏蔽错误,通常,每一个测试应该独立执行。

相关文档
最新文档