5年时间里,自动化测试于我带来的意义,希望你也能早点知道

news2025/1/19 20:42:42

摘要:在我有限的软件测试经历里,曾有一段专职的自动化测试经历。

接触自动化

那时第一次上手自动化测试,团队里用的是Python,接口自动化测试的框架是requests+Excel+Jenkins,APP自动化测试的框架是Appium。

整个公司当时有一款已有的APP,因此在试用期内,我的任务是完成对已有APP的自动化脚本编写和调试。

记得当时刚开始去,很没有经验,在跟功能测试同学了解了业务之后,只顾埋着头部署环境,突然有一天,测试主管问我,是否要输出一份自动化测试用例。我恍然大悟,于是把功能测试的用例拿来参考了一下,对用例做了一次筛选,输出了一份自动化测试用例(现在回过头看,当时的做法真的很草率,既没有一个自动化测试计划,也没有对自动化用例做评审,只知道功能测试同学的痛点就是迭代太快,回归来不及做)。

用例输出后,大概花了一个月的时间,完成了环境部署和基本用例脚本的编写,那时候大概实现了四五十个场景,并且完成了自动发送测试报告。剩下的两个月,我就一步一步的将场景扩充为二百多个。

其间也遇到了一些问题,比如登录图形验证码的获取,不过使用OCR图形识别很快就得到了解决,同事也有使用云打码一类的平台。

最大的一个问题是,当APP版本更新迭代后,固定页面所有的id、class等属性都会变化,因为这些都是写死在代码里的,如果要更改意味着每个page都要更改,工作量非常之大,而且获取这些属性还需要借助一些工具,如UI AuTomatorviewer 、Appium自带的Inspector。

在忙碌了一段时间后,先找到一个安卓开发,跟他排查了一下,他也找不到问题所在,后面又找了另一个开发,他排查之后发现是安卓混淆打包的问题,他给我出了一个不做混淆打包的APP,这才解决了这一问题。

另外一个比较大的问题是,APP自动化测试的运行时间非常久,我们两三百条用例,如果加上失败重试,大概要跑四五个小时,而且还会出现中间脚本出错运行停止的问题。

记得一个印象比较深的事情是,我们第二天要发版了,头一天下班前我开始跑脚本,等到晚上我一直没有收到测试报告的邮件,于是晚上十点多赶回公司,发现自动化脚本已经停止了。

对于时间久的问题,后面我尝试引入UI AuTomator2(以下简称u2)框架来代替Appium,毋庸置疑,u2在执行速度上有很大优势。

我曾经对比过这两个框架,同一个场景,Appium需要耗时60多秒的,u2只需要20多秒,足足节省了三分之二的时间。

但随之而来新的问题是,u2不太稳定,Appium中查找元素有用到显式等待、隐式等待和强制等待,而u2中看似不需要这些,实际上多跑几遍场景就会发现u2执行太快会找不到元素,因此还得手动加上强制等待。这样一来时间并没有节省多少。

这个问题当时没有得到解决,反而是在我离职后的一段时间里,通过学习pytest-xdist的文档,发现pytest-xdist可以基于ssh和socket来实现分布式执行。

举个例子,假如有200条场景,同时启动2个执行机,那么就会往执行机-1上推送100个场景,往执行机-2上推送另外100个场景,最终两个执行机的测试报告会集成为一个报告。这样的解决方案如果当时能应用到实践中,那么APP自动化测试时间过长的问题会得到完美解决,唯一需要注意的是,每个场景要独立,不能相互依赖。

话说回来,APP自动化测试做下来好像没有产生多少收益,因为只有我一个人开发和维护,所以到了维护阶段就显得耗时耗力,特别是本来一个固定的页面改了或者中间插入了一套新的逻辑,就意味着相当多的页面需要调整。

第二次接触项目

差不多这样做了几个月后,公司开始立新的项目,新的项目一开始就下决心要做接口测试,因此我又介入到这个项目中,参加立项会议、参加技术评审,了解了要做哪些,并且接口文档怎么管理,接口怎么定义等等之后,就开始了新项目的接口测试。

那个阶段,使用requests读取Excel的方式在接口不多的时候还挺方便,因为代码框架比较固定,只需要Excel里修改参数。

但随着接口越来越多,也意味着接口之间的依赖越来越多,Excel管理简直就是灾难,在Excel里要理清不同接口的依赖关系,是非常头痛的一件事。

后来我使用Postman做了一些快速测试,等待时间充裕的时候,再慢慢把整个主流程的接口测试加上。在接口测试阶段,前前后后发现了一些问题,但很大的不足是没有解决Excel存储数据的问题和没有做数据正确性的校验。

而且我们还是和支付相关的业务,这使得接口测试结果只能保证服务是正常的,返回码是正常的,但是数据是否正确无从得知。

直到后来,自动化团队换了一批人,新来的同事开始推行Java栈,使用Springboot+httpclient+Maven来作为接口自动化框架,基本舍弃了之前的Python自动化脚本。

那几个月好几位同事投入到同一个项目的接口自动化脚本的编写中,对比之前我一个人负责两个项目的自动化,情况的确好了很多。

