软件可测试性(Software testability)是指一个软件工件(软件系统、模组、需求文件或设计文件等)在一给定的测试环境下,可支援测试的程度。
简介软件工件的可测试性不是一个内在性质,不像软件大小一様可以直接量测。软件可测试性是一个外在性质,由待测试的软件及测试目标、方法及测试资源(测试环境)之间的相互关系来决定。
若软件的可测试性低,可能会造成测试工作的增加。在一些极端的情形下,缺乏可测试性可能会使部分甚至全部的测试或软件需求无法进行。1
背景知识依照实证的假设,软件测试的工作量及有效性和以下几个因素有关:
软件需求的性质。
软件本身的性质(像大小、复杂度及可测试性)。
测试方法的的性质。
开始及测试流程的性质。
和测试流程有关人员的资格和动机。1
软件元件的可测试性软件元件(模组或类别)的可测试性和以下因素有关:
可控制性:是否可以将待测元件的状态控制到如测试条件要求。
可观察性:是否可以观察(中间或最后的)测试结果。
可隔离性:待测元件是否可以隔离测试。
关注点分离:待测元件是否有单一且清楚定义的任务。
易懂性:待测元件是否有说明文档,或是本身可读性很高。
可自动化性:待测元件是否可以自动测试。
异质性:是否需要不同的测试方法及工具平行测试。
软件元件的可测试性可以用以下方式提升:
测试驱动开发
可测性设计(design for testability),类似硬件的为测试而设计。1
需求的可测试性具有测试性的软件需求需求要符合以下的条件:
一致性
完整性
明确不含糊
可量化(像“反应时间快”的需求是无法被验证的)
实务上的软件验证及确认(不只是理论上可行,在有限资源下也是可实现的)1
可测试性可测试性是有关实验假说的一种性质,包括二个方面:
在逻辑上的性质,包括偶然性、可废止性或是可证伪性,也就是说逻辑上此假说是有可能出现反例。
在实务上的性质,意思是指若存在反例,反例有再现性
简单来说,若假说有可测试性,表示实际上有可能可以根据结果判断假说的正确与否。2
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学