用一个简单的经济学理论“边际收益和边际成本”来衡量自动化测试是否有必要。
一般来说,我们提出的问题就是选择什么样的测试用例把它们自动化和需要多久的自动化开发时间。
A.“什么样的测试用例”是一个测试选择的过程。
B.“多久的开发时间”是一个成本问题。
A.对于所选择的测试用例的有效性或者说收益,我们引入这样一个普遍,简单的公式:
测试收益=检测出缺陷的可能性╳检测出缺陷所能避免的损失
上述公式帮助我们对测试选择形成一个比较直观的认识了:在检测出缺陷的可能性相等的情况下,选择故障后果更严重的场景将收益更大;而在两个故障后果差不多的场景之间,公式指引我们选择更容易检测出缺陷的那个。在这两个变量的共同影响下,我可以认为,每一个测试都对应着一个特定的测试收益值。如果要在两个可能的测试中做出选择,那么在其它条件都相同的前提下,我们选择收益最大的那个;当两者的收益无差异时,如何选择也将是无差异的。
B.一般来说,测试成本相对而言比较好理解,因为通常我们将其解释为人月、人天或人时,视之为一种可度量的资源投入。
测试成本=开发时间成本+执行用例成本(人月)
自动化测试的优势之一就是比起手动测试,测试用例执行时间消耗会很小。开发时间成本的比重决定了自动化测试用例的测试成本。
测试是一个探索的过程,而自动化测试的局限性之一就是不够feasible。自动化测试的开发往往要基于已经被实现和被验证过的事实,因此它缺乏探索的能力注定对于“检测出缺陷的可能性”的贡献会比较低。因此自动化测试用例选择的收益中主要考量的是“检测出缺陷所能避免的损失”,测试实践也在关键业务或者关键功能方面进行自动化。
到这里,我们基本上对于自动化测试在功能测试中的测试收益有了明确的期待。剩下的就要考虑测试成本了。开发时间成本(1次)+执行用例成本(n次)/手动执行用例成本(n次),在这个公式中,调整可变量N直到这个结果小于1才会有必要。因此,一般来说自动化测试用于在反复进行的测试用例中。
完!
白巅疯白巅疯