5年测试岗,自动化测试经验总结(真实)他的测试之路高歌猛进...

news2024/12/24 2:44:28

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

8年测试工程师的自动化测试经验分享(刘工)

第一次接触自动化

那时第一次上手自动化测试,团队里用的是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存储数据的问题和没有做数据正确性的校验。

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

总结:
在我看来,做好自动化测试需要规避以下几点:

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

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

3、自动化的场景
一种是基本场景,另一种可以是前端无法实现的场景。

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

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

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

坚持不懈的努力是成功的关键,即使一时遭受挫折也不要气馁,要相信自己,勇往直前迎接新的挑战。只有不断超越自己,才能成为更好的自己,让未来充满无限可能!

每一次的尝试都是一份勇气,每一步的奋斗都是一份努力,不管前路如何曲折,只要你坚定心志向前,终究会迎来成功的花开。让我们一起奋斗,为理想而努力!

只有那些不断尝试、坚持不懈、永不放弃的人,才能最终实现自己的梦想。所以无论遭遇多少挫折和困难,都要勇敢前行,不断超越自己,为心中所爱努力奋斗!

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

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

相关文章

软考A计划-2023系统架构师-知识点集锦(2/4)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

26键 or 九宫格?不论哪个都不耽误黑客们窃取你的信息!

我妈找我说,可以邮寄杨梅了。我二话不说,直接开始给她我的邮寄地址。快速输入的地址让我想到一个问题,现在的输入法是不是知道的太多了? 我只要打出“浙江省杭州市”,联想出来的就是我所在的市区和街道,下…

【git切换分支/tag】git stash保存暂不提交的更改

目录 问题git stash使用方法git stash pop 还原修改 git stash使用、修改指定tag的代码 其他git指令 问题 情景:分支1上开发新功能,临时切换到其他分支或tag上修改bug。 1、直接切换:如果没有冲突,分支1的修改会带到要切换的分支…

Python-深入不出的字符串

深入不出的字符串 字符串是由独立字符组成的一个序列,通常包含在单引号(‘’)双引号 (“”)或者三引号之中(‘’’ ‘’或"“” “”",两者一样),比如下面几种…

感觉被榨干了,被美团拷打一小时...

普通本科毕业后,进了一家互联网公司,这几年里不断在积累经验,最终选择跳到美团,涨薪了50%,下面分享一下我个人的面经和一些心得建议。 面经 面团一面 自我介绍专业技能一条条核对下来 有软件测试流程、用例设计方法…

Layui项目实战

使用语言&#xff1a;C#&#xff0c;Js&#xff0c;Html 使用框架&#xff1a;MVC&#xff0c;Layui 使用插件&#xff1a;JQuery&#xff0c;Layui 一.Layui父窗体前端代码&#xff1a; 1.Html代码&#xff1a; <div class"layui-col-md12" style"paddin…

如今做泛娱乐出海,你需要融云《社交泛娱乐出海作战地图》

出海需要的从来都不是上头&#xff0c;而是专业。关注【融云全球互联网通信云】了解更多 星期四的下午&#xff0c;笔者收到了一份特殊的“投喂”——一份详实到出乎意料的《社交泛娱乐出海作战地图》&#xff08;下称《作战地图》&#xff09;。 内容上&#xff0c;它覆盖了从…

英语、数学不精,还可以选择IT行业吗?

临近毕业季择校季&#xff0c;又有一群小伙伴面临着无法确定专业选择方向的难题。 就IT行业来说&#xff0c;有很多同学会有这样的疑问&#xff1a; 对计算机专业的不是十分了解&#xff0c;能学吗&#xff1f; 之前数学不太好&#xff0c;怎么学编程&#xff1f; 学编程对…

Python 接口测试之Excel表格数据操作方法封装

引言 我们在做接口测试&#xff0c;经常会用到excel去管理测试数据&#xff0c;对Excel的操作比较频繁&#xff0c;那么使用python如何操作Excel文件的读与写呢&#xff1f;由于之前讲的都是大的框框&#xff0c;没有讲这么小的模块使用&#xff0c;现在就化整为0的讲解。 读…

黑客工具软件大全

