每次去参加各种大会,都有人在问UI自动化的收益如何?然后听到很多抨击UI自动化测试的各种声音,那么UI自动化到底有没有用?用处在什么地方?该如何做UI自动化测试才有用呢?
1.UI自动化的目标是什么?
在考虑自动化测试到底有没有用,需要不需要做之前,先要讨论下UI自动化测试的做UI自动的目的是什么?在很多时候,都没有弄清楚目标目的,就武断的给出“UI自动化测试根本就没用”,“UI自动化是银弹”等标签。
很多UI自动化测试执行失败都是因为制定一个不合理的目标,刚毕业那会在银行做自动化测试项目实施,或许因为销售对自动化测试描述的无所不能,导致局方领导认为自动化测试啥都能干,我和几个小伙伴总是没日没夜的维护,24小时待命完成完成各种测试,开发阶段的测试、集成阶段测试,回归测试等等。待我们实施结束后,听局方的伙伴说,半年后我们做的自动化变成了一堆垃圾,再也没人维护了。
接着在实施了若干个自动化项目,最后的结局都大同小异,在此后的很长一段时间我都认为UI自动化基本没啥用,费力不讨好,开始研究分层自动化测试,研究接口测试,研究服务端测试……
后来冷静下来,觉得UI自动化测试也不是一无是处,很多时候是因为我们定位不清晰,目标不明确。就像上文提到的,对自动化的要求太多了,必定是机器,不具备思考能力,所以对于UI自动化测试,目标不要太多,一个最好。
在这里单独强调目标,是想让各位在实施自动化前一定要清晰的明白,实施UI自动化的目标到底是什么?是要提高工作效率?是要提高质量?是要报个创新?还是要提高团队的能力?本文简单从提高工作效率的角度和提高团队成员能力的角度来分析下UI自动化测试实施的最佳实践。
2.基于ROI目标的UI自动化该如何实施?
在讨论UI自动化ROI时,我们不妨先看下图。在任何一个新工具和新方案方法引入到现有工作流程中必然会经历下图的S曲线,在刚开始引入实施时,因为学习成本、设备、环境资源等成本因素,必然会是一个下降曲线到A点。当人员,工具、设备资源磨合一定时间后,效率逐渐提高,这时投入产出比是一个正向增长的,一直到B点。随着维护成本的增加,投入产出比开始下降。
这张图很好的解释UI自动化在准备实施时,因为需要大量环境搭建和学习成本,在一段时间收益都会是负数,但随着对自动化框架和工具的熟悉,在一段时间内,UI自动化测试收益都是正向增长。随着用例的逐渐增加,维护成本不断上升,使得UI自动化测试产出下降,如果这个时期还在不断投入,就会导致UI自动化测试产出投入比一直在下降。导致UI自动化测试实施的失败。
如果以ROI为成功的标准,必须知道图中B点位置投入的比例或者值。在15年时反复验证,这个值根据项目不同,在UI自动化实施的覆盖率达到15%到25%时,收益最高,大家可以根据实践验证。
3.基于团队管理目标该如何实施?
在UI自动化测试实施的过程中,除了提高工作效率,还可以考虑作为提高整个测试团队能力的切入点。在实际工作中,团队成员中有很多有想法,想不断成长的小伙伴,即使不搞自动化测试,他们也一直在偷偷的勤学苦练,希望有朝一日能够大展宏图;或者再次职业转换时能够提高自己的筹码。与其这样,为什么不在内部把自动化作为团队成员技术成长的一个切入点。引导其为能够帮助业务上提高效率或者提高质量,顺便提高团队成员的能力呢?
个人认为自动化测试是测试同学提升开发技术的最佳起始,通过学习自动化测试,熟悉开发语言,了解框架基础知识。在我们团队,我希望小伙伴能够先通过学习自动化测试,熟悉基础开发知识,然后做App端基础架构服务的接口测试(写代码),进而参与小工具或者测试平台工具的开发。
这样做的好处有两个,提升了团队同学的综合技术实力,让每个人岗位起点更高;另外通过自动化测试学习,形成一种学习的氛围,增强团队成员的工作氛围和融洽的关系。
总之,UI自动测试不想很多同学说的那样不堪,做好任何一项工作都需要我们用心思考,不断探索与实践。