• 0
  • 0
分享

1.png

重新认识自动化测试

我从事软件测试工作以来,第一次知道自动化是 15 年年底,听大佬说 QTP 可以录制脚本然后自动化回放,测试效率很高,当时心向往之。不过当时技术比较菜,而且对工作也比较迷茫,听过就忘记了。

大概 16 年时候,测试圈子自动化测试开始火爆了起来,当时基于 selenium 的 UI 自动化测试特别火爆。圈子里讨论,培训班推广,很多关于基于 selenium 的 UI 自动化测试的技术文章和书籍开始不断涌现。

我本人是 17 年年初才开始学习自动化测试并且尝试在工作中应用的,确实在回归测试和造数据方面,给了我很多的帮助,当然由于比较早吃螃蟹,在后面跳槽找工作时候,涨薪幅度也挺大。

大概 18/19 年时候,各种自动化测试平台开始在各技术大会、技术沙龙以及技术社区被大家讨论了起来。几个大厂的测试平台之类的最佳实践也开始被大家模仿借鉴学习,这一点大厂做的还是很好的,最起码指引了部分迷茫同学的技术提升和职场发展方向。

差不多 20 年底 21 年时候,我已经是个测试圈子的老鸟了,开始带团队,负责部分招聘和技术面试工作,也会帮业务线的测试同学交叉面试一些候选人。我发现自动化测试已经成了业务测试同学的面试必问技能。前几年大家觉得功能测试最多只负责功能+接口,自动化测试需要有专门的岗位,而近几年,自动化测试成了业务测试的必备技能。我个人认为原因有如下几点:

  1. 软件工程理念在实际工作中的不断深入;

  2. 业务迭代加速以及系统架构不断复杂化倒逼测试提升效率;

  3. 自动化测试工具/框架/技术实践不断丰富成熟以及求职市场的整体水平提升;

其实自动化测试的理念很早就被提出来了,国外也有很多的实践,国内相对较慢,但近几年测试圈子整体的基础技术建设也在快速发展。在我现在的认知里,自动化测试的能力可以算是测试团队的基础技术建设了。

因此,我的建议是,无论是刚入行的萌新,还是之前一直做功能测试的同学,为了更好的职场发展和增强竞争力,具备做自动化测试的技术能力也需要快速提升起来。

新手落地自动化测试

在讨论新手从零到一落地接口自动化测试之前,我想先抛出我的几点建议:

  • 从零开始,不要直接去学习所谓的自动化框架;

  • 学习框架之前,很有必要学习网络协议和编码知识;

为什么这么说?新手一般技术基础不太扎实,且没有太多编码实践,直接学习框架特别容易一步一个坑。

从零开始学习落地接口自动化或者其他自动化测试,我更建议从易到难的去落地实践,这样一方面可以在日常工作中优先保证工作的完成,提升工作效率;另一方面就像打怪升级一样,从易到难去学习提升自己,并不断优化自动化测试在工作中的实践。从易到难落地接口自动化测试,大概可以遵循如下几个步骤:

  • 学会用工具进行接口测试(如 jmeter/postman);

  • 学会用持续集成工具(如 jenkins)将接口测试脚本批量执行;

  • 学会诸如 git/gitlab 等版本和源代码管理的工具,便于团队多人协作;

  • 学习一门编程语言,利用自动化测试框架将工具脚本转化为代码脚本;

  • 学习将公共部分封装,优化代码结构,提高写代码脚本的效率,降低维护成本;

  • 学习数据参数化管理的方法,可以从 Excel——配置文件——数据库——造数工厂这个方向迭代;

  • 尝试按照业务线和测试场景区分脚本集合,然后引入 mock,降低服务间的调用依赖,提高执行效率;

  • 开始画大饼,造轮子,搞 KPI,开发自动化测试平台;

自动化测试成熟度模型

本文第二部分的内容来源于我前几天写的文章:《从零到一落地接口自动化测试》,这里以从零到一落地自动化测试的几个步骤,来谈谈自动化测试的成熟度模型。

初级阶段-测试半自动化

先利用工具将日常费时的手工测试部分转化为半自动化(如 postman/jmeter/jenkins),不要考虑什么框架或者 CICD 等高大上的东西,先解决部分效率问题,才能有时间和资源投入后续的建设。当然这个阶段更适用于初创企业或者小型公司的测试同学。

中级阶段-回归测试自动化

有了前期的部分建设,接下来可以将日常的提测冒烟测试、系统测试阶段的主流程回归测试以及部分造测试数据的过程转化为自动化。这个过程中一方面需要培养提升建设团队同学的技术能力,另一方面为自动化测试的大范围落地做铺垫(毕竟很多公司自动化测试看不到短期效益就变成了纯粹的 KPI 然后不了了之)。

注意:上面我说的都是测试自动化,并不是自动化测试。测试自动化指的是先将日常手工测试比较费时且重复度较高的部分转化为利用工具执行,这样做是为了提高效率,解放人力资源,也是为了打好基础,顺带让领导知道,做这些事对团队有长期价值的。

