• 阿里35+老测试员生涯回顾,自动化测试真的有这么吃香吗?


    不知道从什么时候开始,软件测试行业就和“自动化”这个词联系在一起了,对于如今的测试人来说,几乎没有人不知道「自动化测试」,甚至查看各大招聘网站,你从任何一个招聘渠道来看最近两年对测试岗位的要求,几乎都要求会自动化测试。

    而不少人一直认为手工测试才是王道:

    工作中有的时候也用不到程序,干嘛在面试的时候要求写代码呢?

    明明自己的测试能力不错,做了多年的功能测试,为什么面试的时候四处碰壁呢?

    很是想不明白,难道业界最近几年有点儿盲目推崇自动化测试了吗?

    虽然我不能说完全明白这些问题的产生的根源,不过以我这五六年的从事测试工作的经验来分析一下这些问题的来龙去脉,可能也不是十分准确,希望能给迷茫的同学带来一些思考。

    什么是自动化测试?

    什么是自动化测试呢?这个问题,可能没有准确的答案。普遍认为的是接口自动化测试,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,Realobot Framework,LoadRunner等等,知名不知名的数不胜数。先不说这些工具效果如何,目前大公司是从来不用这些工具的,大家都使用开源的框架,工具进行定制化自己的测试方案。所以刚刚学习自动化测试的时候,也不要依赖工具,使用开源的Webdriver, Appium,Robotium等搭建自己的自动化测试工程。掌握一个整体的自动化工程工作原理,为以后搭建自己的自动化工程,工具,平台做准备。

    什么是自动化测试?

    不管你对自动化测试是爱,是恨,它是从手工测试转为测试开发必经的阶段。可能你了解到自动测试没有用,实施起来维护成本高,执行效率低等负面信息,其实这不是自动化测试的问题。

    要知道,它只是一个工具,一种测试方案,最终的效果还是由实施的人来决定的。在12,13年的时候,用Jenkins做持续化集成比较热门,接下来几年好像没有那么火了,但是近两年docker技术的出现,又使CI,CD变得火热起来。我们是不是应该端正对自动化测试的态度,明确什么才是你想要的,找准方法,不断提升自己呢?

    如果你也想进军中高级软件测试工程师,可以参考一下我的学习路径,我想也许会对你有所帮助(至少比网上搜索的要有用很多哈哈)。

    一、测试基础

    了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维
    在这里插入图片描述

    二、Linux必备知识

    Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力。在这里插入图片描述

    三、Shell脚本

    掌握Shell脚本:包括Shell基础与运用、Shell逻辑控制、Shell逻辑函数
    在这里插入图片描述

    四、互联网程序原理

    自动化必经之路:前端开发基础知识以及互联网网络必备知识四、互联网程序原理在这里插入图片描述

    五、MySQL数据库

    软件测试工程师必备MySQL数据库知识,不仅仅停留在基本的“增删改查”。在这里插入图片描述

    六、抓包工具

    Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用于各种项目,总有一款适合你的在这里插入图片描述

    七、接口测试工具

    接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman在这里插入图片描述

    八、Web自动化测试Java&Python

    了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理在这里插入图片描述

    九、接口与移动端自动化

    专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用在这里插入图片描述

    十、敏捷测试&TestOps构建

    揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心在这里插入图片描述

    十一、性能测试&安全测试

    软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!在这里插入图片描述
    根据这个学习架构路线,不断地去摸索与提升,突破技术的瓶颈,可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。我也是走过这样一段路,才能获得更多高薪职位的机会,付出终有回报,也算是对我能力的一种认可吧,真正的证明了自己的价值。至少税后30+的薪水是我当前状态下比较满意的。

    最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

    在这里插入图片描述

    这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

    如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

    敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

    自学推荐B站视频:

    零基础转行软件测试:自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!

    自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享

    在这里插入图片描述

  • 相关阅读:
    kubernetes Pod详解
    MyBatis-Plus 系列
    PMP每日一练 | 考试不迷路-12.1(包含敏捷+多选)
    如何在3dMax中使用Python返回场景内所有对象的列表?
    使用gradio库的File模块实现文件上传和生成可下载文件
    lab1-2 初次遇见加壳程序
    数量关系 --- 方程
    mysql如何创建添加索引?
    CUDA入门和网络加速学习(一)
    嵌入式Linux系统编程-》线程基本API+面试题+源码【第6天】
  • 原文地址:https://blog.csdn.net/weixin_57794111/article/details/126121961