这个自动化也是基于场景的,有做正常和异常输入的校验,以及最后的入库检查,脚本量非常大,所有异常场景的请求数据和期望结果都是入库的,后续请求的时候,先从数据库拿到请求数据发送请求,得到响应结果再和数据库的期望结果做比较,正常场景需要手动写逻辑,响应结果里重要字段的值和数据库里的值做比较。

那个时候,考虑了很多前端无法测到的复杂的场景,并发、幂等之类的,因此发现的缺陷更有意义一点,但是维护成本依然比较高。

自动化是什么?

最近的一两年,我有时会想到自动化测试是什么?自动化测试本来是为提高测试效率而生,有时候使用不得当,却成为测试活动中的累赘。

但不可否认的是,自动化测试仍然是行之有效的,区别只是使用的动机和使用的方式,在我看来,做好自动化测试需要规避以下几点:

不要为了自动化为自动化

自动化测试不能基于KPI,而要看当前的项目适不适合做自动化,有没有足够资源的投入和外部团队的配合。

自动化不是万能的

不要贪多求全,妄想所有的测试场景都能通过自动化实现,尤其是更新迭代快的项目。能把稳定的功能实现,并且做好回归 ,已经足够了。

自动化的场景

一种是基本场景,另一种可以是前端无法实现的场景。

而对于接口中无穷无尽的字段进行严苛的异常校验,来保证足够程序足够健壮,有时候反而没有那么必要。

因为开发周期短的公司一周好几个版本,开发根本就没时间对一些不太重要的字段做异常处理,当然重要字段的类型、长度、非空校验等还是要做。

对自动化的认知

有些同行认为,自动化就是为了发现缺陷的,但是自动化发现的缺陷根本比不上功能测试,发现不了缺陷的自动化就没有意义吗?

事实并非如此,尤其是一些回归测试的自动化,一方面是为了提高效率,一方面是为了增强上线前团队的信心。

团队人才的培养

遇到了一些公司,好不容易做起了自动化,做得也不错,等到负责人离职之后,就没人维护了,然后再招一些自动化测试人员另起炉灶,反反复复,归根结底是没有人做技术备份。

很多测试同学虽然也意识到自动化的重要性。但由于技术基础薄弱,缺乏系统性学习和过来人的指点,又缺少全流程的实战演练环境,很难在短时间内自学成才达到企业的用人要求。还有不少同学卡在编程语言/基础自动化测试技术这一关,更不用说掌握高级自动化实战思维和经验并灵活应用了。

【自动化测试学习建议】

我的自动化测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了下面的《自动化测试工程师学习路线》,也整理了不少【网盘资源】,需要的朋友可以文末免费获取网盘链接。希望会给你带来帮助和方向。

1. 自动化测试必备Python编程内容

2. Web UI 自动化测试基础内容

3. Web UI 自动化测试实战内容

4. APP UI 自动化测试基础内容

5. APP UI 自动化测试实战内容

6. API 接口自动化测试基础内容

 

7. API 接口自动化测试实战内容

8. CI/CD持续集成专项技术

9. 自动化测试框架实战技术

上面就是我整理出来的一份自动化测试工程师技术路径图。希望大家能在这个成长过程中收益良多。全方位提升测试技术,建立一套属于自己的技术体系。帮助大家不断学习和优化技术栈,跟进先进和主流的测试技术,给到大家带来的不仅仅是技术和薪资的提升,更多的是改变测试人在IT技术领域的地位和心态,拔高测试行业的技术深度。

最后:这里有我建立的一个专门交流软件测试方面问题的学习群,里面也有很多大公司的技术大牛。很多时候,技术大牛的几句话就会让我们醍醐灌顶,少浪费时间,如果想要多跟有经验的人学习,就找我加入我的软件测试交流裙194117263,以后有工作的内推机会都相互推荐一下,毕竟我们是关系社会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

寻找差值结构的最优顺序

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由6张二值化的图片组成,让A中有6个1 差值结构的每行只能是二进制的3,6,5..3列每列1的数量为1,2,3.B中全是0,排列组合…

“记录新时代 奋进新征程”省市主流媒体共赴省交通集团在建项目采风

近日,浙江省省市13家主流媒体集中走进杭绍甬高速杭绍段绍兴侧路面施工现场、杭金衢高速联络线PPP项目中村大桥及杨家山隧道等施工现场,近距离感受在建工程的标准化施工、数字化赋能以及产业工人队伍打造。 标准化、数字化齐头并进,保障路面施…

脂溶性荧光染料Cy7标记羧酸Cy7-COOH/Carboxylic acids星戈瑞

CY7-COOH是一种含有羧基的化合物,它的分子式为C37H45ClN2O2,分子量519.12。其化学结构中包含有一个吲哚菁骨架,以及一个羧基(COOH)官能团。它的分子式为C37H45ClN2O2,分子量519.12。CY7-COOH是一种近红外荧…

热烈祝贺百华鞋业通过山东省专精特新企业认定!

近日,山东省工业和信息化厅公布了山东省2023年度专精特新中小企业名单,百华鞋业荣誉上榜! 专精特新中小企业是指具有“专业化、精细化、特色化、新颖化”特征的中小企业,多专注于产业链上某个环节,主营业务聚焦&#…

