持续集成 自动化测试爱恨情愁

爱偷懒的QA · 2018年03月29日 · 最后由 爱偷懒的QA 回复于 2020年09月27日 · 2564 次阅读

提起自动化测试,可谓仁者见人,智者见智,心中五味杂陈啊!你从任何一个招聘渠道来看最近两年对测试岗位的要求,几乎都要求会自动化测试。而不少人一直认为手工测试才是王道,工作中有的时候也用不到程序,干嘛在面试的时候要求写代码呢?明明自己的测试能力不错,做了多年的功能测试,为什么面试的时候四处碰壁呢?很是想不明白,难道业界最近几年有点儿盲目推崇自动化测试了吗?
虽然我不能说完全明白这些问题的产生的根源,不过以我这五六年的从事测试工作的经验来分析一下这些问题的来龙去脉,可能也不是十分准确,希望能给迷茫的同学带来一些思考。

一, 什么是自动化测试
什么是自动化测试呢?关于这个问题,可能没有准确的答案。普遍认为的是接口自动化测试,WebUI 自动化测试,App 自动化测试等被冠以自动化命名的测试方案。其实不然,自动化测试是相对于手工而言的,用代码或是借助于第三方工具,把繁复的测试工作从手工转化为机器自动执行的测试方案,可以统称为自动化测试。除了上面所说的三个方面的自动化测试,当然还包括日志过滤,日志回放,接口监控,服务监控等等,根据具体业务需求通过代码把人力从中解放出来的代码手段。
二, 为什么要做自动化测试
那企业或者是我们测试人员为什么要做自动化测试呢?从工作角度来说,目前互联网行业需求迭代非常快,人员流动也比较快,所以一个需求从提出到上线时间比较紧急,同时对于其影响的范围也可能不太清楚,在上线之前必须对原有功能进行回归测试。不管是接口还是从客户端,都需要大量的测试工作,而且在大数据时代,测试用例量也是非常庞大的,如此繁复单调的工作让人工来测试的话,根本不能保证效率和质量,所以必须要借助于非人工手段来实现。从个人发展方面来讲,时代在发展,对我们的要求也越来越高,所以我们要迎接变化,不断提升自己才行。虽然你可以坚持手工测试是基础,是王道,可是并没有企业愿意为你这个信念买单。除非你生活无忧无虑,可以坚持自己的信念,否则你就要尊重业界发展的规律,不断充电从而使自己更有价值。

三,如何实施自动化测试?
虽然业界比较注重自动化测试,不过永远要记住下面一句话:“不要为了自动化测试而做自动化测试!” 不管你在测试工作如会采取什么测试方案,测试手段,这一切都是为了业务服务的,脱离了具体的业务,你的辅助手段再厉害也是无用的。
在实施你的自动化测试工作之前,你必须对要测试的业务非常熟悉,核心业务流程,具体的功能模块的实现,前后端如何交互,以及业务未来的发展与迭代频率等等。然后按以下思路来进行选择与实施你的自动化测试:
(1)根据业务特点,选择自动化测试方案。你的业务是前后端分离的吗?业务比较注重用户交互还是数据完整性?用户量有多大,有没有需要承担的压力等等,通过考虑业务的特点,才能选择比较合适的方案。
(2)根据业务侧重点,确认自动化覆盖范围和粒度。通过业务特点选择了自动化测试方案,然后就需要根据业务侧重点来确认范围和粒度了。比如说,你确定要进行 Web UI 自动化测试,肯定不能看着页面就去写自动化测试用例嘛,要根据业务重点来确认。哪些业务流程是核心,必须覆盖?哪些功能暂时有技术难点,或是变化比较快,可以放为二期来实现。通过对手工用例的评审,来准确确定自动化测试的范围,实现用例的粒度。
(3)根据自动化测试用例范围,选择实现框架和语言。目前业务自动化测试工具,开源框架可谓多如牛毛,让人有点儿无从选择,但是它们还是各用侧重点的。我们需要根据测试用例的范围和特点,参与人员的水平,用例的使用场景和未来的计划来选择合适的框架。比如说,我们要做接口自动化测试,而参与人员大部分不会代码 ,那选择 Python+Unittest+HtmlTestRuner+Jenkins 就比选择 Java+Httpclient+TestNG+Jenkins 实现起来成本更低。
(4)根据用例用途,选择执行策略。根据我们自动化测试的用途,是做上线前回归,还是触发式回归?需不需要做监控?执行环境是什么?来去确认是否做持续化集成,是否发执行结果与错误预警,用例或是用例集管理方案,指定维护人员等等工作!

