7年软件测试工程师的感悟:与薪资相匹配的永远是实力....

引言  

知乎有个话题“软件测试的工资高还是开发者的工资高?”软件测试和软件开发门槛有差异,在职业起步阶段收入也会有一定的差异,这算是行业内公开的秘密。但随着工作年限的增加,经验的逐步积累,软件开发和软件测试的收入基本会持平。  尤其是在国内大的互联网公司,测试和开发的收入基本没有差距,纯粹的“软件测试”岗位已经逐渐变少,更多的是“测试开发工程师”岗位,像阿里社招基本上都是“测试开发”,薪酬也基本和开发工程师持平。  所以,如果你想从事软件测试相关的工作,好好的规划自己的职业发展道路,必然会获得行业顶薪。

通常情况下,在大的互联网公司,软件测试的发展道路大概有三个方向:管理路线、技术路线、其他路线。如下图所示,每个方向都有具体的发展路线,但是不管走哪条路线,总是要从测试技术干起,所以今天我们只讨论如何规划自己的测试技术发展道路。

你可能在一家行业内很有影响力的公司从事软件测试工作,如果你不规划自己的成长之路,这份工作对你的意义是有限。一般来说,软件测试的职业发展分为四个阶段:入门阶段、发展阶段、进阶阶段、影响力阶段。

一、入门阶段:测试执行和技能储备

  作为一名入门级测试人员,测试执行将占据你80%的工作量,你会根据其他有经验的测试人员设计的用例,去执行测试用例,这个工作可能会略显枯燥也缺乏创意,但是却非常重要。

  在测试执行的过程,你会把自己当做一个真实的用户,除了发现软件缺陷外,还能够思考和反馈软件产品设计的合理性。在这个阶段,是锻炼测试用例管理和场景化测试的最佳时机,同时还会不断积累测试所需要的一些必备技能,例如场景的测试工具的安装使用、一些简单的测试脚本编写等。

  你可以趁此机会打好测试的基本功,如灵活运用“等价类划分”、“边界值分析法”、“流程分析法”等常见用例设计方法,最后要具备很强的测试执行能力,移动端、web端、服务的测试执行各有特点。

二、发展阶段:测试设计和测试策略

  在经历了入门阶段后,你具备了测试执行和使用相关工具的经验,你会很自然地发现自己在一段时间之后就进入了“经验丰富的测试人员”阵营——了解被测软件、具备常见的领域知识和测试策略。

扫描二维码关注公众号,回复: 14541167 查看本文章

  这个阶段你会逐步参与到测试用例设计和总体测试策略中。在制定测试计划时,你的目标不仅仅是让自己坐下来安排测试周期,等待软件开发完成,按计划进行测试,而是应该参与到讨论软件的新特性和用户体验等事项中去。毕竟,你已经对自己所测试的项目非常熟悉了。一旦开始参与这些更具战略性的工作之后,你会发现你的角色影响范围在扩大,薪水也在逐渐增加,岗位层级也会得到提升。

三、进阶阶段:测试自动化和效率

  到了这个阶段,应该算是真正进入了测试的世界,测试执行、测试策略等细节方面不是你首先要思考的问题,你会开始考虑如何提升团队的测试效率。我们不仅要开始问自己“我们应该测试什么”,还要问自己“我们怎样才能更快、更高效、更低成本的测试它?”。

  在这个阶段,你应该打造适合自己团队的测试套件管理工具和自动化测试执行的工具,并推动团队围绕着自动化来进行项目协作。

  开发和测试之间的界限是模糊的,这已经不是什么秘密了,所以请拥抱模糊,向测试开发工程师的角色发展吧。最后,请不要奢望软件开发人员会主动利用自动化来测试,因为他们根本就不care。所以一切自动化推动应该是战略性的,这样的思考维度将使你成为一个更好的测试人员!

四、影响力阶段:领域专家和思考

  此时你应该已经在大厂确立了自己作为一个QA专家的地位,并且从事测试工作多年,深入理解了测试执行、测试策略和优化效率的来龙去脉。这经验积累将会成为任何公司的宝贵资产。

  下一个合乎逻辑的步骤是你开始进入思想领导的角色。在你的就职的公司中,你应该是积极参与重要的产品管理讨论,并能够影响产品的发展方向。对外参加各种软件大会的主题分享,作为一个专家(可能是性能测试或者某个专项测试测试领域的专家),应该为自己建立影响力,并开始展示自己独特的价值主张。这个阶段更多的是将自己的思考融入到实际工作中去,如果还没有开始思考这些问题,应该马上行动起来。

结语

  与薪资相匹配的是你的能力 ,只学测试理论知识是不足以让你在测试行业立足的,还必须掌握一定的开发能力。

绵薄之力

做为一名自动化软件测试,接下来我想分享一下这些年来,我对于技术一些归纳和总结,和自己对作为一名高级测试者需要掌握那些技能的笔记分享,希望能帮助到有心在技术这条道路上一路走到黑的朋友!

1、软件测试基础理论知识:

软件测试理论知识是开展测试工作的理论依据和支撑,是测试很重要的阶段必须掌握的技能。

软件的质量模型:软件测试过程保障软件的质量,从哪些方面保障可以从质量模型出发思考

测试分类:软件测试过程可以按照不同角度进行分类,基础测试到高级测试递进过程

开发流程:告诉测试人员一个软件完整的生命周期,软件从无到有到消亡的过程

测试流程:掌握并指导测试人员在实际项目中如何开展测试工作。这要求测试人员对常见的主流测试流程有较为透彻的理解。遇到不同的软件项目,知道从何处着实能最有效率的测试软件缺陷

