如果是你的领导和你说自动化成本高,效果差,赶紧离开这个团队!
首先要说的是,自动化测试的成本高、效果差,这句话就说就不对。题主对于做自动化测试还是存在很多的误区,或许还是刚刚接触,并没有明白自动化测试带来的价值和意义。
可能一说到自动化测试,很多测试者的第一印象就是接口自动化、web自动化、APP自动化,但是这些只是以自动化命名的方案,或者你会说我会用selenium、appium,但是这些也是只工具而已。
个人拙见,自动化测试是相当于手工测试来说,使用代码或者工具,把复杂的测试工作从手工转化为机器自动执行。比如日志过滤、回放,接口和服务的监控,这些都是可以通过代码把人力解放出来。
你要是刚进入这个行业,可能认为测试就是找bug,但是测试工程师的核心是质量保障。
那么说进行质量保障的过程中,为什么要引入自动化测试呢?
举个例子,以前一个项目,一两个月发布一次,现在是一周,甚至有的时候2天就可以发布一个功能。如果是按照这个节奏,研发只需要改一行代码,你却要写很多的用例,甚至要回归,几十条甚至上百条的都有可能。
他的改动会越来越频繁,每一次的改动,我们都要去做回归的,而这种回归,在这种短时间迭代越来越短的节奏下,其实已经没有办法再靠人力去支撑了。
总结起来就是:
1、突破效率瓶颈,同时降低人力成本(注意不能把降低人力成本放在核心位置);
2、降低人为错误率,规避因为人的疲劳和惯性思维以及投机取巧导致的错误;
3、提升执行效率,以及应对高强度连轴转任务,搞定长时间的系统稳定性测试和高并发场景的压力测试;
4、增加软件的信任程度;
除了这些,与手工测试相比,脚本中是可以记录测试设计思路,拓扑图,测试点等相关的信息,是非常优秀的测试信息存储,另外也可以根据脚本中获取到的代码覆盖率,进行情况分析,进而补充测试用例。
既然自动化测试的优势这么明显和直接,为什么在业内还有有人对自动化测试有抵触和质疑的声音?
那是因为从团队的老板到做自动化测试的同学,都对自动化测试存在认知上的误区!
在国内的测试行业里面,很多情况下就是“为了做自动化测试而去做自动化测试”这就是典型的本末倒置。无论你在测试的过程中采取什么样的方案和手段,核心都是为了业务去服务的,脱离业务,手段再厉害也没有用。
不得不说,很多情况下,我们的老板们对于自动化并没有一个合理的预期。很多老板想的是:搞了自动化测试就可以不用手工测试了嘛,然后再招几个价钱低的测试就行了。这是大错特错的。
关于领导认知层面的问题:
1、不清楚自动化测试目标是什么,对于达到目标所要进行的投入也没有计划;
2、盲目幻想,认为自动化测试能够省钱,想着搞起来自动化,省掉多少多少人力成本;
3、自动化测试如果做的成功的话,是可以节省成本和提高产品质量,但是却把节省人力成本当做核心目标,这样的对于项目来说是致命的;
4、自动化测试写好一次,能够用很多次,没有必要花很多时间去改代码;
简单的说一下,如果有这种情况出现,说明你遇到了一个啥也不懂外加异想天开的领导。
但是作为测试者,对于自动化的认知一样存在很多的误区,尤其是刚开始做,一瓶子不满,半瓶子晃荡的时候,既不能认为自动化能够搞定一切,也不能认为自动化很费时费力,具体情况具体对待。
当然不可否认的是,自动化测试是存在它本身的局限性的。
客观存在的局限性:
1、对于工具而言,是不具备想象力的,一些例如思考、界面、美观、易用性的测试,自动化测试会有些无能为力;
2、效率较为依赖用例设计,同时用例的开发工作量有时会比手工测试的工作量要大;
3、如果测试的实践经验比较缺乏,文档少或者不一致,测试发现缺陷的能力也是比较差,这个时候采用自动化测试也是不太好;
4、对于领导而言,会潜意识期待自动化能够解决遇到的所有问题;另外要认识到,测试没法发现问题,不代表软件没有缺陷,或者测试本身就有问题;
5、开发那边改一个小小的需求,测试这边要对部分或者全部进行测试,自动化也是一样。这方面的开销或者耗费会打消做测试自动化的积极性。
6、如果期待自动化去发现大量新的缺陷,这不现实,更大的意义在于用在重复已经运行过的测试。
所以,说到这里,你就会明白,如果遇到一个不懂自动化测试的领导,而领导的领导又压着他带领你们搞自动化测试,又不愿意采纳自动化大牛的意见建议,那么整体的方向就会走偏,而且会非常的耽误你自身的成长和发展。
写给测试管理者:
当然如果你是测试经理或者总监,你就不能简单化和孤立的去看待自动化测试,确保自己能够听取真正理解产品、团队和自动化的测试工程师的判断。
作为管理层去引入自动化的时候,也一定要思考3个问题:
什么样的项目适合自动化
自动化测试的介入时间
自动化程度和自动化率
什么样的项目适合自动化:回归测试为主的项目,长期需要做支持维护;覆盖率测试;压力测试。
自动化测试的时间:在项目的初期可能就不太适合,因为接口和用户界面没有稳定,代码来频繁改动,维护成本会非常的高;到了项目的后期和维护阶段,自动化介入,为回归测试做准备。
自动化程度和自动化率:项目早期可能不太适合用自动化,但是可以选用某些环节,比如环境的搭建、稳定的公用接口、软件的部署等,这些都是比较稳定的。当然也可以根据具体的项目类型进行不同的调整。
基于我的经验,给你6条实用建议
第一条建议:先学习编程语言,然后再接触自动化工具。
语言选择上Java或者Python都是可以的,可以先从Python入手,之后再开始Java。在学习语言的过程中,一定要忘掉你是做测试的,把自己当成开发,系统的去学相关的编程知识,因为语言水平的高低,很大程度上就决定了自动化水平的高低。
第二条建议:打好基础,而不是本末倒置的学习自动化测试工具
不理解http协议,就不会理解loadrunner、fiddler、soapUI这些工具;不理解HTML,就不会理解firebug。所以基础打好了,才会事半功倍。
第三条建议:清晰的认清自己,明确自己的目标
说白了,咱干什么事情之前肯定要先看看自己有几斤几两对吧,先评估一下自己现在的能力水平,然后再看下自己能够投入什么样的资源(精力、时间、资金)去学习,这样才会知道什么样的内容自己能够搞明白,哪个阶段要请教大牛,别整到最后越学越迷茫;其次就是认清自己能力之后,就要给自己定好合理的目标,多长时间达到什么样的水平。
第四条建议:选择好切入点,设计好对自己帮助最大的方案
接口自动化:Python+Unittest+HtmlTestRuner+Jenkins和Java+Httpclient+TestNG+Jenkins
web自动化:Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins
APP自动化Robotium+Java+TestNG+Jenkins,Appium+Java+TestNG+Jenkins,Appium+Python+Htm
lTestRunner
辅助测试脚本:以Shell,Python为主来简化重复的工作,过滤日志等
当然这些都是基本的实现方案,别的先不介绍。如果刚开始接触,我建议是选择语言之后,然后从接口测试入手,然后再学习web和APP自动化。
新手上路,容易着急,啥都想学,这样就容易混淆,也不好消化。很多地方都是相通的,代码架构、用例管理、等都可以举一反三,既可以提升你的学习效率,也不会混淆。最重要的是不能纸上谈兵,一定要动手去实践。
第六条建议:不要受限于工具,多用开源
在测试行业,自动化测试工具有很多,但是大公司趋向于用开源的框架和工具,然后定制适合自己的测试方案。学着用一些开源的例如Webdriver, Appium等去搭建自己的自动化测试工程,然后掌
掌握整体的自动化工作原理,为以后能够搭建自己的工具平台做准备,毕竟搞定自动化,可不是会使用几个工具那么简单。
自动化测试的最高境界:开发测试工具、设计自动化框架,让别人用。
写在最后:
无论你在测试团队中是什么样的身份,无论你对于自动化测试是什么样的认知,也无论你对自动化测试是爱还是恨,自动化都是你从手工测试转为测试开发的必经之路。
或许你会听到自动化测试成本高、效果差、效率低等负面的反馈,但你要清晰的知道,这都不是自动化测试的问题,对于某种工具,某个方案,最终的效果还是由实施者来去决定的。
我们能够做到的是正视自动化测试,找准方法,不断的提升自己!
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!!这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
零基础转行软件测试:自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!