高级阶段-大范围自动化测试

到了高级阶段,我个人认为就可以开展大范围的自动化测试了。这里的大范围并不是说完全不需要手工测试,而是按照自动化测试的纺锥模型(不是金字塔模型),按照 UI-10%/API-70%/UNIT-20%的占比去不断建设和落地。

2.png

当然,这个阶段可以开始尝试测试左移的实践,测试同学去做更多具有创造性和探索性的工作,比如:

  1. 花更多时间在需求阶段,包括需求分析和需求评审,做好需求阶段的质量卡点;

  2. 设计更高效的自动化测试流程框架,提升测试用例的有效覆盖率(正交实验法);

  3. 推动研发同学实践单元测试,测试同学提供 case 并评审验证,研发同学负责落地;

  4. 建设质量度量相关的事情(为了解决问题验证效果而度量,并非为了度量指标而魔改自动化);

成熟阶段-自动化测试流水线

有了前面三个阶段的技术建设和用例沉淀以及不同团队间的协同配合,这个阶段可以考虑将自动化测试融入到企业的自动化交付流水线中。大致思路如下图:

3.png


作者:佚名

原文链接:https://xie.infoq.cn/article/db27ba6a85b9ce76489231be0

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 使用JMeter做性能测试模拟多少用户发请求本质上依靠的就是线程组元件,线程组会告诉JMeter你想要模拟的用户数量,用户发送请求的频率和发送的数量。一、线程组配置字段说明以中文为例,字段含义如下:【名称】:线程组的名称。【注释】:对于线程组的描述相关注释,不是必填项。【在取样器错误后要执行的动作】:取样器发生错误要执行哪个动作,包含继续、启动下一进程循环、停止线程、停止测试、立即停止测试五个动作。这五个动作的含义如下:继续:取样器发生错误,忽略错误继续执行,默认选项启动下一进程循环:取样器发生错误,忽略错误并停止当前线程循环,执行下一个循环停止线程:当前线程运行完毕后,停止所有线程停止测试:...
            0 0 2128
            分享
          •   当一份工作严重占用你的休息时间、影响健康,我觉得这是一种不正常的现象。  纵使很多人都在坚持,但每个人都有选择的权力。当我有了宝宝之后,最大的期望就是她将来长大成人之后,能够从心而活。  在我面临这样的情况时,纠结了一段时间,最后还是选择了离开,当时的工资对我来说绝对算是一种诱惑,是我迄今为止领到最高的一次工资。  当天,办完离职后,整个人是放松的状态,没有焦虑,更多的是坦然。我想,那一刻我应该是女儿的榜样,我活成了我期望女儿成为的模样,  离职2天后,依然有需要工作交接的同事在微信里问我:“你离职了么,找到工作了啊?”  我说:“还没,先休息一段时间再说。”  "那你为什么离职...
            13 13 1288
            分享
          •   盲区预警(BSW blind spot detection)  通过车辆周围排布的传感器及盲点探测器,在超车、换道、大雾、雨天等易发生危险的情况下,通过后视镜以及仪表显示提醒驾驶员。当驾驶员开启该功能时,车速处于20-70km/h的行车工况下,未开启转向时,当同向车道有同速度车辆,进行后视镜显示报警信息,当开启转向时,增加仪表信息显示报警。  车道偏离预警(LDW lane departure warning)  当系统开启时,摄像头会时刻采集车道线,通过图像处理获取车辆的位置参数,当检测到车辆偏离汽车轨道时,传感器会及时手机车辆数据和驾驶员操作状态,发出警报,如果驾驶员打开转向灯,则不发...
            0 0 1391
            分享
          • 问题描述: 有些系统接口判断用户是否登录,是校验登录接口成功后传的token值,也就是请求系统所有接口时,前端传参必带登录成功后接口返回的token,后台以此检验是否过期或是否有登录。所有接口都依赖登录成功后的token,那么可将token进行关联。本案例实现请求登录接口,获取token,将token关联至另外的get请求或post请求实现步骤:import json import requests import urllib.parse import urllib.request   def doLogin(): &nbs...
            0 0 685
            分享
          •   产品经理可以参考下图的流程方法:  1)需求收集:包括被动和主动的需求收集,其中主动的需求收集要求掌握需求收集的途径和方法,产品创意需要统一纳入到需求收集的范围;  2)需求分析:通过需求分析的层级模型,透彻地分析需求背后的用户问题和痛点,用户的需求场景,必要时还需要通过一些简单的原型确保准确地理解用户需求;  3)需求分发:不是所有需求都要纳入到下一个产品版本,成熟的需求管理团队能够发现高价值的中长期需求,在需求分发环节将其纳入到产品规划;  4)需求实现:该阶段的责任主体是产品开发团队,产品经理需要确保产品开发的各个阶段没有偏离自己的产品概念;  5)需求验证:包括产品经理对产品的验证...
            0 0 933
            分享
      • 51testing软件测试圈微信