从开始测试到年薪40W,我的自动化测试艰辛历程
我希望我的故事能够激励现在的软件测试人,尤其是还坚持在做“点点点”的测试人。
你可能会有疑问:“我也能做到这一点的可能性有多大?”因此,我会尽量把自己做决定和思考的过程讲得更具体一些,并尽量体现更多细节。
每个测试人的经历都不一样,但我希望我的经历中能让你有所收获。

测试新人
我的软件测试职业开始和大多数最普通的测试人员一样,一开始在一家社交平台的公司做软件测试,公司最开始只我人一位软件测试人员,没有任何流程和规范,但好在工作比较轻松,这就导致我有充足的时间学习各种测试技术和工具。
当你认为工作很闲时,这正是你可以有更多的时间投入学习的时候,但是,学习的内容一定要基于自己的工作来,这样才能把学来的技术变成工作经验。
当时,有一些机会在工作中做性能测试,于是,学会了使用LoadRunner和JMeter,有一次需要测试MySQL数据库的性能,用JMeter搞了半天不知道怎么设置,结果叫一位开发的同事帮我过来很快就搞定了。
这让我认识到开发知识对于测试工作的帮助,编程语言的能力会决定你测试技术的深度。
选择Python
大概在2013年的时候,脚本语言变得越来越流行,我正纠结学习Python还是Ruby,后来,我被分到社区项目的测试工作,公司产品开始选用Python开发的,所以,我毫不犹豫的选择了Python。
如果你不知道学习什么编程语言,那么就根据项目的开发语言来,这也会有助于你对测试的bug的理解。
接着,开始用Python语言和Selenium来尝试做自动化测试。那时,关于Python版的Selenium并不多,在学习的同时我开始发表相关博客。
交流是学习新技术的驱动力,大多数时候我们很难坚持学一个新技术的原因就在于缺少反馈,不管是做内部分享或者是社群交流都是很好的反馈机制。
2014年的时候,由于项目的原因,开始使用Robot Framework测试框架,正因为有Python的基础所以很快就理解了Robot Framework框架的工作原理,并可以根据项目的需要开发系统关键字。
掌握自动化工具的原理使用起来才能更加游刃有余,而这也需要你有一定的编程基础的原因。
2015年随着移动App越来越流行,趁着换工作的间隙,我开始学习了一个月的appium自动化工具,但工作中用不到后来就没在继续了。
后来,我开始针对另一个社区项目编写Web UI自动化测试,前后做了几个月,积累了一些经验,开始尝试设计Web自动化框架,当时主要还是针对Selenium API的封装。
自动化测试
为什么我越来越有更多机会去做自动化相关的工作,当然,是我先学会了这项技能,然后才有,公司项目又比较适合去做自动化,所以,我就尝试去做了,最后,这就变成了我的经验。
但是,没多久我会调到另外一个项目负责接公司口平台的测试,这个项目支撑公司内部不同的业务线,为了更加高效的保证接口的质量,开发设计了一套基于PHPunit的接口自动化项目,因为整个接口平台也是有PHP开发,所以,我开始尝试用PHP编写接口自动化测试。这个自动化项目非常高效的保证了接口平台的稳定性,我持续维护了两年。
测试有时候必须跟着项目发展自己的技术,但也正是之前的编程基础和自动化的经验的积累,所以,才会很快的上手接口自动化项目。
2018年我开始做全栈工程师,和团队一起从零开发内部管理平台,后端用Django框架设计接口,前端用vue.js框架设计页面,项目已经在整个公司得到应用。
这个阶段跨度有点大,但应了我前面的一些思路,当你掌握的更多的技术,那么你也会有更多的机会继续提升自己。
你也在往自动化方向发展吗?
在适当的年龄,选择适当的岗位,尽量发挥好自己的优势。
我的自动化测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友花了一段时间整理编写了下面的软件测试工程师发展规划路线,会给你带来帮助和方向:
下面分享我整理的这份2023年可能是最全的软件测试工程师发展方向知识架构体系图。
1、Python 编程与测试开发技术

2、Web自动化测试基础

3、APP自动化测试基础

4、Postman测试工具专题

5、接口自动化测试基础

6、自动化框架封装

7、持续集成

8、Jmeter 性能测试

9、APP性能测试

10、Fiddler 抓包工具的使用

11、TCP/IP协议详情

12、计算机操作系统

13、Linux 系统操作

14、MySQL 数据库

15、RobotFramework 自动化测试框架

