软件自动化测试方案的效益分析

来源:互联网 发布:淘宝手机秒杀神器 编辑:程序博客网 时间:2024/04/29 13:33

引言

    随着软件测试技术的发展, 人们已经从最初的纯粹的手工测试转变为手工和自动化技术相结合的测试方法。近年来,自动化测试越来越受到人们的重视, 对于自动化测试的研究也越来越多。

    但是,当前的研究热点多在自动化测试框架、自动化测试工具和脚本的研究, 而在软件自动化测试方案的效益分析方面涉及较少。本文首先对手工测试和自动化测试进行了比较,接着给出了自动化测试方案选择要考虑的因素, 然后给出了一种效益分析模型,希望通过对自动测试效益的分析,指导中小型企业进行自动化测试工作所需的投入和可能获得的回报进行计算,在合适的时机引入自动化测试, 使自动化测试与手工测试完美结,在测试质量保证的前提下获得最高效益。

1 手工测试与自动化测试比较

1.1 人力和成本

    手工测试需要投入一定的人力去设计并执行测试用例,但不需要购买工具软硬件的成本。自动化测试前期需要投入大量人力进行测试脚本开发和调试工作,一次性开销较大,需要购买测试工具,但后期只需要1~2 人就可以完成大部分测试工作。

    也就是说人力上,自动一开始投入大,后期少。成本上,如果工具使用频率不高,自动要高于手工。但如果工具频繁被使用,或者运用于多个项目,自动的成本能够达到低于手工的成本

1.2 测试人员技能要求

    手工测试人员需要掌握基本的测试技能, 对测试对象的全面了解。而自动化测试人员除了要达到手工测试所要求的技能外,还需要具备应用测试工具的技能。

1.3 回归测试

    用手工测试做回归测试, 很难保证新版本修改的问题没有影响原先正确的功能,而且效率低。用自动测试回归时,可以将上一个版本已经测试过的用例通过工具自动执行, 这样很清楚发现是否有以前通过的用例在这轮测试又Fail 了。
 
    而且,用自动化测试做回归测试效率高于手工。可见,在回归测试方面,自动测试优于手工测试,提高了回归测试的效率和可信度。

1.4 发现错误的能力

    用手工测试经常能够发现一些测试用例之外的错误。自动化测试只能按照规定的脚本周而复始的进行着同样的测试,一般发现不了很隐秘的错误。手工测试发现错误的能力大于自动化测试。

1.5 可行性
手工测试对于一些简单的功能测试、代码测试是可以做到的,但对于性能测试则不太可行。自动化测试对功能、代码、性能测试都能够支持,而且在性能测试方面优于手工测试。由此可见,如果将自动测试和手工测试相结合,就能达到最高的产品质量。

2 自动化测试方案选择需要考虑的方面

   虽然自动化测试有很多优势, 但是不能期望自动化测试来取代手工测试,同样不能期望自动化测试去发现更多新的缺陷。事实证明新缺陷越多,自动化测试失败的几率就越大。发现更多新缺陷应该是手工测试的主要目的。在选择自动化测试的时候,

需要考虑以下几个方面的因素:

(1) 项目的类型及周期:对一次性项目或者开发周期很短的项目,就不值得花精力去投资自动化测试,好不容易建立起的测试脚本,不能得到重用是不现实的。

(2) 复杂度:自动化是否容易实现,包括数据和其他环境的影响。

(3)地方,适合做自动化测试;没有延续性的,可能就不是很适合。

(4) 项目的开发模式和开发计划:需要有很多次的重复测试的,适合作自动化测试;测试重复次数不多的,则不适合用自动化测试。

(5) 维护工作量:代码是否能长期保持相对稳定?功能特性是否会进化?

(6)覆盖率:自动化测试能否覆盖程序的关键特性和功能?

(7) 自动化测试的执行:负责执行自动化测试的小组是否拥有足够的技能和时间去运行自动化测试?

3 自动化测试的效益分析

3.1 影响自动化测试成本的主要因素

    为了更好的管理和投资测试, 我们往往要判断自动化测试有没有提高测试的效率,是否提升了整体的效益。相比于手工测试,自动化测试的最大价值就在于每次测试运行时的低成本。自动化测试的经济成本通常可以描述为固定成本和可变成本

    固定成本主要指软硬件成本,包括:硬件,应用软件的许可证,应用软件的技术支持,自动化测试环境的设计和搭建,脚本开发工具软件,脚本开发工具的许可证,测试工具的培训,测试工具的引入和启动等。

    固定成本不受自动化测试的成果数量和运行次数的影响。可变成本主要包括测试准备成本、创建自动化测试的成本、执行自动化测试的成本、维护自动化测试的成本和测试报告生成成本
 
    这些因素中,创建自动化测试的成本、执行自动化测试的成本、维护自动化测试的成本对测试成本的计算起着较大作用。而测试往往是一个重复的活动, 这就带来了计算ROI时的另外两个重要因素: 自动化测试的运行次数和手工测试运行次数。
