『慕课网 imooc』
『学习软件测试的进阶之路』

第一章 课程介绍

课程目标

  • 对软件测试发展方向有更清新的认识,对未来前景有所规划
  • 由浅入深讲解软件测试学习路线,让大家清晰如何学习成为一名功能测试、性能测试、安全测试以及更高级别的测试人员,掌握学习方法

课程内容

  • 别人家的 “软件测试”
  • 测试要做什么?
  • 一线互联网测试人员都在怎么做?
  • 非典型测试的 “我” 的测试旅程
  • 职业发展规划
  • 测试发展方向和待遇
  • 个人职业规划
  • 学习路线与方法
  • 软件测试学习准备
  • 功能测试学习路线
  • 自动化测试学习路线
  • 性能测试学习路线
  • 安全测试学习路线
  • 测试进阶/架构学习内容
  • 招聘与面试
  • 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小公司
  • 选择适合方向
  • 面试准备
  • 充足的准备和良好的面试技巧
  • 对职位的深入理解
  • 优秀的简历