当前位置: 首页 > news >正文

干了2年的手工点点点,感觉每天浑浑噩噩,我的自动化测试之路...

作为一个测试人员,从业年期从事手工测试的工作是没有太多坏处的,当然,如果一直点来点去那么确实自身得不到提高,这时候选择学习自动化测试是一件很有必要的事情,一来将自己从繁重的重复工作中解放出来,从事一些更有挑战的工作,二来能积累技术知识,厚积薄发完成飞跃,那么技术新人该如何学习自动化测试呢?

三言两语说不明白,我就根据自己的职业经历聊一聊如何在工作中去做自动化测试。(学习路线和网盘资源放在文末了,肯定不会让大家失望)

初入职场,测试新人

我的职业开始和大多数人一样,刚开始接触都是纯功能界面测试。那时候是在一家电商业务公司做测试,在这个靠技术吃饭的IT行业来说,不断学习是至关重要的。因为一直都是最基础的业务工作,每天点点点,随着时间的消磨,让我产生了对自我价值和未来发展的困惑。

一方面是感觉自己在浪费时间,另一方面就是做了近2年的手工功能测试,感觉每天过得浑浑噩噩,无论是在薪资还是职位上面一直没有明显提升,身边的许多朋友和同事要么升职加薪,要么跳槽去了更好的公司工作,特别觉得自己碌碌无为,没有成长。

在这里插入图片描述

选择Python,最友好的编程语言

所以自己才开始思考怎么去改变现状。当时想法很简单,花时间去学习各种测试技术和工具,提高自己的技术能力,也就是核心竞争力。后来被主管老大偶然发现,给了我一些网盘资源和技术文档,建议我去研究下自动化测试怎么搞。

在当时来说,我还没有接触过自动化测试,但是通过老大给我的资源,帮助我认识到开发知识对于测试工作的帮助,编程语言的能力会决定你测试技术的深度。当然也能带来收入的高度。

那时候正是脚本语言开始流行起来,因为当时公司项目的原因跟Python结缘,开始使用Python+Selenium来尝试做自动化测试。那时,关于Python版的Selenium并不多,在学习的同时我开始发表相关博客和写公众号。

分享是学习新技术很大的驱动力,大多数时候我们很难坚持学好一个新技术的原因就在于缺少反馈,不管是做内部分享还是写技术博客都是很好的反馈机制。当然,也很有成就感。


2015年的时候,由于公司项目的原因,开始使用Robot Framework测试框架,正因为有Python的基础,所以很快就理解了Robot Framework框架的工作原理,并可以根据项目的需要开发系统关键字。

掌握自动化工具的原理,在使用起来才会更加的游刃有余,当然这也需要你有一定的编程基础的原因。

2016年随着移动App越来越流行,趁着换工作的间隙,我学习了一个月的appium自动化测试工具,这对我后面的工作有很大帮助。

后来,我开始针对另一个社区项目编写Web UI自动化测试,前后做了好几个月,积累了一些经验,开始尝试去设计Web自动化测试框架,当时主要还是针对Selenium API的封装。

自动化测试转型之路

当时由于公司的规模和产品的局限性,导致自动化测试始终未能应用到公司实战项目中。但是我始终坚定自动化测试是未来,觉得外面的世界有更多机会,在当时自动化已经流行而且越来越普及,我想要实现自动化测试的落地,提高自己的测试技术能力,所以决然的跳槽一家公司专职做自动化测试的工作。

人只要往前走,机会只会越来越近。后来的机缘巧合,朋友推荐我去一家金融公司做测试开发,负责开发公司定制化的测试质量平台。

这对于我来说是一个新的挑战,测试开发在一线城市非常吃香。当时的待遇比初、中级开发工程师要高。

到岗后第一件事就是顶住压力,不断的学习测试开发技能,而且需要学以致用。技术架构采用的是前后端分离,包括Python的后端开发框架Flask,前端框架vue,elementUI组件等