综上看,自动化测试,主要风险来源于创建自动化测试的成本,运行自动化测试的成本和维护自动化测试的成本。而创建自动化测试的质量高低, 决定了运行自动化测试的成本高低风险和维护自动化测试的成本高低风险。另外,项目本身的特性也会影响维护自动化测试的成本风险

3.2 一个简单的自动化测试投资回报率计算模型

    要估算自动化的效益, 必须根据本公司的实际情况建立一个模型。根据对以上影响测试成本主要因素的分析以及本人在工作实践中的总结, 在此给出一个简单的自动化测试投资回报率的计算方法:

自动化测试成本= 工具软硬件成本+ 脚本开发所耗成本+(脚本执行成本×脚本执行次数)+(脚本维护成本× 脚本执行次数)

手工测试成本= 测试用例设计开发成本+(手工测试执行成本× 测试用例执行次数) +(测试用例维护成本× 测试用例执行次数)利益= 手工测试成本– 自动化测试成本ROI = 利益/自动化测试成本解释:

    成本的计算单位大多可以用时间, 对于上述工具软硬件的成本这些用货币估计的可以折算成有效工时。脚本和用例开发所耗成本、脚本和手工测试执行成本、测试用例维护成本可以比较容易地从历史统计数据得出。比较难计算的是脚本维护成本,同时也是自动化测试风险比较集中的一块。

    它由多重因素决定,比如开发流程的类型,自动化介入的时机,需求和设计的稳定程度,工具的选择,测试人员的能力(直接决定了脚本质量),测试框架的质量,测试对象的可测试程度…

3.3 自动化测试效益分析

    在此, 以本人实际参与的测试工作为例分析自动化测试带来的效益。公司在工具软硬件成本方面花费大约50 万,使用寿命5 年,每年测试项目20 个,人均费用50 元/小时。工具软硬件成本折算到一年为10 万/年, 则每一个项目中自动化测试软硬件成本转化成有效工时为:100000/5/20/50=100 小时。

    可变成本以本人实践过的比较典型的Crush or Flush 项目为例,其中各项成本如下表所示:
根据上面的模型计算该项目的ROI:ROI = 利益/自动化测试成本= (Σ(手工测试成本)- Σ(自动化测试成本))/Σ(自动化测试成本)则测试执行一次的投资回报率:
ROI(1)=((0+24+18×1+4×1)-(100+96+2×1+6×1))/ (100+96+2×1+6×1)=-0.77同理可算出:ROI(2)=-0.58, ROI(3)=-0.41, …… ,ROI(6)=-0.03, ROI(7)=0.07,…… , ROI(10)=0.31,…… ,ROI(20)=0.78。
注:ROI(n)表示测试执行n 次的投资回报率。

    分析:在前6 次的测试中,ROI 为负值,手工测试成本低于自动化测试, 并且ROI 随着测试次数的增加而增加, 在第7 次测试时(ROI 由负值到0.07)手工测试成本与自动化测试成本大致平衡,此后,自动化测试的成本小于手工测试成本。当自动测试被重复利用10 次时,收益达到0.31,而重复利用20 次时,收益已高达0.78。由此可以得出,自动化测试使用的时间越长、测试次数越多,ROI 会越大,收益越高。可见自动测试的效率提高还是相当显著的。

    若单纯从经济角度考虑,当总的测试次数较少时(小于达到平衡点所要求的次数),建议采用手工测试;当总的测试次数较多时(大于达到平衡点所要求的次数),建议采用自动化测试。
这仅为参考模型, 而且该分析中只考虑了影响自动化测试效益的主要因素,没有考虑被测软件、开发环境、测试流程等因素的影响。实际应用中如果被测对象本身不是十分稳定,或者缺陷比较多,产品不成熟,这个时候介入自动化测试是非常得不偿失的。

    要想自动化测试获得较高的收益,必须在手工测试的基础上,被测产品稳定的基础上实施自动化回归测试。

4 结束语

    自动化测试技术在现代测试技术中的优势我们不得不承认,尤其在性能测试、压力测试等方面。但是,自动化测试不总是必须的、适当的、或者是有效成本投入的。根据上述模型,并结合具体测试项目和本单位以往的测试费用数据, 管理人员和测试人员能够在分析自动化测试确实能为企业带来效益的基础上,在合适的时机引入自动化测试, 使手工测试和自动化测试实现完美结合。