测试计划与方案:如何规划在项目中开展测试活动,确保测试活动有序进行

设计用例方法:黑盒测试阶段必须掌握的一些测试用例的设计方法。比如黑盒测试用例的设计方法、测试用例元素等等

软件缺陷:在测试执行过程中应该确定缺陷并提交缺陷报告

缺陷管理:提交缺陷后在实际工作中如何和开发协助处理验证提交的问题。例如:bug的等级优先级分类、bug的描述、bug的生命周期、缺陷管理工具使用,如禅道等。

测试报告:测试过程的回顾和结果确认,生成系统性的专业软件测试评估报告。

2、软件测试功底技术——Linux系统

linux系统是主要的服务端操作系统,也是从事IT岗位的大部分人员必须具备的基本技术之一。

linux系统基本知识:多用户,多任务,发行版本等

常见 linux操作命令:日志查看,文件压缩、解压,用户管理,文件权限等

会部署和配置基本的应用jdk、 mysql、 tomcat

docker安装使用

编写基本的 shell RAD本

远程终端工具使用: shell, xftps等

3、软件测试功底技术——Sql数据库

数据库作为软件系统必备的应用系统,在诸如接口测试、性能测试等等过程中往往需要操作数据库,验证数据正确性完整性,都离不开数据库的增删改查操作,在项目部署阶段数据库还需要配合项目部署。在性能测试、接口自动化测试中都需要数据库的支撑。

数据库基本概念

关系型数据库

MYSQL基本的增改查语句,存储过程

MYSQL复杂查询、多表查询

MYSQL索引及事务相关概念

数据库客户端工具使用:如 Navicat

4、软件测试功底技术——编程语言

推荐没有编程基础的朋友可以学习Python语言

Python语言的学习内容包含以下知识点:

Python基础:Python语言特点、运行环境、基本语法、代码风格、示例程序

数据结构:

基本数据结构:数字、字符串、类型判断、类型转换、切片、字符串格式化、数值运算、位置参数和关键字参数;

组合数据结构:列表、元组、范围、字典、集合、不可hash对象、解包、内存地数据结构址、不可变数据

程序控制:顺序结构、循环结构、判断结构、异常处理、逻辑运算符

函数:定义函数、函数的参数、返回值、变量作用域、匿名函数、常用内置函数

模块和库:模块和包、import关键字、常用标准库、常用第三方库、包管理工具pip

面向对象:面向对象起源和优势、面向对象的特性类和对象的联系、对象的特殊方法

日志记录:baseConfig、文件日志、邮件日志、定制格式、内置占位符、等级过滤、分级传播、配置文件

测试框架:unitest、pytest等

并发编程:多进程、多线程、协程、线程池、同步控制、线程通信、分布式、猴子补丁、 async语法、生成器

网络编程:socket编程基础、TCP服务端和客户端、并行请求处理、HTTP服务端和客户端

5、软件测试自动化进阶——接口测试

接口测试本质也是功能测试的一种,通过脚本或者工具,模拟客户端对服务端接口进行调用。因为是从接口层测试,所以能更早的发现问题,从而提高测试效率,降低修复成本。

http/httpst协议学习

常见请求方法学习:GET、POST

cookie和 session学习

接口的基本概念

接口文档认识

接口测试用例编写

接口测试工具使用:postman、Jmeter、SoapUl

6、软件测试自动化进阶——性能测试

性能测试的技术要求很高,不仅仅要对性能测试的指标、测试分类、测试设计有很深刻的理解。还要学习系统业务和架构相关知识,这样才能更好的设计性能场景。

性能基本概念:性能测试意义、常见性能指标理解、性能测试的分类

性能测试流程:性能需求分析、性能场景设计、测试脚本编写、测试执行资源监控、性能调优、回归测试

Jmeter及 roadrunner使用

性能测试报告输出

7、软件测试自动化进阶——app自动化

越来越多的项目和系统通过移动端来提供服务,移动端的软件质量越来越重要,App自动化测试已经成为自动化测试的重要内容。借助Appium,使得App自动化测试和Web自动化测试有很多相通之处,不过作为测试工程师,依然需要掌握移动端应用的工具和特性。

Appium移动测试环境搭建:Appium ServerAppium和 Desktop、 Android运行环境搭建、模拟器安装和连接、真机设备调试模式、adb、 weditor、 - - UiAutomator22、 Monkey

Appium元素定位:原生应用元素定位、纯web应用元素定位、混合应用元素定位

Appium元素交互:等待元素加载,元素的基本属性和方法、滑动、拖动、缩放操作、下拉选择操作、 toast消息处理、常见控件分析、常见布局分析

封装测试框架:集成Appium、adb等工具、预定义异常处理、记录Appium日志、屏幕截图、打造多用途测试框架

8、软件测试自动化进阶——持续集成和持续测试

持续集成和持续测试是一个在迭代中构建、测试产品并修复Bug的过程。它有助于团队在开发阶段的初期发现缺陷,这时的缺陷通常相对不那么复杂,并且更容易被解决。通过持续集成和持续测试,可以尽早地将错误风险降至最低,并加快交付更好质量的软件。

版本控制Git:背景介绍、环境部署、工作区、暂存区和提交区、分支创建与合并、解决冲突、标签、 config与别名、本地仓与远程仓、 GitHub与码云

持续集成 Jenkins:背景介绍、环境部署、文件结构、远程仓库与私服、ja包依赖、插件管理

容器Docker:了解 Dockers的镜像、仓库、容器、 Docker Engine和架构图、网络设置、数据持久化

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

猜你喜欢

转载自blog.csdn.net/okcross0/article/details/127323766