Three.js--》实现3d小岛模型搭建

目录 项目搭建 初始化three.js基础代码 设置环境背景 设置水面样式 添加天空小岛 今天简单实现一个three.js的小Demo,加强自己对three知识的掌握与学习,只有在项目中才能灵活将所学知识运用起来,话不多说直接开始。 项目搭建 本案例还…

AR和VR技术的进展和应用:如何为移动应用开发添加更多趣味和体验?

章节一:引言 作为一名移动应用开发者,我一直致力于为用户提供创新和令人兴奋的体验。随着技术的不断发展,AR和VR技术成为了实现这一目标的有力工具。无论是增强现实还是虚拟现实,它们都能够将虚拟世界与现实世界相结合&#xff0…

可移动磁盘“未格式化”提示?教程帮你重获数据!

可移动磁盘在使用的过程中会出现各种奇怪的错误,比如小编今天碰到的一个,打开分区提示未格式化!可移动磁盘“未格式化”提示?教程帮你重获数据! 可移动磁盘“未格式化”提示?教程帮你重获数据! …

【新星计划·2023】常用的5种VLAN的划分方式,你知道几种?

在说VLAN划分方式之前,先来说一说什么是VLAN?为什么需要划分VLAN? 一、什么是VLAN VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLA…

我还是劝你别去外包,干了4年,废了.....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

AVUE样式、刷新、字典、清空搜索条件等操作

1、操作栏、表格样式的控制 2、下拉框字典的设置 3、日期格式的设置 const dateFormat function(row, value) { if (!value) return ; let format YYYY-mm-dd; let date new Date(value); const dataItem { Y: date.getFullYear().toString(), m: (date.ge…

使用midjourney搞出一套三国人物画像!

当下已进入如火如荼的全民AI时代,最近体验了下midjourney,使用它的以图生图功能生成出来一套三国人物画像,和大家分享下使用心得。 使用midjourney的准备工作 下载工具 使用midjourney生产图片依赖的工具和流程,大致如下&#x…

Parasoft和TASKING联手提供卓越的汽车软件开发和自动化测试

​​Parasoft与TASKING宣布建立合作 2023年4月26日,全球嵌入式软件测试解决方案领导者Parasoft宣布与汽车嵌入式软件开发工具行业领导者TASKING建立合作伙伴关系。Parasoft和TASKING的合作为汽车行业提供了一套完整的软件全生命周期解决方案,通过CI/CD工…

Shell基础学习---2、运算符、条件判断、流程控制

1 、运算符 1、基本语法 “$((运算式))”或‘“$[运算式]” 2、案例实操 2 、条件判断 1、基本语法 (1)test condition (2)[ condition ] (注意condition前后要有空格) 注意:条件非空即为tr…

批量域名综合信息查询-域名批量注册查询软件

域名综合信息查询 域名是一个网站的重要组成部分,它直接影响着网站的流量和排名。对于网站管理者来说,了解域名的综合信息是非常重要的。为了便于管理者查询和了解域名的综合信息,147SEO提供了免费的域名综合信息查询服务。下面,…

案例9:Java公益物资分配系统设计与实现开题报告

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

k8s系列-eureka部署集群

1.基本信息 2.容器信息 容器镜像名称: xxxx:30002/dmp/eureka:2022.10.08.14.39.17 环境变量 参数名称 参数值 eureka.instance.hostname ${HOSTNAME}.dmp-eureka-cloud eureka.instance.prefer-ip-address false eureka.client.service-url.defaultZone http://dmp-eureka…

CLLC谐振变换器的基波分析

CLLC谐振变换器_基波分析 目录 CLLC谐振变换器_基波分析 目录电路图FHA分析基于FHA的电路增益特性分析 电路图 FHA分析 输入电压FHA分析 谐振输入假设为理想方波 V i ( t ) 4 V i n π ∑ n 1 , 3 , 5... ∞ 1 n s i n ( 2 π n f s t ) V_{i}(t)\frac{4Vin}{\pi}\sum_…

拓尔微芯片TMI33421在家电上的应用、特点及概述

TMI33421是拓尔微最新推出的一款30V, 2A 同步降压DC-DC转换器,在效率和可靠性方面表现俱佳。 高效率:最高可达95% TMI33421是一颗同步降压转换器,将2颗MOS管集成在芯片内部,实现更小的功率损耗,在2A的正常工作电流下&…

第03讲:SpringCloudStream实现分布式事务

需求分析 本案例是通过一个发送短信验证码的功能来实验MQ发送消息时实现分布式事务,思路分析如下 消息生产者生产发送验证码的半消息 生产者执行本地事务(将验证码保存到数据库),并记录事务的ID,如果整个过程不出现异…

[点云学习] 一、点云相关知识了解

1.何谓点云? 点云是一种表示三维空间中对象的数据结构,它由许多离散的点组成。每个点都有自己的位置坐标和可能的其他属性,如颜色、法向量和强度等。点云通常由激光扫描仪、相机或其他传感器捕获,用于创建三维模型、地图或进行遥感…