做了几年的测试开发,真实的体会到测试开发等于测试全周期的工作,包括产品功能业务熟悉,测试平台的需求设计,平台前后端研发,平台的自测,给到测试部门几十号人的推广、培训产品使用、运营。

所以测试开发的大前提是功能测试经验丰富,接口自动化,UI自动化非常熟练,不然很难以开展自动化测试开发工作。

行业内卷,路在何方?

最近聊到软件测试的行业内卷,越来越多的转行和大学生进入测试行业。如果想要获得更好的待遇和机会,不断提升自己的技术能力成了测试老兵迫在眉睫需要解决的问题。

现在无论是面试哪个级别的测试工程师,面试官都会给你问一句“会编程吗?有没有自动化测试的相关经验?”

所以还停留在手工功能测试层面,如果不去提升技术能力,不仅要面临长江后浪推前浪的压力,还要顶住当下行业的内卷之势。不然就只能接受优化,最后甚至是面临淘汰。更别说升职涨薪了

如何从初级功能测试到高级自动化测试开发,达到技术提升和待遇提高的目的,是很多测试人必经的一个阶段。作为一个过来人,对学习提升过程中的困难深有体会。

所以我热衷于收集整理教程资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做自动化的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到企业项目实际落地。

学习指南

如果你也在往自动化测试开发发展

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

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

【自动化测试工程师学习路线】

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

2、Web UI 自动化测试基础内容
在这里插入图片描述
3、Web UI 自动化测试实战内容

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

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

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

7、API 接口自动化测试实战内容
在这里插入图片描述
8、CI/CD持续集成专项技术

在这里插入图片描述
9、自动化测试框架实战技术

配套资源


相关文章:

干了2年的手工点点点,感觉每天浑浑噩噩,我的自动化测试之路...

作为一个测试人员,从业年期从事手工测试的工作是没有太多坏处的,当然,如果一直点来点去那么确实自身得不到提高,这时候选择学习自动化测试是一件很有必要的事情,一来将自己从繁重的重复工作中解放出来,从事…...

嵌入式系统硬件设计与实践(学习方法)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 刚读书的时候,对什么是嵌入式,其实并不太清楚。等到自己知道的时候,已经毕业很多年了。另外对于计算机毕业的学…...

如何拥有自己的Gitee代码仓库

本教程适用码云代码托管平台 https://gitee.com/ 首先在电脑上安装Git(哔站有安装Git教程)和注册gitee账号后再来阅读此教程 1、在设置页面中点击 SSH公钥 2、点击 怎样生成公钥 3、点击公钥管理 4、点击 生成\添加SSH公钥 5、打开终端 输入如图红框中的…...

通用信息抽取技术UIE产业案例解析,Prompt 范式落地经验分享!

想了解用户的评价究竟是“真心夸赞”还是“阴阳怪气”?想快速从多角色多事件的繁杂信息中剥茧抽丝提取核心内容?想通过聚合相似事件准确地归纳出特征标签?……想了解UIE技术在产业中的实战落地经验?通用信息抽取技术 UIE 产业案例…...

integrationobjects/OPC AE Client ActiveX Crack

使用 OPC AE 客户端 ActiveX 进行快速 OPC 警报和事件客户端编程! OPC AE Client ActiveX包括多个 OPC ActiveX 控件,可以轻松嵌入到最流行的 OLE 容器中。这允许用户与任何 OPC AE 服务器连接并实时检索警报和事件。 这种易于使用的 OPC AE ActiveX 简化…...

JavaScript HTML DOM 简介

文章目录JavaScript HTML DOM 简介HTML DOM (文档对象模型)HTML DOM 树查找 HTML 元素通过 id 查找 HTML 元素通过标签名查找 HTML 元素通过类名找到 HTML 元素下面我们将学到如下内容JavaScript HTML DOM 简介 通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素…...

interrupt多线程设计模式

1. 两阶段终止-interrupt Two Phase Termination 在一个线程T1中如何“优雅”终止线程T2?这里的【优雅】指的是给T2一个料理后事的机会。 错误思路 ● 使用线程对象的stop()方法停止线程(强制杀死) —— stop()方法…...

