原本只是在一本书上看到Testability的介绍,书中对于Testability的介绍使我对Testability中文翻译“可测试性”产生了一些疑惑。从书中的描述中我更倾向于翻译成“易测试性”。因此就开始了翻阅Testablity的资料,追溯下来“可测试性”的翻译确实一点问题也没有,只是书上的描述有点问题。文中有很多英文原文内容,我的英语不好,而且我觉得看原文才是原文。
Testability在软件工程领域的定义确实有很多,但是究其根源他是一个关于实验假说的一种性质。在逻辑上包含了偶然性、可废止性、可证伪性,也就是说在逻辑上假说是可能存在反例的,并且这个反例是可再现的。
但是这么一个实验假说的性质在和软件工程相结合后,就出来了各式各样的定义,下面我们就把定义原文记录如下。
通过一些文献的查找和学习,我发现Testability并不是起源于软件工程领域,是一个引入的词汇,那么在硬件领域使用更为广泛。在软件工程领域的定义目前看来也有一些不同的定义和解释,对比下来IEC 60706-5标准更为概括和广泛,可测试性是一种定量设计特性,它决定了一个项目在规定条件下可测试的程度(翻译不太好,所以还是推荐看一下上节的原文)。其实是一种可测试的程度,不是容易不容易测试的评价。James Bach定义的可测试性是指一个计算机程序能够被测试的难易程度,重点也是可测试的程度,而不是容易不容易测试。例如一个Web开发设计中每一个页面的element都没有ID,那么这个其实并不是可测试性的反模式,没有ID同样可自动化测试,只是不容易自动化而已。所以可不可测试的反模式应该是UI设计中需要在固定的嵌入式主机中才能启动测试,没有模拟器,并且测试工程师没有对应的嵌入式主机,从而导致无法测试。
《Product Development》书中给出了一些Testability的原则: