自动化测试爱恨情愁

      提起自动化测试,可谓仁者见人,智者见智,心中五味杂陈啊!你从任何一个招聘渠道来看最近两年对测试岗位的要求,几乎都要求会自动化测试。而很多人一直认为手工测试才是王道,工做中有的时候也用不到程序,干吗在面试的时候要求写代码呢?明明本身的测试能力不错,作了多年的功能测试,为何面试的时候四处碰壁呢?非常想不明白,难道业界最近几年有点儿盲目推崇自动化测试了吗?面试

      虽然我不能说彻底明白这些问题的产生的根源,不过以我这五六年的从事测试工做的经验来分析一下这些问题的前因后果,可能也不是十分准确,但愿能给迷茫的同窗带来一些思考。docker

一,  什么是自动化测试后端

      什么是自动化测试呢?关于这个问题,可能没有准确的答案。广泛认为的是接口自动化测试,WebUI自动化测试,App自动化测试等被冠以自动化命名的测试方案。其实否则,自动化测试是相对于手工而言的,用代码或是借助于第三方工具,把繁复的测试工做从手工转化为机器自动执行的测试方案,能够统称为自动化测试。除了上面所说的三个方面的自动化测试,固然还包括日志过滤,日志回放,接口监控,服务监控等等,根据具体业务需求经过代码把人力从中解放出来的代码手段。架构

二,  为何要作自动化测试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,Realobot Framework,LoadRunner等等,知名不知名的数不胜数。先不说这些工具效果如何,目前大公司是历来不用这些工具的,你们都使用开源的框架,工具进行定制化本身的测试方案。因此刚刚学习自动化测试的时候,也不要依赖工具,使用开源的Webdriver, Appium,Robotium等搭建本身的自动化测试工程。掌握一个总体的自动化工程工做原理,为之后搭建本身的自动化工程,工具,平台作准备。

     无论你对自动化测试是爱,是恨,它是从手工测试转为测试开发必经的阶段。可能你了解到自动测试没有用,实施起来维护成本高,执行效率低等负面信息,其实这不是自动化测试的问题。要知道,它只是一个工具,一种测试方案,最终的效果仍是由实施的人来决定的。在12,13年的时候,用Jenkins作持续化集成比较热门,接下来几年好像没有那么火了,可是近两年docker技术的出现,又使CI,CD变得火热起来。咱们是否是应该端正对自动化测试的态度,明确什么才是你想要的,找准方法,不断提高本身呢?

相关文章
相关标签/搜索