全日制测试开发课程¶
测试开发体系介绍¶
痛点
- 不了解测试开发的价值与定位
- 不了解测试的流程是什么
- 不会使用常用的测试管理平台,比如禅道、jira
- 不会编写测试计划、测试报告等相关测试文档
- 不了解如何管理测试用例
- 不了解 Bug 的提交流程
- 不了解测试用例的设计方法和思路
- 面试过程中被问到如何设计测试用例,无法有一个让面试官满意的答案
教学目标
- 了解测试开发的价值与定位
- 了解测试开发的核心工作场景
- 了解测试开发的进阶路线与技能图谱
- 掌握测试计划与测试总结报告的编写方法
- 掌握使用 JIRA 工具管理测试用例与 Bug 的方法
- 掌握常见的测试用例设计方法
- 掌握测试用例的相关概念
- 掌握测试用例的设计与编写
章节 | 描述 |
---|---|
黑盒测试方法论-边界值 | 边界值测试方法论 |
黑盒测试方法论-等价类 | 等价类测试方法论 |
黑盒测试方法论-因果图 | 因果图测试方法论 |
黑盒测试方法论-场景法 | 场景法测试方法论 |
黑盒测试方法论-判定表 | 判定表测试方法论 |
白盒测试方法论 | 代码覆盖、流程覆盖、精准化测试 |
常用测试策略与测试手段 | 分层测试基础、兼容性测试、稳定性测试、可靠性测试、探索式测试 |
bug定位方法 | 常用的bug定位技术 |
测试环境搭建 | 环境搭建常用技术、Linux、Shell、容器技术 |
测试经典书籍拆分讲解 | 全程软件测试、探索式测试、持续交付、Google测试之道、不测的秘密等 |
业务架构分析工具plantuml | 时序图架构图活动图思维导图 |
测试流程管理jira系统-测试用例管理 | 测试用例管理 |
测试流程管理jira系统-测试流程定制 | 测试流程定制 |
测试流程实战 | 测试用例导入与管理、测试流程实战bug录入与管理 |
Linux 与 Bash 课程¶
痛点
- 不了解什么是 linux
- 不会使用 linux 的常用命令,包括 linux 三剑客
- 不会通过linux命令分析服务端日志信息
- 不会通过linux命令查看服务器性能数据
- 不了解什么是 bash 和 shell
- 不会配置 linux 相关依赖环境
- 无法使用 shell 脚本完成测试相关工作流程,包括持续集成等
教学目标
- 了解 linux 系统、Linux 文件、进程、网络等核心概念
- 掌握 Linux 核心三剑客命令 grep awk sed 与数据处理分析能力
- 掌握日志分析能力
- 掌握服务器基本的数据例如性能、网络的统计能力
- 了解 bash 编程语法
- 掌握 shell 脚本编写
- 掌握 Linux 环境中配置 Java、Python、NodeJs、Android-SDK 等
章节 | 描述 |
---|---|
Linux系统与Shell环境准备 | 多平台配置shell使用环境 |
Linux进程与线程 | 多进程、多线程、死锁、进程间通讯 |
Linux常用命令之文件处理 | 面试必考经典命令 |
Linux常用命令之性能统计 | cpu、mem、network、io |
Linux常用统计命令 | sort、uniq、wc等常用统计命令 |
Linux三剑客之grep | 数据检索工具 |
Linux三剑客之awk | 最强大的经典数据处理工具 |
Linux三剑客之sed | 数据的流式编辑 |
Linux三剑客与管道使用 | grep、awk、sed等linux经典数据处理技术 |
三剑客实战之Nginx日志分析实战 | 以真实的nginx log为例演练如何分析核心测试数据指标 |
三剑客实战之性能、网络统计实战 | 统计进程的资源占用数据 |
Bash编程语法 | 变量定义与常用流程控制语法 |
Bash脚本编写 | 编写可以直接执行的shell脚本 |
linux进阶命令 | curl接口请求、jqjson数据处理 |
Linux环境配置 | 基础环境安装java、python、nodejs、android-sdk等 |
Linux命令与Bash实战 |
SQL 语法与数据库(选修)¶
痛点
- 不了解什么是数据库和 SQL 语句
- 不会使用数据库管理系统
- 不会通过 SQL 语句操作和管理数据库
- 不会通过 SQL 语句进行数据的增删改查
- 不会使用表连接,包含内连接、外连接、子查询等查询数据的方式
- 不了解什么是 SQL 的主键、外键
教学目标
- 了解数据库的基本概念
- 掌握 MySQL 的安装和配置
- 掌握数据库客户端工具的使用
- 掌握 SQL 基础语法,可以熟练对库和表进行增删改查等操作
- 了解 SQL 的约束规则
- 掌握多表查询中的表连接查询方式
- 掌握多表查询中的子查询方式
章节 | 描述 |
---|---|
数据库搭建与使用 | mysql数据库的部署与客户端工具使用 |
phpmyadmin操作 | 便捷连接数据库的web工具 |
数据库结构解析 | 分析数据库的进程与基本的结构定义、存储引擎 |
数据库表结构解析 | 表、视图、主键、索引、锁、事务 |
sqldds数据库与表结构创建 | 使用sql完成数据库、表、字段的定义与修改 |
sqldms数据查询 | 使用sql完成数据的查询、更新、删除等操作 |
sqljoin多表查询 | 使用join完成多表连接查询,包括左连接、右连接、全连接 |
git 代码管理(选修)¶
痛点
- 不了解什么是 git
- 不会使用 git 工具
- 不会使用 git 对代码进行版本管理、分支管理
- 不会使用 github、gitlab 等远程仓库管理代码
教学目标
- 掌握 git 安装和配置
- 掌握 git 常用命令和分支管理方式
- 掌握 github、gitlab 等远程仓库的使用方式
- 掌握 IDE 客户端集成 git 并使用 git 管理代码的方式
章节 | 描述 |
---|---|
git环境配置 | 安装配置 |
git常用命令 | commit、merge、rebase、push |
gitlog分析与检索 | 对提交内容进行分析、检索 |
bash、SQL、git实战 |
Python编程语言与 Pytest 测试框架¶
- 掌握 Python 的循环、判断、方法 等基础语法
- 掌握面向对象编程技能
- 掌握 Python 最好用依赖管理工具 pip
- 掌握 Python 常用第三方模块,包括日志模块,excel 模块,数据库操作模块等
- 掌握 Python 进阶知识,装饰器,正则表达式,多线程等。
章节 | 描述 |
---|---|
python环境安装 | windows、mac安装方式 |
pycharm环境安装与配置 | 安装、基本使用、配置方法 |
python基本操作 | 缩进与空格、注释、打印、大小写、PEP8规范 |
python基本数据类型 | 变量的定义、python基本的数据类型介绍(整数、浮点数、布尔、字符串(切片、索引)) |
python字符串基本操作 | format,字面量插值、join、split、replace、strip |
Python的运算符 | 算数运算符、比较运算符、赋值运算符、逻辑运算符、成员运算符、身份运算符 |
python控制流-判断 | 条件表达式if、elif、else |
python控制流-循环 | 流程控制:while循环for循环关键字continue,break,pass |
python常用数据结构-列表 | 列表的的定义与使用、索引和切片、列表推导式 |
python常用数据结构-元组 | 元组的定义与使用、常用api、元组与列表的区别 |
python常用数据结构-集合 | 集合的定义与使用、常用api |
python常用数据结构-字典 | 字典常用方法:get、pop、update、字典推导式 |
python函数 | 函数定义与调用、函数返回值、默认参数关键字传参 |
python函数进阶与参数处理 | 不定长参数args、kwargs的用法 |
pythonlambda表达式 | lambda表达式语法、使用场景 |
python面向对象编程 | 类定义、方法定义、类变量、实例变量、实例引用 |
python面向对象三大特性 | 封装、多态、继承 |
python内置装饰器 | @classmethod、@staticmethod、@property 的使用 |
python 类型注解 | 参数与返回值的类型声明 |
python 模块与包 | 项目目录结构、模块定义、文件引用 import、相对路径与绝对路径 |
错误与异常 | 异常类型、异常捕获 try-catch、finally 使用、raise 使用 |
Debug 调试与分析 | debug 调试分析、堆栈分析 |
内置库 os | 常用 api:mkdir()、rename()、remove() |
内置库 sys | 命令行 |
内置库 文件处理 | with open、读写操作 |
内置库 科学计算 | math 模块常用 api |
内置库 日期与时间处理 | datetime 常用 api |
内置库 json | json.loads()、json.dumps()、 indent 缩进、编码 |
内置库 正则表达式 re | 正则表达式语法、re.match、findall、compile |
内置库 Python logging | 日志打印配置和使用 |
内置库 Python logging 高级使用 | 日志打印配置和使用 |
pip 环境管理 | pip、requirements |
venv 环境管理 | venv |
unittest 测试框架 | python 自带单元测试框架 |
Pytest 测试框架¶
- 掌握 Pytest 测试用例结构,编写完整用例。
- 掌握 Pytest 参数化、标记、跳过等常用装饰器
- 掌握 Pytest 高级知识 fixture、conftest 的使用
- 掌握 Pytest 自定义用例顺序 并行执行测试用例 等高级用法
- 掌握 Pytest 插件开发,实现 Pytest 测试框架的个人定制
- 掌握 Pytest 结合测试报告的安装与配置
- 掌握 Pytest 结合测试报告信息添加,包括用例描述、附件等
- 结合 Pytest 完成真实项目的单元测试实战
章节 | 描述 |
---|---|
pytest 简介、安装与准备 | pytest 简介、pytest 环境安装,运行第一个测试脚本 |
pytest 命名规则 | 模块命名、类命名、方法命名 |
pycharm 配置与界面化运行 | 配置与界面化运行 |
pytest 运行用例 | 运行多条用例/文件/包、运行指定测试用例、执行结果分析 |
pytest 测试框架结构 | 模块级、函数级、类级、方法级 |
pytest 命令行常用参数 | 常用参数说明 |
Pytest 标记测试用例 | 添加用例标签 |
Pytest 设置跳过、预期失败用例 | 用例跳过、skip、skipif、xfail |
Pytest 参数化用例 | 单参数、多参数、笛卡尔积、用例重命名 |
pytest 测试用例调度与运行 | 测试用例的收集、选取与运行 |
Python 执行 pytest | 利用 Python 代码执行 pytest 用例 |
Pytest 异常处理 | assert,python try...except,异常断言 |
Pytest 结合数据驱动 | yaml |
Pytest 结合数据驱动 | excel |
Pytest 结合数据驱动 | csv |
Pytest 结合数据驱动 | json |
allure 安装 | allure 与相关依赖安装 |
allure 报告中添加用例描述 | 添加测试分类、测试步骤等 |
allure 报告中添加附件 | 测试报告添加截图,日志,html 块,视频等 |
allure 报告生成 | allure 运行方式及生成测试报告 |
python+pytest 测试用例实战 | 真实项目的单元测试实战 |
web 测试方法与技术¶
痛点
- 不了解 web 项目测试的流程、思路与策略
- 不了解html、js、css等 web 相关的开发语言
- 不了解 web 项目的兼容性测试怎么做
- 不会使用常用浏览器的开发者工具提升测试效率
教学目标
- 掌握 html、js、css 基础知识以及常见相关 bug
- 掌握网页端的通用测试点
- 掌握网页端的测试方法,包含兼容性测试等
- 掌握常用浏览器的开发者工具
章节 | 描述 |
---|---|
html 讲解 | html 结构、html 修改,页面控件结构 |
javascript 讲解 | 控件事件处理流程、js 代码分析,使用 js 分析页面 |
css 讲解 | css 基本属性介绍、控件属性修改 |
web 端常见 bug 解析 | js 报错、功能性问题、性能问题、兼容性问题解析 |
Web自动化测试¶
痛点
- 不知道 Web 自动化测试价值
- 不会使用 Web 自动化测试能力提高效率
- 不了解如何快速掌握 Web 自动化测试能力
教学目标
- 熟悉 Selenium 框架与常用操作
- 掌握 Web 自动化测试用例录制能力
- 掌握 Web 自动化测试用例编写能力
- 掌握 Web 自动测试实战能力
章节 | 描述 |
---|---|
selenium 的安装 | selenium 的安装与配置 |
selenium IDE 用例录制 | 使用录制技术完成首个测试用例并分析用例结构与控件定位知识 |
selenium 测试用例编写 | 引入依赖、熟悉用例的流程并手工编写用例、使用隐式等待解决异常 |
隐式等待与显式等待 | 介绍 selenium 经典的三种等待方式 |
web 控件定位与常见操作 | id、name、css、xpath 等定位方法的本质解读与点击和输入操作 |
web 控件的交互进阶 | 右键点击、页面滑动、表单填写等自动化动作 |
网页 frame 与多窗口处理 | 多窗口,多 frame 下的窗口识别与切换 |
selenium 多浏览器处理 | chrome、firefox、headless 等浏览器的自动化支持 |
执行 javascript 脚本 | 使用 selenium 直接在当前页面中进行 js 交互 |
文件上传弹框处理 | 文件上传的自动化与弹框处理机制 |
page object 设计模式 | page object 模式的发展历史介绍 |
page object 原则 | page object 模式的六大原则 |
企业微信的自动化登录 | 利用 cookie、远程调试等技术实现无须扫码的自动化登录 |
app 测试方法与技术¶
- 掌握 app 测试需要注意的测试点
- 掌握 app 测试必学技能 adb 命令
- 掌握 app 测试中的常见的 bug
章节 | 描述 |
---|---|
常用模拟器使用 | genymotion、网易 mumu、Android/iOS 官方模拟器 |
app 结构讲解 | app 包结构解读 |
adb 常用命令 | 安装、卸载、数据清理、adb shell、dumpsys、uiautomator |
app 常见 bug 解析 | 功能 bug、崩溃 bug、性能 bug |
app 自动化测试¶
- 熟悉 Appium 框架与常用操作
- 掌握 App 自动化测试用例录制能力
- 掌握 App 自动化测试用例编写能力
- 掌握 App 自动测试实战能力
章节 | 描述 |
---|---|
appium 环境安装与架构介绍 | appium 的正确安装方法与架构介绍 |
appium 用例录制 | 使用 appium desktop 完成首个 app 自动化用例 |
元素定位方法与隐式等待 | id、aid 定位与隐式等待结合打造稳定用例 |
app 控件定位 | id、aid、xpath 定位方法、dom 结构解读、uiautomatorviewer 定位工具 |
app 控件交互 | 点击、输入、获取属性 |
触屏操作自动化 | 根据坐标点击、滑动、以及其他手势操作 |
高级定位技巧 | xpath、uiautomator、css 定位表达式以及滑动定位应用 |
显式等待机制 | 利用显式等待解决复杂条件下的控件定位 |
属性获取与断言 | get attribute 原理分析与属性命名规则 |
参数化用例 | 使用参数化构建多条相似测试用例 |
capability 使用进阶 | 复用已有 app 的状态、自动赋权限等场景应用 |
接口协议抓包分析与 mock¶
痛点
- 不了解被测产品的通讯协议与结构不知道测试点在哪
- 文档不齐全的情况不知道如何开展接口测试
- 存在第三方服务依赖的时候,构造测试数据困难
- 不知道 http 协议如何测试以及复杂响应结构如何解析
- 不知道接口测试用例如何编写
教学目标
- 了解接口测试的价值、知识体系与学习路线
- 掌握常见协议tcp http协议结构与通讯方式
- 掌握常用接口测试工具 postman curl
- 掌握常用抓包工具 charles 与 fiddler
- 掌握接口mock技术
章节 | 描述 |
---|---|
接口测试价值与体系 | 接口测试在分层测试中的价值与质量关注点 |
常见接口协议解析 | tcp/udp/http/restful/dubbo 等协议区别与解读 |
抓包分析 tcp 协议 | 使用 tcpdump 与 wireshark 分析三次握手与四次挥手流程 |
使用 postman 发送请求 | 使用图形化工具构造 http 请求并发送 |
使用 curl 发送请求 | 从已有的请求中自动生成对应的 curl 命令 |
常用代理工具 | charles、mitmproxy 等工具的应用 |
http/https 抓包分析 | ssl 证书设置与 https 抓包 |
http 协议讲解 | 常用状态码、header、请求与响应的格式分析 |
get、post 区别实战详解 | get 与 post 的本质区别与具体抓包解读 |
session、cookie、token 区别解析 | 基于真实系统了解 session、cookie、token 的区别 |
接口 mock 实战 | 抓包实战、通过代理修改请求与响应、rewrite、弱网测试、辅助构造更多场景用例 |
接口自动化测试¶
- 掌握接口自动化测试体系
- 掌握接口自动化测试用例设计方法
- 掌握接口自动化测试中的请求构造与响应断言技巧
章节 | 描述 |
---|---|
接口测试框架 | 使用最流行的 requests 进行接口测试 |
接口请求构造 | 常见的 get/post/put/head 等 http 请求构造 |
接口测试断言 | 状态码、返回内容等断言 |
json/xml 请求 | 以 json、xml 结构化的格式发送请求 |
xml 响应断言 | 利用 xpath 进行断言 |
json 响应断言 | 利用 json path 进行断言 |
schema 断言 | 应对大量响应数据字段的格式断言 |
header cookie 处理 | header 自定义与 cookie 自定义 |
form 请求 | form 表单的测试与请求模拟 |
超时处理 | 请求超时的异常处理 |
文件上传测试 | 文件上传测试、分片上传 |
代理配置 | 利用代理分析测试脚本,排查请求错误 |
认证体系 | http basic、oauth2 等认证体系的测试 |
接口加密与解密 | 处理有加密的接口协议 |
多套被测环境测试 | 用一套测试用例测试多套被测环境 |
企业微信接口测试环境准备 | 环境准备 token 获取与业务测试用例编写 |
企业微信接口测试实战 | 单 api 测试、多 api 测试 |
性能测试¶
章节 | 描述 |
---|---|
JMeter 介绍与安装 | 性能测试基本概念、常见压测工具、jmeter 的优点介绍与安装 |
压测脚本录制与编写 | 录制 http/https 压测脚本分析压测用例结构 |
虚拟用户并发模拟 | 虚拟用户讲解与常见的压测策略 |
压测结果分析 | 测试结果报表分析与定制 |
Docker 容器技术¶
章节 | 描述 |
---|---|
容器技术介绍 | docker 容器化技术的体系介绍 |
docker 安装与配置 | docker 环境安装与国内加速配置 |
docker 常用命令 | 使用常用命令完成镜像的拉取与容器的创建 |
搭建 Web 服务器 nginx | 使用一行命令搭建基于 nginx 的网站 |
搭建持续集成平台 mysql | 使用 docker 搭建数据库 |
搭建测试用例管理平台 testlink | 使用 docker 搭建测试用例管理平台 |
搭建持续集成平台 Jenkins | 使用 docker 搭建持续集成管理平台 |
搭建持续集成平台 Jira | 使用 docker 搭建流程管理平台 |
docker实战 |
持续集成系统¶
痛点
- 不了解 Jenkins 如何与自动化测试结合
- 研发频繁修改代码后,不能通过自动化测试尽早发现问题。
教学目标
- 掌握 Jenkins 与自动化测试结合的方案
- 掌握 Jenkins 的安装、配置
- 掌握 Jenkins 的 job 结构和构建
章节 | 描述 |
---|---|
持续集成体系介绍 | 持续集成的核心概念 |
jenkins 安装 | jenkins 平台的部署与数据管理方法 |
jenkins job 机制 | 定义你的第一个持续集成任务 |
节点管理 | 把机器加入 jenkins 的节点 |
权限控制 | jenkins 的安全管理机制讲解 |
常用插件 | html publish、junit 报告管理、父子任务等常用插件 |
报警机制 | job 构建结果的提取与多种通知方式 |
矩阵 job 与父子 job | job 之间的分工与协作管理 |
静态扫描体系集成 | 静态扫描体系集成 |
单元测试体系集成 | 单元测试体系集成 |
代码覆盖率集成 | 代码覆盖率集成 |
持续集成实战-接口测试集成实战 | 接口测试的持续集成管理实战 |
数据结构与算法¶
- 掌握常见数据结构与代码实现方案
- 掌握常见算法与代码实现方案
- 掌握常见设计模式与代码实现方案
章节 | 描述 |
---|---|
算法性能评估 | 时间复杂度、空间复杂度 |
数组与列表 | 经典排序算法 冒泡排序 选择排序 |
队列 | 管道应用、消息收发、FIFO 先进先出 |
堆栈 | LIFO 后进先出、函数调用的堆与栈的区别 |
链表 | 单链表、双链表的应用与常见算法 |
二叉树 | 二叉树的创建,前序、中序、后序遍历算法 |
多叉树 | 多叉树基本结构、算法与应用场景 |
递归算法 | 使用递归算法替代传统循环 |
全流程实战¶
章节 | 描述 |
---|---|
全流程实战练习 | 整合前面所学的知识内容,完整真实项目的实战练习 |