四,如何学习自动化测试
既然自动化测试是手工测试提升的一个必经之路,虽然自动化测试没有那么高大上,但也是必不可少的。那作为一个有理想的测试人员,应该如何去学习自动化测试呢?
(1)准确定位自己,明确目标
有不少同学意识到了自动化测试的重要性,就去网上查询资料啊,或是报培训班学习啊,可是到最后越学越迷茫,处于会与不会之间,前路不知如何去走?这是什么原因呢?
这是因为你在学习自动化测试之前没有想明白几个问题:我的真实水平如何?如果学习一项新的技术或是语言,我愿意投入的精力是多少?从现在开始学习,三个月或是半年后应该达到什么目标?我了解现在业界的自动化测试类型或是体系吗?想好这些问题再去入手学习,必定事半功倍。
(2)全面了解,选好切入点
目前自动化测试方向大概有以下几个:
A,辅助测试脚本方向,以 Shell,Python 为主来简化重复的工作,过滤日志等;
B,接口自动化测试方向,Python+Unittest+HtmlTestRuner+Jenkins 和 Java+Httpclient+TestNG+Jenkins,当然还有很多其他二次开发的框架或工具,不过核心是一样的;
C,页面自动化方向,主要有 Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins,以及其他的框架和工具;
D,App 自动化测试方向,以 Robotium+Java+TestNG+Jenkins,Appium+Java+TestNG+Jenkins,Appium+Python+HtmlTestRunner 为主。
当然这里介绍的都是简单的,最基本的实现方案,作为入门学习比较合适。其他五花八门的二次开发的框架,包含众多功能的方案留待你以后提升。先从这几方面了解入手,选择一个语言体系,建议从接口自动化入后,然后再去学习页面和 app。
(3)步步为营,不要贪多
我们在提升自己的时候,发现有好多东西需要学习,于是就很着急,想同时学习很多东西,其实这并不好。学的太多容易产生混淆,而且不容易消化,你仔细调研一下就会发现,很多东西都是通着呢。代码架构,用例管理,执行策略,持续化集成思想都可以举一反三,关键是自己要动手真正实施起来,在公司现在的框架上写用例,不管你写多少,不了解整体结构都是没有用的。
(4)抛弃工具,多用开源
业界好像从来不缺少自动化测试工具,QTP,Robot Framework,LoadRunner 等等,知名不知名的数不胜数。先不说这些工具效果如何,目前大公司是从来不用这些工具的,大家都使用开源的框架,工具进行定制化自己的测试方案。所以刚刚学习自动化测试的时候,也不要依赖工具,使用开源的 Webdriver, Appium,Robotium 等搭建自己的自动化测试工程。掌握一个整体的自动化工程工作原理,为以后搭建自己的自动化工程,工具,平台做准备。
不管你对自动化测试是爱,是恨,它是从手工测试转为测试开发必经的阶段。可能你了解到自动测试没有用,实施起来维护成本高,执行效率低等负面信息,其实这不是自动化测试的问题。要知道,它只是一个工具,一种测试方案,最终的效果还是由实施的人来决定的。在 12,13 年的时候,用 Jenkins 做持续化集成比较热门,接下来几年好像没有那么火了,但是近两年 docker 技术的出现,又使 CI,CD 变得火热起来。我们是不是应该端正对自动化测试的态度,明确什么才是你想要的,找准方法,不断提升自己呢?

共收到 17 条回复 时间 点赞

功能测试:重复点点点,自动化测试:写着重复的代码😀

zhiqingjiang 回复

这不是重点,重点是通过复制粘贴,加上稍微的修改,你的薪资待遇就上去了,😄

Realobot Framework

Robot Framework 吧

评论区才是重点

可惜很多公司招来了自动化测试,到公司还是相当于功能测试

个人觉得,把冒烟测试自动化,已经满足了大部分公司大部分团队的基础需求了。
其他的,从效率,从成本来看,还是以功能为主。

这个就需要我们自己来把握了,面试的时候需要问一下部门负责人,他们对自动化测试这一块有没有什么计划?如果计划不清,支持力度不够,那就不能去了

Bianca 回复

这个观点不全面,你可以去了解一下现在业界主动的公司是怎么做自动化的。由于这个技术比较成熟了,小的创业公司什么的,用的比较简单,大公司都是系统化的使用。

chen 回复

看的真仔细,应该是 word 自动给我转成英语单词了,多谢提醒!

看了不少自动化的文章,这篇写的是真棒(全面,详细,且有内容)。

狂天 回复

客气了,自己的一些儿感受,多多交流哟!

宋老师,我没太懂这几个词:日志过滤,日志回放,接口监控,服务监控,错误预警。能讲解下吗?

爱偷懒的QA 回复

你要相关的文章写的多的话感觉可以考虑出书了,因为我阅读你文章的感受到的品质就如同在看书一样。

Thirty-Thirty 回复

要做流量回放的话,需要从线上的服务器抓取日志,但是并不是所有的日志都能回放到测试环境中的,如用户的 post 请求,修改线上数据的请求就不能回放,所以需要过滤一下。然后修改一下日志中请求的地址,再请求一次,将请求打到测试环境中,就叫日志回放。接口监控,服务监控就是对相应的接口,服务的测试通过率设置一个阈值,比如说通过率达 95%,如果达不到这个值,就要发警告给相关人员!

狂天 回复

先前有出版社找我出书,我当时比较忙,就没有答应他们!

爱偷懒的QA 回复

直接在测试环境 “造” 日志,不可行吗?在成本和质量上,造日志相比日志过滤如何?
接口监控和服务监控,通过率低于设定的阀值,可能是接口和服务本身的问题,也可能是测试本身的问题,对吧?

Thirty-Thirty 回复

造日志是万不可行的,场景不够,数量达不到,没有人会这么做的。如果你不信,造一个千万级的访问日志试一下,重复率不能超过 10%;监控要做起来,首先要保证测试工具,平台没有没有问题,如果这些质量都不能保证,还做什么监控啊?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册