自动化测试用例开发和维护的平均每用例成本,会随着用例数量级的提升,由于规模效应而有所下降。在基础数据中体现为8倍、5倍、3倍于手工测试执行用例的工作量。这里的数据是多版本平均估值,不是准确,但在数量级上误差不大。

  根据基础数据,我们可以拟定如下的投资收益率计算表格:

  从以上的图表能够看出的是:

  1、200个用例被自动化,需要经过2个Release版本才有正收益;

  2、随用例数量增加,自动化测试收益周期拉长,甚至可能6-7个版本后才有正收益;

  3、自动化测试用例数越少,收益率随版本增长趋势越快;

  4、在实际生产环境中,由于产品及团队复杂变化的情况,收益率还会朝着更低的趋势发展。现实总比理想残酷。

  所以,并不是自动化的用例数量越多越能够节省人力——至少在一定的周期内不是。

  对人力释放不切实际的预期,一方面是由于对“回报周期”的错误预估——大多数人的期望值都是投入,明天获利;另一方面也是出于对收益率的错误理解。

  很多团队在计算收益率时,都将自动化用例运行的次数直接折算到等效手工执行的工作量,而没有考虑到真正的手工执行是不是有可能在1个版本周期内安排这么多的重复执行。

  比如,如果认为2000个自动化用例在10个迭代内运行,相当于节省了10次手工执行2000个用例的工作量,则根据基础数据计算相当于节省了200人月工作量。而一个Release版本的测试执行工作量也不过60人月,难道可以说我们有3个Release版本不用在测试执行上投入人力了?

  二、自动化“测试”,当然应该由测试人员来做

  这也是一个普遍存在的观点,而且有大量的测试团队正在照此执行。

  为什么自动化测试应当由测试人员来做?因为测试人员是做这件事适合的人选吗?还是仅仅因为它是自动化“测试”,因为有“测试”二字所以理应由“测试”人员承担?

  很多人的答案是后者。

  那么这样做对吗?

  当考虑一件事情什么人做比较合适时,我们应当先看看这件事的性质是什么。造楼房当然是设计师合适,打官司当然是律师合适......