这段时间公司项目急缺人手,面了不少人,竟然没有一个满意的。一开始瞄准的就是中高级的水准,也没指望来技术大牛,提供的薪资在15-25K,面试的人很多,但结果让人失望。
从简历上来说都是3-4年工作经验,但面试中,不会工具方法和编程框架,基本功的技术很多也不熟练,多数人多年的工作经验仅仅是业务年限堆起来的,技术能力达不到公司需求,对于框架自动化测试会的也不多,都停留接口测试的基础方法层面上,自动化深入的问题更是一问一个没,对于前沿的主流技术也毫无关注。
而这些人的薪资要求却是都接近20K,并且在谈论过程中自视甚高,特别有一个给我留了很深印象,简历写着3年经验,做的都是小程序的展示项目,面试过程中一直强调自己技术如何如何精通,在原公司如何的受重用,问到关键地方,却答不出所以然来,最后招了2个潜力还不错的应届生,希望带一段时间能成为帮手。
经过去年互联网大厂裁员的推动,企业为了降本增效,对人才的需求也在提高。和几个圈内朋友说起这个事,他们也深有同感,技术在发展,行业要求越来越高,但是花时间去提升能力的人却并不多。再加上不断有新鲜血液的冲击,压力只会越来越大。
互联网仍在发展,企业要求也在提升,冗余人员和低效人员会被淘汰、被优化,而优秀的人才也会一直受到公司的青睐。所以行业里才会有冰火两重天的一幕,一边是大量的低端测试工程师被淘汰、被降薪和被迫转行,求职屡屡碰壁,而另一边,却是很多测试经理求贤若渴四处挖人。需求和供给的不匹配,导致招人难、就业也难。
但是真正有实力的测试人才,根本不会受到什么影响,要跳槽发展还是很容易的。但是对现在的工作不满意,又没有足够的技术,与其焦虑迷茫,不如静下心来自我提升。目前就大量招聘信息来说,想要获得高薪就得会以下几个加分点:
- 熟悉不同操作系统和数据库的操作能力
- 熟悉脚本语言,具有一定的编程能力
- 能通过自动化测试监控和提升质量和效率
- 有较强的分析设计能力,测试框架研发和方案整合能力
所以还停留在手工功能测试层面,如果不去提升技术,不仅要面临长江后浪推前浪的压力,还要顶住当下行业的内卷之势。不然就只能接受窘境,最后甚至是面临淘汰。更别说升职涨薪了
如何从初级功能测试到高级自动化测试开发,达到技术提升和待遇提高的目的,是很多初级测试人必经的一个阶段。作为一个过来人,对自我提升过程中的困难深有体会。
所以我喜欢收集资源,记录自己踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想提升技术能力的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到实际中。
这是我整理的《全栈测试工程师技术进阶路线》,还有不少工具和视频的【网盘资源】,需要的朋友可以点击文末小卡片获取网盘链接。肯定会给你带来帮助和方向。
1、自动化测试必会Python编程技术
Python开发环境搭建 | Python起源、发展与特点;解释器安装与环境配置;Pycharm安装与配置;Python第一个程序;Python程序多方式运行 |
---|---|
Python语法规则 | Python语法规则;Python的变量的定义、声明与使用;Python的输入与输出(格式化输出);字符集处理 |
Python数据类型 | Python的基本数据类型(数值类型、字符串类型);Python的运算符;Python的类型转换 |
字符串类型操作 | 字符串的定义;字符串常见操作;字符串常用方法;字符串使用场景案例讲解 |
列表类型操作 | 列表的定义;列表常见操作(添加、删除、修改元素值);列表常用方法讲解(拷贝,反转) |
元组类型操作 | 元组的定义与使用;元组的特性;元组常用方法讲解 |
字典类型操作 | 字典的定义与操作;字典常见操作(添加、删除、修改元素值);字典常用方法讲解(items,values) |
集合类型操作 | 集合的定义与使用;集合的特性;集合常用方法讲解,集合使用场景分析 |
流程控制-条件判断 | 单项分支,双项分支,多项分支和巢状分支判断;布尔表达式的应用;条件判断的使用场景分析 |
流程控制-循环处理 | while循环;break/continue关键字使用场景;for循环;双重for循环;forrange使用;使用场景与真实案例分析 |
面向对象-函数 | 函数的定义与调用;函数的返回值;函数的参数(缺省参数,可变长度参数);函数的嵌套;常用的内置函数:关键字函数封装案例讲解 |
模块与包 | 模块化与包的定义与使用;内置time模块的使用;内置datetime模块使用;内置calendar模块使用;自定义模块的使用场景分析 |
文件操作 | 文件对象;文件读取、写入操作;with.as用法;文件使用场景案例讲解 |
2、Web自动化测试技术内容
自动化测试流程概述 | 自动化测试的定义和目的;自动化测试的优势;自动化测试的流程;自动化测试的技能要求;Web自动化主流工具的介绍 |
---|---|
selenium环境搭建 | selenium发展与特点;selenium安装与环境配置;Selenium实现自动化测试原理剖析 |
常规页面元素定位方式 | 通过id/name/class/tag/link_text等方式定位元素;各种元素定位特点的分析 |
xpath元素定位方式详解 | xpath定位元素技巧;xpath表达式编写方式 |
css元素定位方式详解 | css定位元素技巧;css多属性高级定位方式 |
元素组定位 | 元素组的定位方式;元素组定位的使用场景;nd element()/fnd_elements()定位方式的解析与对比 |
特殊元素定位 | 单选框、多选框、复选框、下拉框选择、动态元素的定位技巧阐述; |
浏览器操作 | 获取页面title/url、页面的前进后退、页面的刷新、截屏、页面关闭与进程的关闭;元素常用属性与方法 (text,get_attribute()) |
三种等待时间详解 | 强制等待time、隐式等待、显式等待的使用;三者的区别与实际场景应用 |
切换操作技巧 | 浏览器模式切换 (无头模式、APP模式);多窗口的切换,多Frame的切换;弹框的切换与操作 |
鼠标、键盘操作技巧 | 鼠标事件(移动,双击、移动、拖拽);鼠标操作实战,键盘事件与实战操作 |
JavaScript在自动化测试中的应用 | JavaScript Excutor执行器语法规则;js更改元素属性;js定位元素;js操作滚动条等各种场景应用 |
3、APP自动化测试技术内容
Android自动化环境搭建 | 客户端库、JDK、Android SDK、APPiumDesktop、模拟器安装;模拟器设置;设备连接问题分析 |
---|---|
自动化框架与工具使用 | APP自动化框架比较(APPium,Ulautomator,Espresso等);APPiumDesktop的介绍与使用;Inspector工具配置与使用 |
ADB命令操作 | ADB原理;设备连接;上传下载文件;安装卸载APP;日志获取;input输入类命令;查看系统信息;获取包名和事件入口; |
Monkey稳定性测试 | Monkey稳定性测试原理;Monkey指令详解 (基础参数、事件参数、调试选项);Monkey日志分析 (日志定位,回归验证) |
自动化配置项 | Desired Capabilities配置文档;常见配置项介绍和使用场景分析 |
APP界面元素查看工具 | UIAutomatorViewer获取元素信息;Inspector工具获取元素信息;Inspector进行自动化脚本录制操作等 |
APP元素定位 | 元素定位方式详解(id,classname,accessibilitylD,xpath等方式的使用);元素组定位方式 |
APP元素操作 | 元素属性操作(text,location,size等);常用API函数(launch_APP,reset,is_APP_installed等);点击、滑动、输入字符、点击坐标等操作技巧 |
4、Postman测试工具专题
Postman安装与使用 | Postman简介,Postman环境搭建,Postman接口测试-get请求,Postman接口测试-post请求 (各种类型参数案例) |
---|---|
Postman集合测试 | Postman测试集管理接口,测试集的导入导出,测试集中设置变量、引用变量 |
Postman接口关联 | Postman全局变量设置与应用,环境变量设置与应用,在Tests中设置变量、获取变量 |
Postman断言 | Postman各种断言方式(状态码、响应正文、响应头、响应时间等的断言操作) |
Postman参数化 | Postman各种参数化方式(文本参数化、csv参数化、json参数化) |
Postman数据驱动 | 测试集、关联、参数化、断言的综合使用 |
5、接口自动化测试技术内容
接口自动化测试概述 | 接口测试的定义与意义;接口测试的实现方式;接口自动化的实现流程 |
---|---|
HTTP协议 | 通信协议原理解析;HTTP与HTTP协议详解 (请求,响应,请求方法,状态码)session、cookie、token监权 |
JSON数据格式详解 | JSON与XML的比较;JSON的语法规则;JSON的数据类型介绍;JSON的练习 |
Requests模块基础 | Requests安装;使用Requests发送请求 (get,post,delete,put,Requests),不同格式解析响应数据 (textjson,content) |
RequestsZsession模块 | session模块应用、接口请求、会话管理 |
Requests请求HTTP接口实战 | GET、POST、DELETE、文件上传等接口类型、json、from-data、参数类型、场景实战演练 |
6、自动化测试框架搭建能力
Pytest介绍,环境搭建 | Pytest简介、环境搭建、常用插件安装 |
---|---|
Pytest基础语法 | Pytest基础语法规则详解 |
Fixture的使用 | Pytest参数化与Fixture的使用 |
Allure测试报告 | Pytest之conftest使用,集成Allure测试报告 |
框架搭建原理、思路 | 搭建框架之前的准备、框架的意义、设计思路、代码模块分层思想 |
UI自动化测试框架搭建一 | 代码模块分成、搭建日志系统、断言系统、报告系统 |
UI自动化测试框架搭建二 | 关键字驱动设计、数据驱动设计 |
接口自动测试框架搭建一 | HTTP、Websocket、Dubbo类型接口模块类封装 |
接口自动化测试框架搭建二 | 关键字驱动设计、数据驱动设计、数据库应用、日志、断言系统 |
UI测试框架和接口测试框架一体化 | 接口测试框架与UI测试框架整合,前后端自动化测试关联场景运用 |
HTML前端 | HTML元素,标签、css、Javascript语法基础 |
Flask后端api编写 | Restful API开发规范,构建一套API服务 |
7、持续集成
Jenkins介绍、环境搭建 | 部署Jenkins环境,常用Jenkins插件安装 |
---|---|
构建自动化测试任务 | 自动化测试用例结合Jenkins构建任务应用、定时运行、批量运行 |
自动发送邮件测试报告 | 定时任务执行后产出测试报告、根据用例通过率自动发送邮件 |
git仓库的使用 | git版本库创建、添加远程仓库、克隆、pull、push、commit命令使用 |
Docker容器技术 | Docker使用原理、Docker环境搭建、Docker在自动化测试中场景应用 |
流水线 | 构建 CI/CD 流水线流程 |
8、Jmeter 性能测试
Jmeter性能测试入门 | 性能测试概念,目的与意义;性能测试策略详解;性能测试流程和性能测试工具分析 |
---|---|
性能测试环境搭建与性能指标阐述 | 性能指标(TPS/并发用户数/响应时间/吞吐率/资源利用率):性能测试工具选择;Jmeter环境搭建 |
Jmeter接口测试及HTTP协议讲解 | Jmeter设置测试计划、线程组、HTTP请求,以及HTTP协议讲解、hddler抓包等 |
Jmeter接口测试参数化及录制HTTP脚本 | Jmeter设置参数化、文件参数化、数据函数参数化;Jmeter监控服务器资源设置:Jmeter录制HTTP脚本 |
Java请求&JDBC请求实战 | Java请求,计算器,固定定时器,集合点设置;JDBC协议使用及技巧 |
Jmeter插件管理及jvm监控 Jmeter | Jmeter插件管理,场景设置,tps图等;Jmeter启动内存设置及字体,jvm监控Jmeter |
Jmeter集群压测及结果分析 | Jmeter集群压测设置;结果统计及分析 |
Jmeter项目实战 | 单机、分布式、多线程执行机制、混合负载、压力测试;稳定性测试,可扩展性、可恢复性测试等其它场景测试 |
Liunx服务器监控 | Linux环境命令动态监控,top/free/vmstat等 |
数据库监控 | 数据库监控,慢查询sql定位 |
JVM监控 | JVM监控,JProhler工具使用,类耗时,jvm命令监控jmap,jstat,jstack使用等 |
服务器资源监控与分析 | 监控堆栈内存使用,线程抓取 |
全链路压测 | 全链路压测,集群压测原理解析 |
性能测试分析与总结 | 性能瓶颈分析,测试报告编写,性能测试流程总结 |
9、APP性能测试
APP性能测试入门 | 性能测试概念,目的与意义;性能测试策略详解;性能测试流程和性能测试工具分析 |
---|---|
性能测试环境搭建与性能指标阐述 | 性能指标 (cpu、内存、流畅度等) ,性能测试工具选择;环境搭建 |
性能指标之启动时间、CPU、流量详解及实战 | 性能指标(启动时间、CPU、流量详解)获取方法;监控脚本实现;数据分析 |
性能指标之电量、内存FPS&过度渲染及实战 | 性能指标(电量、内存、FPS&过度染) 获取方法;监控脚本实现;数据分析 |
10、Fiddler 抓包工具的使用
Fiddler工具介绍与安装 | 各类抓包工具介绍与对比;详细指导hddler安装过程;常用菜单介绍 (tools;rules;view;命令行等) |
---|---|
Fiddler原理与HTTP协议详解 | B/S架构简介和请求过程理解;Fiddler的抓包原理,HTTP的请求、响应报文的详细阐述 |
Fiddler抓包与过滤 | Fiddler抓取HTTP、HTTPS的数据包;Fiddler抓取APP数据包;数据包过滤: Find;Filter; Rules |
Fiddler断点实战 | Fiddler进行局部断点/全局断点/请求前断点/响应后断点设置;篡改数据 (请求前、响应后数据);对资源和接口进行断点调试 |
Fiddler模拟mock实战 | Fiddler利用Autoresponder对资源进行重定向;Fiddler构建不存在的接口 (mock) |
Fiddler弱网实战 | Fiddler完成弱网环境设置;模拟弱网测试 |
11、TCP/IP协议
TCP/IP的协议详解 | TCP/IP的体系结构;TCP/IP的特点; |
---|---|
传输层协议 (TCP/UDP)原理 | TCP/UDP定义;面向连接的TCP详解;无连接的UDP详解;TCP/UDP协议差别;TCP协议的可靠传输机制详解; |
TCP协议的流量控制和拥塞控制 | 流量控制详解(利用滑动窗口、传输速率);拥塞控制详解( 慢开始、拥塞避免、快重传和快恢复) |
12、Linux 系统操作
Linux环境搭建 | 虚拟机VMware Workstation Pro安装;SUSE Linux环境搭建;VMware Tools辅助工具安装;Windows Linux系统之间文件共享 |
---|---|
Linux初级命令学习 | Linux概述、起源、架构;Linux目录系统讲解;初级Linux命令学习:目录操作命令 (I/cd/mkdir/rmdir);文件操作命令 (touch/cp/mv) ;文件查看命令 (cat/more/head) |
Linux中级命令学习 | 常用中级命令学习:编辑器命令(vim);链接文件命令(ln);文件搜索命令 (fnd/which/whereis/grep),系统资源命令 (df/free/ps);其他系统命令 (halt/poweroff/shutdown) |
Linux高级命令学习1 | 打包压缩命令 (tar);用户和组命令 (useradd,groupadd) |
Linux高级命令学习2 | 权限的理解;权限命令 (chmod/chown);权限的更改-所属者;权限的更改-所在组;给用户设置指定的权限 |
Linux下Web环境部署1-tomcat+jdk | Linux下安装与配置jdk; Linux下编译和运行Java代码;Linux下安装tomcat; Linux下访问tomcat |
Linux下Web环境部署2-MySQL数据库 | Linux下安装和配置MySQL数据库;Linux下登录和使用数据库;Linux下修改root用户密码;Windows下的Navicat连接Linux的MySQL服务端 |
Linux服务器访问操作 | Xshell/Xftp的安装与介绍;购买阿里云服务器;使用Xshell/Xftp操作服务器端的文件 |
13、MySQL 数据库
MySQL数据库环境搭建 | MySQL服务端安装;常见客户端Navicat安装与破解;MySQL自带命令行模式常见命令使用;客户端Navicat连接服务端与操作 |
---|---|
MySQL之数据库表的SQL命令 | 数据库概念、分类以及使用场景,不同存储引擎的区别,SQL的分类及命令;数据库创建命令;表创建/修改/销毁命令;数据库常见数据类型讲解与使用 |
MySQL之数据完整性约束使用 | 数据库约束的定义、作用与分类,掌握实体完整性;域完整性,引用完整性等约束的创建与删除命令 |
MySQL之增删改的SQL命令 | 掌握数据库的增删改查命令(insert、delete、update);数据库运算符的使用(算数运算符、比较运算符、逻辑运算符、位运算符) |
MySQL之查询的SQL命令 | 数据库查询-select的用法;掌握inlike、distinct、between orderby、ifnull、分页功能limit等的用法 |
MySQL之高级查询-函数&分组查询SQL命令 | 数据库高级查询的用法;掌握聚合函数(max;min;count);分组查询(groupby);子查询(多行子查询;单行子查询;in;exist)等的用法 |
MySQL之高级查询-关联查询&子查询SQL命令 | 数据库高级查询的用法;掌握多表关联查询(innerjoin;leftjoin;rightjoin)等的用法 |
Mysql之TCL操作 | 事务的概述,事务的特性,事务的创建,事务的并发问题,事务的场景实操 |
MySQL作业讲解 | 数据库作业讲解分析,知识点总结与梳理,进一步工具数据库操作知识,常见笔试,面试题分析 |
mongodb数据实操 | mongodb概述mongodb环境搭建,数据库操作,集合操作,数据导入导出 |
14、RobotFramework 自动化测试框架
RobotFramework简介与环境搭建 | pip安装RF,ride工具,以及结合PyCharm编辑工具的用法 |
---|---|
RF语法之变量使用 | 掌握RF当中的变量类型,变量的定义和使用,打印输出 |
RF基础语法之测试用例编写 | 掌握RF编写测试用例,运行用例,查看用例运行日志,查看报告 |
RF之关键字与资源文件 | 掌握用户关键字,资源文件,变量引用,库的定义 |
RF之语法控制流与循环 | 掌握RF中FOR循环,AND,IF的用法 |
RF-Web自动化项目实战 | UI自动化测试用例编写,分层设计,POM |
RF-接口自动化项目实战 | 编写接口测试用例,发送HTTP接口请求,接口项目实战 |
RF-扩展库开发 | 掌握Python开发关键字、第三方库,系统关键字开发 |
RF-集成Jenkins之持续集成 | 掌握RF框架结合Jenkins使用 |
15、跨平台的自动化测试框架Airtest
Airtest环境搭建与IDE使用 | IDE安装、Web端、APP自动化环境搭建,框架介绍 |
---|---|
Airtest-Web自动化项目实战 | Airtest之商城Web自动化测试实战 |
Airtest-APP自动化项目实战 | Airtest之安卓APP自动化测试、自动刷短视频赚金币 |
Airtest之poco框架 | 基于poco框架进行网易云APP自动化测试 |
Airtest-windows应用程序自动化测试 | Airtest之Windows应用程序自动化测试 |
Airtest之脚本运行方式 | 自动化脚本在cmd运行、批量运行脚本、bat批处理运行 |
Airtest-集成Jenkins之持续集成 | 掌握Airtest框架结合Jenkins使用 |
上面就是我整理出来的一份全栈测试工程师技术进阶路径图。完成这样一个技术栈的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的职业生涯就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好“不积跬步,无以至千里。”等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。
作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。