黑客工具软件大全100套 给大家准备了全套网络安全梓料&#xff0c;有web安全&#xff0c;还有渗透测试等等内容&#xff0c;还包含电子书、面试题、pdf文档、视频以及相关的网络安全笔记 &#x1f447;&#x1f447;&#x1f447; 《黑客&网络安全入门&进阶学习包》 &a…

深度学习笔记之Seq2seq(三)注意力机制的执行过程

深度学习笔记之Seq2seq——注意力机制的执行过程 引言回顾&#xff1a;经典 Seq2seq \text{Seq2seq} Seq2seq模型中 Context \text{Context} Context向量的缺陷注意力机制的动机 Seq2seq \text{Seq2seq} Seq2seq中的 Attention \text{Attention} Attention结构注意力模型的数学…

chatgpt赋能python:Python如何合并集合?

Python如何合并集合&#xff1f; 在Python编程中&#xff0c;合并多个集合是一项常见的任务。集合合并在数据处理和分析领域中极为常见&#xff0c;例如在合并用户数据时&#xff0c;需要将多个相同字段的集合合并为一个完整的集合。 本文将介绍如何在Python中合并集合&#…

【语音之家】AI产业沙龙 —— 解读火山语音团队在国际顶会ACL2023的创新突破

由CCF语音对话与听觉专委会 、中国人工智能产业发展联盟&#xff08;AIIA&#xff09;评估组、火山语音、语音之家、希尔贝壳共同主办的【语音之家】AI产业沙龙——解读火山语音团队在国际顶会ACL2023的创新突破&#xff0c;将于2023年6月14日19:00-20:20线上直播。 沙龙简介 …

JVM中方法区、永久代、元空间详解以及关系?

首先我们需要先复习一下jvm的大致内存图&#xff0c;如下&#xff1a; 哦~ &#xff0c;想起来了&#xff0c;原来方法区属于jvm的运行时数据区&#xff0c;且作用就是存储类信息、方法信息、常量池信息等静态数据。 &#xff08;补充一下&#xff1a;运行时数据区中的红色是指…

​跨部门网络搭建,核心在这30行里

大家好&#xff0c;我的网工朋友。 在企业网络中&#xff0c;想要实现跨部门的VLAN互联互通&#xff0c;其实有很多方式。 你可以通过子接口实现&#xff0c;也可以通过VLAN-Interface实现。但在实际工作中&#xff0c;很多网工朋友&#xff0c;遇到这种情况&#xff0c;很容…

【Selenium2+python】自动化unittest生成测试报告

前言 批量执行完用例后&#xff0c;生成的测试报告是文本形式的&#xff0c;不够直观&#xff0c;为了更好的展示测试报告&#xff0c;最好是生成HTML格式的。 unittest里面是不能生成html格式报告的&#xff0c;需要导入一个第三方的模块&#xff1a;HTMLTestRunner 一、导…

java小技能: 使用response方式下载txt文件(使用response的方式进行文件的传输)

文章目录 引言I 后端代码1.1 思路1.2 封装1.3 用法1.4 防止文件名称中文乱码1.5 指示哪些报头可以公开 Access-Control-Expose-Headers1.6 创建目录II 前端下载文件引言 项目需求:进行txt文件的下载 其他思路:写好文件在下载的方式 本文思路:使用response的方式进行文件的传…

【实战】minigpt4的体验和微调

MiniGPT-4 https://github.com/vision-cair/minigpt-4 1 环境配置 1.1 安装环境 git lfs install //如果报错 &#xff1a;git: lfs is not a git command. See git --help. //尝试使用&#xff1a; sudo apt-get install git-lfs git lfs install1.2 准备Vicuna权重 &…

树的概念和性质

文章目录 树的基本概念树的定义和术语树的遍历树的种类 二叉树二叉搜索树AVL 树红黑树 完全二叉树和满二叉树哈夫曼树 多叉树B 树及其变种B 树B 树和 B* 树 目录 树的基本概念 树的定义和术语 树是由零个或多个结点组成的具有层级关系的数据结构。 当树的结点数量等于零时&a…

暴力递归到动态规划(四)

⭐️前言⭐️ 本篇文章是从暴力递归到动态规划篇目的最后一篇文章&#xff0c;包含了几道题目还有最终的大总结&#xff0c;相信这篇文章能让各位读者对动态规划有更深一步的了解。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601…