基础篇
第1章 软件测试概述
1.1 为什么要进行软件测试
1.2 软件测试的定义
1.2.1 软件测试定义的正反两面性
1.2.2 服从于用户需求的软件测试
1.3 软件测试的目的
1.4 软件测试的原则
1.5 通用术语
1.6 缺陷报告
1.6.1 一个简单的缺陷报告
1.6.2 缺陷报告的重要组成
1.6.3 完整的缺陷信息列表
1.6.4 缺陷的管理
1.7 本章小结
1.8 课后习题
第2章 软件测试入门
2.1 常见应用系统的基本特征
2.2 软件测试的基本思路
2.3 测试用例
2.3.1 为什么需要测试用例
2.3.2 什么是测试用例
2.3.3 一个简单的测试用例
2.3.4 测试用例的元素
2.4 测试思维训练
2.5 本章小结
2.6 课后习题
第3章 软件测试技术体系
3.1 软件测试类型
3.1.1 功能测试
3.1.2 接口测试
3.1.3 性能测试
3.2 软件测试级别
3.2.1 单元测试
3.2.2 集成测试
3.2.3 确认测试
3.2.4 系统测试
3.2.5 验收测试
3.3 测试方法
3.3.1 黑盒测试
3.3.2 白盒测试
3.3.3 灰盒测试
3.4 测试手段
3.4.1 手工测试
3.4.2 自动化测试
3.5 本章小结
3.6 课后习题
第4章 软件测试的过程管理
4.1 软件测试的整体流程
4.2 软件测试各阶段的工作任务
4.2.1 制订测试计划
4.2.2 测试需求分析
4.2.3 测试建模
4.2.4 测试用例设计
4.2.5 测试执行
4.2.6 测试总结
4.3 系统上线与运维
4.4 本章小结
4.5 课后习题
设计篇
第5章 白盒测试用例设计及应用
5.1 逻辑覆盖法
5.1.1 语句覆盖
5.1.2 判定覆盖
5.1.3 条件覆盖
5.1.4 条件判定组合覆盖
5.1.5 多条件覆盖
5.1.6 修正条件判定覆盖
5.2 基本路径测试法
5.2.1 程序的控制流图
5.2.2 控制流图的环路复杂性
5.2.3 基本路径测试法示例
5.3 本章小结
5.4 课后习题
第6章 黑盒测试用例设计及应用
6.1 等价类划分法
6.1.1 等价类划分法的定义
6.1.2 有效等价类和无效等价类
6.1.3 划分等价类的规则
6.1.4 等价类划分法实例分析
6.2 边界值分析法
6.2.1 如何确定边界值
6.2.2 边界值法实例分析
6.3 组合测试用例设计技术
6.3.1 全面测试
6.3.2 单因素覆盖
6.3.3 正交试验设计法
6.3.4 两两组合
6.3.5 具有约束关系的组合测试
6.3.6 种子组合测试
6.4 因果图法
6.4.1 因果图的基本符号
6.4.2 因果图法实例分析
6.5 决策表法
6.5.1 决策表的构成
6.5.2 决策表法实例分析
6.6 场景法
6.6.1 场景法概述
6.6.2 场景法实例分析
6.7 测试方法选择的综合策略
6.8 本章小结
6.9 课后习题
第7章 接口测试基础
7.1 HTTP工作原理
7.2 用Firefox浏览器抓取报文
7.3 URL
7.4 报文
7.4.1 请求报文
7.4.2 响应报文
7.5 本章小结
7.6 课后习题
第8章 接口测试
8.1 为什么要做接口测试
8.2 接口测试的定义
8.3 接口测试实例分析
8.3.1 接口文档解析
8.3.2 测试用例设计
8.4 接口测试工具
8.4.1 安装Postman工具
8.4.2 使用Postman的基础功能
8.4.3 Postman进阶使用
8.5 本章小结
8.6 课后习题
技术篇
第9章 Unittest单元测试框架
9.1 认识Unittest
9.2 Python安装
9.3 集成开发环境——PyCharm
9.3.1 PyCharm的下载安装
9.3.2 PyCharm的使用
9.4 使用ddt创建数据驱动测试
9.4.1 安装ddt
9.4.2 创建测试类
9.4.3 setUp()方法
9.4.4 编写测试
9.4.5 代码清理
9.4.6 运行测试
9.5 断言
9.6 测试套件
9.6.1 使用TestSuite执行指定用例
9.6.2 使用discover批量加载用例
9.7 生成HTML格式的测试报告
9.8 本章小结
9.9 课后习题
第10章 接口自动化测试
10.1 Newman的使用
10.1.1 安装Node.j s
10.1.2 安装Newman
10.1.3 通过Newman执行脚本
10.2 与持续集成工具Jenkins结合
10.2.1 Jenkins搭建
10.2.2 新建job
10.2.3 执行DOS指令
10.2.4 Jenkins定制构建
10.2.5 构建触发器
10.2.6 job关联
10.2.7 添加HTML Publisher插件
10.2.8 添加 Reports
10.2.9 报告展示
10.2.1 0Jenkins中的HTML展示
10.3 本章小结
10.4 课后习题
第11章 WebUI自动化测试
11.1 Selenium介绍
11.1.1 安装Selenium
11.1.2 个Selenium Python脚本
11.1.3 WebDriver原理
11.1.4 控件的识别与定位
11.2 Selenium WebDriver
11.2.1 Selenium WebDriver的常用方法
11.2.2 WebDriver的功能
11.2.3 示例: 定位一组元素
11.2.4 正则匹配示例——摘取邮箱
11.3 WebElement接口
11.3.1 WebElement功能
11.3.2 WebElement方法
11.3.3 示例: 百度搜索
11.3.4 示例: 爬取拉勾网职位信息
11.4 自动化测试模型介绍
11.4.1 线性测试
11.4.2 模块化与类库
11.4.3 数据驱动
11.4.4 关键字驱动
11.5 Selenium轻量级UI自动化测试框架
11.5.1 为什么要进行框架设计
11.5.2 PageObject设计模式
11.5.3 BasePage对象
11.5.4 实现PageObject
11.5.5 构建PageObject模式测试实例
11.6 框架梳理
11.7 本章小结
11.8 课后习题
扩展篇
第12章 性能测试
12.1 认识性能测试
12.1.1 为什么要进行性能测试
12.1.2 性能定义
12.1.3 性能测试分层模型
12.1.4 性能指标
12.1.5 性能测试的流程
12.2 LoadRunner脚本开发实战
12.2.1 LoadRunner介绍
12.2.2 项目介绍
12.2.3 需求分析
12.2.4 脚本开发
12.2.5 使用LoadRunner完成H5网站的测试脚本开发
12.3 场景设计精要
12.4 性能测试分析思路
12.4.1 观察现象
12.4.2 层层递进
12.4.3 缩小范围
12.5 本章小结
12.6 课后习题
第13章 移动APP非功能测试
13.1 移动APP启动时间测试
13.1.1 用户体验角度的APP启动时间
13.1.2 常见的APP启动时间测试方法
13.1.3 使用adb获得APP启动时间示例
13.2 移动APP流量测试
13.2.1 APP流量测试场景
13.2.2 APP流量测试示例
13.3 移动APP CPU测试
13.3.1 APP的CPU测试场景
13.3.2 APP的CPU占用率测试示例
13.4 移动APP电量测试
13.5 本章小结
13.6 课后习题
第14章 渗透性测试
14.1 Web应用安全基础
14.2 SQL注入漏洞
14.2.1 SQL注入原理
14.2.2 SQL注入的后果
14.2.3 SQL注入漏洞攻击流程
14.2.4 注入点类型
14.2.5 SQL注入的防范措施
14.3 XSS跨站脚本漏洞
14.3.1 XSS原理解析
14.3.2 XSS类型
14.3.3 查找XSS漏洞过程
14.3.4 XSS防御
14.4 CSRF
14.4.1 CSRF攻击原理
14.4.2 CSRF攻击场景
14.4.3 查找CSRF漏洞
14.4.4 预防CSRF
14.5 文件上传漏洞
14.5.1 文件上传漏洞利用场景
14.5.2 文件上传漏洞的测试流程
14.5.3 文件上传防御
14.6 本章小结
14.7 课后习题