Spring IoC 和 Spring AOP

Spring IoC Ioc(Inversion of control:即控制反转)是一种设计思想,而不是一种具体的技术实现。IoC的思想就是将原本在程序中手动创建对象的控制权交给Spring框架来管理。 不过, IoC 并非 Spring 特有,在其…...

taobao.top.oaid.merge( OAID订单合并 )

¥开放平台免费API必须用户授权 基于OAID(收件人ID, Open Addressee ID)做订单合并,确保相同收件人信息的订单合并到相同组。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请…...

Python自动获取海量ip,再也不用愁被封啦~

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 本次网站: 本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用: import parsel >>> pip install parsel…...

XLua学习笔记 { }

Lua调用C# 通过生成的适配代码进行调用 把在白名单上和打上[LuaCallCSharp]标签的C#类转换成Lua的table,然后注册C#类的方法和属性到table中。性能好,但占用安装包的内存大 通过反射机制进行调用 性能差,在运行的时候才去查找C#的方法&#…...

推荐程序员收藏的几个技术社区以及工具网站

常用技术社区 1、GitHub 网站地址:https://github.com/ 全球最大的开源社区,这点我想大家都清楚。但是今年被微软收购,之前很多的人在那说可能以后GitHub就会变样,但是事实并非如此,目前还没有收到什么信息&#xff0c…...

StopWatch计时器

前言 开发中,为了评估性能,我们通常会使用System.currentTimeMillis() 去计算程序运行耗时 long startTimeSystem.currentTimeMillis();//业务代码... long endTimeSystem.currentTimeMillis(); System.out.println("耗时:" (endTime-startT…...

常见web安全漏洞-暴力破解,xss,SQL注入,csrf

1,暴力破解 原理: 使用大量的认证信息在认证接口进行登录认证,知道正确为止。为提高效率一般使用带有字典的工具自动化操作 基于表单的暴力破解 --- 若用户没有安全认证,直接进行抓包破解。 验证码绕过 on server ---验证码校验在…...

11个案例讲透 Python 函数参数

大家好,今天给大家分享一下明哥整理的一篇 Python 参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上 80% 的文章讲的都要明白,如果你是入门不久的 python 新手,相信本篇文章应该对你会…...

《分布式技术原理与算法解析》学习笔记Day21

分布式数据存储三要素 什么是分布式数据存储系统? 分布式存储系统的核心逻辑,就是将用户需要存储的数据根据某种规则存储到不同的机器上,当用户想要获取指定数据时,再按照规则到存储数据的机器中获取。 分布式存储系统的三要素…...

开源shell脚本系列-检查etcd集群可用性

图好看不?AI生成的,这几天也在测试AI绘图这个东东,挺牛叉的。咱们的社区工具平台在PC的web端已经完成了。大家没事可以去看看,设置个主页也行其实挺好的:https://www.98dev.com/index,主要用于一些关键性新…...

资源限制类题目七大技巧 解决所有大数据资源限制类问题

有一个无符号整数的文件,数据个数有40亿个,如何通过1G的内存返回出现次数最多的数 1. 对每个数调用哈希函数得到哈希值,将哈希值模上100,进行小文件分类(相同的数一定在同一文件) 2. 将每个小文件内出现次…...

adb命令导出手机已安装的android应用apk文件

adb命令导出手机已安装的android应用apk文件,保存到PC电脑 前提条件是手机已经和PC电脑可以通过adb建立连接。 (1)通过adb shell命令获取当前手机所有已经安装的应用包名: adb shell pm list package (2&#xff09…...

华为CT6100双千M路由记录

该文章仅仅记录使用CT6100的流程,不提供任何参考和建议。 一、简介 设备:华为CT6100瘦客服端,J1800cpu,不包含外壳,有双千M网口,2G内存8G硬盘。系统:esir的高大全openwrt版本用途:对…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...