效能度量 | 从ROI出发探究自动化测试

最近在学习自动化测试课程,看到作者从投入回报率比 ROI(Return On Investment)的角度去讨论自动化测试的价值以及定位最优自动化实施截面。总结下来,我们在实践中也能通过 ROI 去判断当前项目是否适合自动化测试、根据 ROI 制定自动化测试的策略、优化自动化测试,提高效益等。

场景:产品要上线了,QA 人手紧,能不能搞一下测试自动化,减少点人手?

自动化测试项目的最终交付价值是它产生的效益,也就是 ROI。一个成功的自动化测试项目必然是获得了高 ROI 的收益。由此我们可以从 ROI 角度来分析是否需要安排自动化。

一个自动化测试案例 ROI=(单次运行时间 * 运行次数)/(开发时间 + 维护成本)

根据公式可以推出结论:

1.ROI 大于1就是赚了,小于1就是亏了。那么,给定一个测试案例,要不要对它做自动化,判断的依据是(自动化测试)预期 ROI 至少要大于1。

2.自动化测试是一个长收益模式。在理想情况下,是一次性投入(投入为开发成本),之后每运行一次,就会增加一份产出。所以,时间越长,次数越多,收到的回报就会越大。

3.关于开发成本(包括开发成本和维护成本),类似估算软件开发工作量,代码行法、功能点法,我们也可以引入到估算开发工作量里,比较好掌握。但维护成本就有点模糊了,这里包含了多种可变因素,是自动化测试项目风险的主要来源。

那么当我们遇到场景 “产品要上线了,QA人手紧,能不能搞一下测试自动化,减少点人手?” 这个时候就不能盲目的上自动化测试,ROI是一个自动化测试项目的隐式命脉。首先,我们需要考虑此时时间成本,临近上线时间节点和投入自动化开发时间是否符合,如果不符合抛开ROI不谈也是不能搞自动化的。其次,此次上线的功能是否稳定,自动化测试多用来做回归测试,如果产品不稳定,自动化测试执行起来也是相当痛苦,相应的也会增加大量的维护成本。最后,对比自动化测试与手工测试需要消耗的人力、时间,ROI能否大于1,自动化测试能否产生效益。

自动化测试的测试策略如何做?

在实际工作中,自动化测试一旦做起来,带来的变化是:测试执行时间变快,软件发布周期缩短,又反过来增加回归次数n,自动化测试的收益也在增加。想要搞出成功的自动化测试,测试策略也必不可少。

在测试设计领域,经常提到的方法是分层。具体就是给定一个系统,结构上划分三个层级,单元在最小圈;服务包含多个单元,在中圈;而系统又包含多个服务,是外部的最大圈。结构图如下:

相应地,我们的测试结构是在代码层做单元测试,服务层做接口测试,系统层做 UI 功能测试。同时,单元测试案例的数目应该多于接口测试案例数目,接口测试案例数目应该多于 UI 测试自动化测试案例数目。但是为什么这么分配?利用 ROI 思维,分析测试金字塔规律,可以得出3种类型自动化测试的ROI排序,如下表:

对照测试金字塔不难发现,实际上三类自动化测试的ROI是自底向上由高到低的。

所以在一个自动化测试项目中优先投入精力做ROI最高的单元测试,再做ROI中的接口测试,最后完成UI测试。

单元测试、接口测试、UI 测试,这三个测试截面测的是一个请求在不同层面上的形态,那么每一个截面都可以测试全部的案例,也可以测试部分的案例。就像 3个人负责1个项目一样,如果没有经过事先的协调和安排,3个人可能做了重复的事情,造成浪费,也可能存在一件事 3个人都没干,形成测试盲区。

在资源有限的条件下,我们需要在整体上看待分层测试的最优 ROI。整合测试需求和测试类型组合,得出各个需求的自动化实现截面。

UI 测试关注功能场景测试,易用性测试和可执行性测试;而接口测试关注不同数据的循环,接口的性能和错误恢复能力;单元测试关注算法的正确性和性能。

如何优化自动化测试,提高效益?

一个案例转化成自动化测试后,我们的目标是它的投资回报率越高越好。从代码的角度,提高代码的复用率,增加运行次数 n 就可以在一定程度上提高 ROI,增加自动化测试效益。

例如一段登录脚本:

这段脚本实现的功能很简单,启动 chrome 浏览器,打开一个登录链接,在页面上输入用户名 test@example.com,密码 123456,点击 “登录” 按钮,完成登录。相应的脚本每运行一次,对应的 n 就为 1。

正常来说,我们测试不可能只是测试一个浏览器,会考虑支持市面上主流浏览器,多组测试数据,不同环境下运行以及业务要求可能需要支持多种语言等。相应的需要修改代码,减少 Hard code 来提高代码的复用率,增加 ROI。修改后代码如下:

总的来说,上面的例子在提高代码 ROI 方面给到了四种思路,一份代码,多浏览器运行,多数据运行,多环境运行,多语言运行,同时提高 ROI 的过程,也是消除代码 Hard code,优化代码结构的过程。

也许之前我对自动化测试的认知就是利用工具、代码来减少手工测试,节约人力。却没有真正思考过什么样的项目更适合自动化测试,如何做自动化?读到这里,不知道屏幕前的大家是否已经有了答案,欢迎大家一起交流学习~

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值