学习软件测试的进阶之路
第一章 课程介绍
课程目标
- 对软件测试发展方向有更清新的认识,对未来前景有所规划
- 由浅入深讲解软件测试学习路线,让大家清晰如何学习成为一名功能测试、性能测试、安全测试以及更高级别的测试人员,掌握学习方法
课程内容
- 别人家的 “软件测试”
- 测试要做什么?
- 一线互联网测试人员都在怎么做?
- 非典型测试的 “我” 的测试旅程
- 职业发展规划
- 测试发展方向和待遇
- 个人职业规划
- 学习路线与方法
- 软件测试学习准备
- 功能测试学习路线
- 自动化测试学习路线
- 性能测试学习路线
- 安全测试学习路线
- 测试进阶/架构学习内容
- 招聘与面试
- BAT岗位设计
- 面试浅谈
第二章 别人家的 “软件测试”
新时代测试人员职责
测试人员职责
- 入门的测试:执行用例,找缺陷
- 合格的测试:积极主动地发现、暴露缺陷,并团队合作、解决问题
- 优秀的测试:半个产品 + 半个开发,提供质量和交付速率
测试人工作内容
- 需求阶段:需求评审,明确测试边界;提取功能点与测试点
- 测试设计:测试计划、方案、用例
- 系统架构:清楚系统的架构实现,数据走向,代码逻辑分析;根据系统架构选择适用的自动化测试架构和性能测试策略
- 执行测试:提交缺陷、回归验证
- 其他评估:性能测试评估、自动化测试覆盖
- 测试总结:测试报告、验收总结、风险评估
- 时间管理:工具调研、框架/平台/工具研发、资源协调
一线互联网公司的软件测试
中小公司软件测试现状
- 测试人员人力有限,所以每个测试人员会做更多工作
- 大多数公司无完整的软件周期,无需求、无设计、开发完成即测试
- 很少有自动化测试、性能测试,这也意味着有更多机会
大型公司软件测试现状
- 工作流程全面,
- 专职工作:功能、自动化、性能分工明确
- 更多方向扩展,如大数据、Mock等等
- 机会较少,很难转型
大公司 OR 小公司
- 去大型公司可以学习更先进,更完善的测试流程和工作流程,不同的工作类型(测试类型),这对自身职业生涯的规划会起到很多帮助
- 等积累到一定经验,可以去小型公司,这时可以给小公司带来在大公司学到的工作流程、制度、做事的方式方法,同时也可以向自动化测试、性能测试、测试管理转型
非典型测试 “风落” 成长之路
- “风落几番”老师的自我成长史
第三章 软件测试的发展及待遇
软件测试行业发展方向及待遇
软件测试职业发展方向
- 技术方向
- 黑盒测试
- 白盒测试
- 自动化测试
- 性能测试
- 安全测试
- 测试架构
- 管理方向
- 测试经理
- 项目经理
- SCRUM MASTER
- 业务方向
- 测试专家
- 需求
- 产品经理
- 金融等行业精英
测试行业分析
- 测试工程师
岗位占比:68%
收入占比:
5-8k 33%
8-12k 26%
12-18k 23%
18-25k 2%
25k以上 1%具备能力占比:
功能测试 30%
接口测试 16%
自动化测试 12%
测试管理 11%
性能测试 11%
项目管理 7%
压力测试 7%
单元测试 6%
- 测试开发工程师
岗位占比:10%
收入占比:
5-8k 5%
8-12k 5%
12-18k 48%
18-25k 28%
25k以上 14%具备能力占比:
功能测试 17%
接口测试 15%
自动化测试 16%
测试管理 11%
性能测试 14%
项目管理 8%
压力测试 11%
单元测试 8%
- 高级测试工程师
岗位占比:12%
收入占比:
5-8k 8%
8-12k 23%
12-18k 46%
18-25k 23%具备能力占比:
功能测试 20%
接口测试 13%
自动化测试 11%
测试管理 15%
性能测试 15%
项目管理 11%
压力测试 10%
单元测试 5%
- 测试负责人/测试经理
岗位占比:10%
收入占比:
5-8k 7%
8-12k 7%
12-18k 37%
18-25k 20%
25k以上 29%具备能力占比:
功能测试 17%
接口测试 11%
自动化测试 12%
测试管理 18%
性能测试 9%
项目管理 15%
压力测试 11%
单元测试 7%
个人职业发展规划
职业前景规划
管理方向 CEO
- 测试组长/主管 -> 测试经理 -> 测试总监
- (转岗)QA -> 质量经理
- (转岗)项目助理 -> 项目经理(PM)-> 技术总监
- (转岗)产品助理 -> 产品经理(PD)-> 产品总结
- (转岗)HR -> HR Manager -> HR Director
技术方向 CTO
- 测试工程师
- 测试开发
- 讲师
- 测试架构师
- 性能测试
- 安全测试
- 白盒测试
- 等等
- (转岗)研发(RD)
- (转岗)运维
- (转岗)售前售后
第四章 软件测试整体介绍
软件测试学习路线
- 系统知识储备
- Linux
- 互联网网络基础
- 数据库
- 编程基础
- 功能测试核心
- 测试模型
- 测试流程
- 用例设计
- 缺陷管理
- …
- 自动化测试
- Web前端开发基础
- 浏览器调试工具
- 接口测试工具使用
- Web自动化测试(selenium)
- 自动化测试框架
- 自动化测试平台
- 性能测试
- 性能需求分析
- 性能测试工具使用
- 性能监控分析和调优
- 安全测试
- 抓包工具使用
- 安全漏铜原理
- 安全漏铜测试方法
- 漏铜的防范
- 测试进阶
- shell脚本
- 测试工具的研发
- 敏捷测试&TestOps
- Mock
- Docker
- …
PART1 系统知识储备
- Linux
- Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力
- Linux系统了解与环境熟悉
- 常用的Linux命令
- Linux文件属性、权限、用户管理
- Linux软件安装和使用、环境变量
- 网络基础
- 互联网网络基础的学习,会对我们进行接口测试、性能测试以及安全测试有很重要的意义
- 网络架构通讯原理
- TCP、UDP
- HTTP协议
- Session与Cookie
- 数据库基础
- 数据库包括MSSQL、Oracle、MySQL等,建议大家从MySQL学起
- 环境搭建与应用
- SQL使用(关联查询、增删改查[CURD]等)
- 存储过程
- 事务与编程
- 编程基础
- 编程语言对于测试来说,更好的选择是Java或者Python;Java通用性更强,Python更简洁,易于上手
- 开发环境与基本语法
- 类与对象
- 面向对象编程
- 简单的框架
PART2 功能测试学习
- 基础知识
- 软件基础知识
- 软件生命周期
- 软件开发模型
- 软件开发文档
- 软件测试基础
- 软件测试模型
- 软件组织架构
- 软件工程标准
- 测试策划
- 测试环境搭建
- 测试流程 需求测试 -> 测试计划
- (老师的例子:余额宝 & 支付宝实战)
- 测试设计(功能测试阶段)
- 边界值分析法
- 等价类设计法
- 判定表设计
- 因果图分析
- 正交实验法
- 场景法
- 测试执行(功能测试阶段)
- 用例执行
- 缺陷管理
- 缺陷跟踪分析
- 易用性测试
- 兼容性测试
- …
- 测试总结
- 测试报告
- 个人总结
- 风险总结
PART3 自动化测试学习
自动化学习基础
- 前端开发基础
- HTML
- JS
- CSS
- 浏览器调试工具
- F12
- FireBug
- 接口测试工具使用
- PostMan
- SoapUI
- Jmeter
- HttpClient(JAVA框架、并发使用)
- UrlConnection(JAVA框架、简洁)
- Requests(Python HTTP 库)
- Web自动化API
- Selenium 浏览器操作
- 元素定位
- 点击、输入等动作
- 特殊控件操作
- JS自动化处理
- 自动化测试框架
TestNG高级使用(单元测试)
注解/运用/配置方式/参数化设置及并行执行
Selenium3.0(脚本编程)
对比Selenium2.0与Selenium3.0,对重点升级部分进行代码讲解
Maven + ReportNG(测试报告)
Maven与TestNG集成,通过ReportNG进行优化
Jenkins持续集成(持续集成)
讲解Jenkins工作原理/Jenkins核心要素/可持续集成思想
ExtentX大数据统计
集成ExtentX框架(Salls + MongoDB)进行测试结果大数据统计
DataProvider数据驱动
使用EXCEL + POL进行数据驱动代码实现讲解
PART4 性能测试学习
性能测试全流程实战
- 项目背景了解
- 项目分析
- 项目目标分析
- 系统架构分析
- 业务流程分析
- 性能测试需求分析
- 开发过程文档分析
- 业界公认标准分析
- 用户模型
- 80/20原则
- 生产日志分析
- 性能需求实战
- 性能测试场景
- 性能场景选取
- 性能数据确定
- 性能测试用例设计
- 单场景用例设计
- 混合场景用例设计
- 稳定性场景用例设计
- 性能测试环境准备
- LoadRunner性能脚本开发
- 脚本编辑器
- 场景发生器
- 性能场景设计与执行
- 性能测试监控
- 操作系统性能监控分析
- Windows服务器监控
- Linux服务器监控
- 数据库性能监控分析
- Oracle监控
- MySQL监控
- Tomcat性能监控分析
- JVM性能监控分析
- JVM内存分析
- 垃圾回收机制
- Jstat
- Jhat
- Jstack
- JConsole
- VisualVM
- JProfile
- 性能测试分析
- 数据库问题
- 堆内存分配问题
- CPU问题
- 内存溢出
- 性能测试回归
- 性能结果与报告
PART5 安全测试学习
- 安全测试基础
- 安全测试基础概念
- 安全测试流程
- 各项测试顺序
- 安全工具使用
- 抓包工具使用
- BurpSuite使用
- 漏铜原理
- 绕过漏洞
- 验证机制漏洞
- 会话管理漏洞
- SQL注入
- XSS
- CSRF
- …
- 漏洞测试方法
- 漏洞防范措施
- 自动化审计
PART6 测试进阶方向
测试进阶学习
- Shell脚本
- 测试工具研发
- 敏捷流程
- Mock框架/平台
- Docker
- 大数据测试
第五章 软件测试面试
PART1 浅谈简历
个人简历
- 简历是在求职过程中迈出的第一步。这是一个机会来宣传自己,证明你是这个职位的最佳人选。简历的最终目标是带来一个电话和面试机会
- 招聘人员没有时间比较透彻去阅读所有的简历,一份简历会在20秒到30秒快速扫描
简历特点
- 简洁
- 突出优势和成就
- 因地、因时制宜
- 项目经验
PART2 BAT岗位设置
BAT测试体系
公司/岗位 | 普通工程师 | 高级工程师 | 专家架构 |
---|---|---|---|
百度 | T3 | T4、T5 | T5、T6 |
腾讯 | T2 | T3(3-1,3-2) | T3(3-3,3-4) |
阿里 | P4 | P5、P6 | P7+ |
PS: 目前基本上普通工程师已经停止社招
BAT测试岗位需求总结
- 纯功能测试,越来越不好混
- 接口自动化爆发
- UI自动化和专项自动化占据一定比例
- 性能测试人才稀缺
- 综合技能要求越来越高
PART3 BAT面试风格
B–BAIDU(百度)
一般校招一天四面(四个面试官),社招三天六面
- 面试风格:
- 测试用例设计、未来规划、基础编程、Linux
- 常用算法:排序、队列
- 常见问题:电梯测试设计
A–阿里系 (阿里巴巴)
一般至少四轮面试(包括电面),个别五轮
- 面试风格
- 工作项目经验
- *算法:核心算法,链表,数据结构,杨辉三角等等
- 简历中你描述自己优点的实例:比如说明下你学习能力强等
T–腾讯
校招群面,社招三到四轮
- 面试风格
- 群面:30s介绍;实际应用场景分组分角色讨论
- 社招:测试框架、测试工具、工具底层代码
PART4 面试建议
跳槽建议
- 符合你预定的规划发展路线
- 高薪
- 宜精不宜多
面试建议
- 理解JD,针对性准备
- 简历中提及内容熟悉,巩固
- 复习关于功能、自动化、性能、安全的基本理论
- 背熟一两个实际应用(擅长的)
- 提前针对性找寻对应公司的面试风格/面试题
第六章 课程总结
课程内容
- 别人家的“软件测试”
- 测试要做什么?
- 一线互联网测试人员都在怎么做?
- 非典型测试的“我”的测试旅程
- 职业发展规划
- 测试发展方向和待遇
- 个人职业规划
- 学习路线与方法
- 软件测试学习准备
- 功能测试学习路线
- 自动化测试学习路线
- 性能测试学习路线
- 安全测试学习路线
- 测试进阶/架构学习内容
- 招聘与面试
- BAT岗位设计
- 面试浅谈
软件测试学习之路
- 明确软件测试职责
- 测试方位
- 测试现状
- 职业发展方向
- 技术
- 管理
- 前景
- 学习路线
- 基础知识储备
- 功能/性能/安全/自动化等专项
- 个人规划
- Insert text here
- 大公司or小公司
- 选择适合方向
- 面试准备
- 充足的准备和良好的面试技巧
- 对职位的深入理解
- 优秀的简历