16、跨平台的自动化测试框架
上面就是我为大家整理出来的一份软件测试知识架构体系图。
上面就是我为大家整理出来的一份软件测试工程师发展方向知识架构体系图。希望大家能照着这个体系在3-4个月完成这样一个体系的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取
相关文章:
从开始测试到年薪40W,我的自动化测试艰辛历程
我希望我的故事能够激励现在的软件测试人,尤其是还坚持在做“点点点”的测试人。 你可能会有疑问:“我也能做到这一点的可能性有多大?”因此,我会尽量把自己做决定和思考的过程讲得更具体一些,并尽量体现更多细节。 …...
《C++ Primer Plus》第17章:输入、输出和文件(1)
对C输入和输出(简称I/O)的讨论提出了一个问题。一方面,几乎每个程序都要使用输入和输出,因此了解如何使用它们是每个学习计算机语言的人面临的首要任务;另一方面,C使用了很多较为高级的语言特性来实现输入和…...
静态代码审计插件 snyk 使用教程
目录 1、vscode 插件安装 2、手动生成 token 3、自动分析 1、vscode 插件安装 2、手动生成 token 点击登录链接:...
从“服务”,到“赋能”,日日顺再次定义供应链生态建设
在众多不确定因素的交织下,当下的供应链企业变革呈现出前所未有的紧迫感。一体化、全链路的趋势,为企业的发展指明方向,与此同时数字化与科技化开始承托供应链管理能力的升级与变革。 2月15日,由日日顺供应链、运联智库联合举办的…...
MySQL(一):B+ Tree,索引以及其优点, 索引实战, 聚簇索引和非聚簇索引, 最左匹配,索引失效
文章目录一、B TreeB Tree相比于红黑树的优点1. B树有更低的树高2. B树更符合磁盘访问原理二、MySQL索引2.1 B Tree索引2.2 哈希索引2.3 全文索引2.4 空间数据索引三、索引的优点以及什么时候需要使用索引什么时候需要使用索引四、索引实战建立普通索引建立唯一索引建立主键索引…...
06:进阶篇 - Hello,CTK!
作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 在接触任何语言时,我们总能看到“Hello,World!",它的中文意思是“你好,世界!”。由于简洁、实用,所以非常著名。 为了延续这个优良传统并迎接 CTK,在演示第一个插件时,我们使用“Hello,CTK!&qu…...
SpringCloud(一)注册中心
注册中心eureka服务端客户端负载均衡nacos服务端客户端nacos分级存储模型配置集群属性nacos环境隔离-namespace临时实例和非临时实例Eureka和Nacos的异同负载均衡策略饥饿加载eureka 服务端 依赖 <!-- eureka注册中心服务端依赖--><dependencies><depe…...
centos7环境配置
Python Centos7中自带的python2,如果要是用python3,就需要自己安装了,因为yum源中没有python3,需要下载包进行源码编译安装。 安装步骤 1、安装python3相关依赖包 yum -y install zlib-devel bzip2-devel openssl-devel nc…...
如何解锁华为手机PIN/图案/指纹/人脸锁?
您的手机存储主要数据,因此为您的设备设置安全代码让您高枕无忧。屏幕和生物识别锁可在手机丢失时保护您的手机,并使其在被盗时无法访问。每次您需要密码来解锁手机时,但如果您被锁在密码之外怎么办? 今天的话题将独家帮助华为用…...
物理层基本介绍
corset 0 告诉下行初始带宽是多少 initail DL BWP, 4g 是20M带宽,5G是FR1 如果5G是全带宽的话,手机很快就会没电了。 告诉手机带宽会分布在某一个带宽里面去,将手机的带宽调整就行。 DCI,告诉手机,未来的某一个时刻&a…...
数据库原理及应用期末复习汇总(附某高校期末真题试卷)
文章目录《数据库原理及应用》试题1一、选择题(共35分)二、填空(每空1分,共20分)三、T-SQL综合题(共35分)四、综合应用题(共10分)《数据库原理及应用》试题2一、选择题(共35分)二、填空…...
mummerplot gnuplot 安装(nucmer)
可用ref:https://blog.sciencenet.cn/home.php?modspace&uid2970729&doblog&id1174911 下载稳定老版本gnuplot v4.6.2 mkdir gnuplot && cd gnuplot wget https://sourceforge.net/projects/gnuplot/files/gnuplot/4.6.2/gnuplot-4.6.2.tar…...
怎样做校园外卖配送系统创业?打造一体化服务校园平台如何进行?
在大学校园里,兼职赚钱、勤工俭学、自主创业是一种普遍现象。如今,大学校园在大力支持在校生自主创业。比如用校园外卖配送系统创业,不仅可以丰富校园生活,接触人和事,还可以积累经验。 怎样做校园外卖配送系统平台&am…...
MySQL(三):切分,主从复制,读写分离
文章目录一、切分水平切分垂直切分水平切分策略二、主从复制三、读写分离一、切分 水平切分 水平切分又称为sharding,它是将同一个表中的记录拆分到多个结构相同的表中。当一个表的数据不断增多的时候,sharding是必然的选择,它可以将数据分布到集群的不…...
王道考研——计算机网络(第一章 计算机网络体系结构)
1.0认识计算机网络 在下载电影(不会出现乱序问题)和微信收发消息(比如表情包乱序了)所使用的协议是不同的 1.1-1概念和功能 (1)计算机网络的概念 (2)计算机网络的功能 (…...
ElementUI中为什么使用this.$refs.form.validate验证成功却直接跳过
ElementUI中为什么使用this.$refs.form.validate验证成功却直接跳过 问题背景 在写一个Vue练手项目时,我使用rulse对表单中用户输入的数据进行校验,但莫名奇妙就发现:当我点击提交表单时,表单中的数据都验证成功了,但是…...
全期望值定理与全方差定理
全期望值定理(law of total expectation)比较熟悉,竟然还有个全方差定理(law of total variance),关于条件期望与条件方差的,总结一下。 1. 全期望值定理 随机变量 XXX 关于另外一个随机变量 …...
股票的最大利润 AcWing (JAVA)
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖 一次 该股票可能获得的利润是多少? 例如一只股票在某些时间节点的价格为 [9,11,8,5,7,12,16,14]。 如果我们能在价格为 5 的时候买入并在价格为 16 时卖出,则能收获最大的利润 11。…...
Go 语言函数调用参数传递规则
1. 调试环境Go 版本:1.19.3Gdb 版本:12.1CPU 架构:amd64Linux 发行版:Ubuntu 22.04Linux 内核版本:5.15.0-482. 函数调用参数传递规则版本变化在 Go 中函数间进行调用时,主调(caller)…...
二分查找【零神基础精讲】
来源0x3f:https://space.bilibili.com/206214 文章目录二分查找[34. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/)[162. 寻找峰值](https://leetcode.cn/problems/find-p…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
