前言
1.1 软件测试发展历史
1.2 历史教训
1.2.1 1962年,“水手1号”火箭爆炸
1.2.2 1978年,哈特福德体育场倒塌
1.2.3 “5·19”南方六省断网事件
1.2.4 2003年,美加停电事故
1.3 缺陷的引入
1.4 修复缺陷的成本
1.5 测试付出的成本
1.6 小结
2.1 测试在质量体系中的位置
2.1.1 能力成熟度模型集成
2.1.2 基于过程中的质量
2.2 软件测试模型
2.2.1 瀑布模型
2.2.2 V模型
2.2.3 W模型
2.2.4 H模型
2.2.5 X模型
2.3 系统生命周期中的测试策略
2.3.1 开发阶段的测试策略
2.3.2 产品阶段的测试策略
2.4 小结
3.1 测试部在企业的位置
3.2 项目团队模型
3.3 测试组织的演变
3.4 测试工程师晋升通道
3.5 测试工程师职业发展
3.6 小结
4.1 制定测试计划的目的
4.2 制定测试计划
4.2.1 测试计划标识符
4.2.2 项目介绍
4.2.3 测试项
4.2.4 需要测试的特性
4.2.5 不被测试的特性
4.2.6 测试方法
4.2.7 测试项通过/失败准则
4.2.8 测试交付物
4.2.9 测试任务
4.2.10 测试环境
4.2.11 职责和人力资源
4.2.12 培训需求
4.2.13 计划时间表
4.2.14 风险及应急办法
4.3 小结
5.1 制定测试方案的目的
5.2 测试方案设计
5.2.1 概述
5.2.2 被测试对象
5.2.3 应测试的特性
5.2.4 不被测试的特性
5.2.5 测试环境
5.2.6 关键技术分析
5.2.7 系统测试策略
5.2.8 Alpha测试策略
5.2.9 Beta测试策略
5.2.10 Build版本划分与测试策略
5.2.11 测试工具分析
5.3 小结
6.1 测试用例概述
6.1.1 为什么需要写测试用例
6.1.2 测试用例项
6.2 黑盒测试用例设计方法
6.2.1 等价类测试用例设计方法
6.2.2 边界值测试用例设计方法
6.2.3 场景法测试用例设计方法
6.2.4 因果图测试用例设计方法
6.2.5 判定表测试用例设计方法
6.2.6 正交试验测试用例设计方法
6.2.7 状态迁移图测试用例设计方法
6.2.8 输入域测试用例设计方法
6.2.9 输出域测试用例设计方法
6.2.10 异常分析测试用例设计方法
6.2.11 错误猜测测试用例设计方法
6.3 测试用例评审
6.4 测试用例变更
6.5 小结
7.1 缺陷报告的发展
7.1.1 Bug的由来
7.1.2 一份简单的缺陷报告
7.1.3 一份好的缺陷报告
7.2 相关术语
7.3 缺陷管理
7.3.1 缺陷的严重等级
7.3.2 缺陷的管理流程
7.3.3 缺陷的生命周期
7.3.4 缺陷的状态转变
7.3.5 缺陷的收敛性
7.4 缺陷分析方法
7.4.1 根本原因缺陷分析法
7.4.2 四象限缺陷分析法
7.4.3 ODC缺陷分析法
7.4.4 Rayleigh缺陷分析法
7.4.5 Gompertz缺陷分析法
7.5 常用的缺陷管理系统
7.5.1 开源缺陷管理系统
7.5.2 商业化缺陷管理系统
7.6 小结
8.1 单元测试介绍
8.1.1 单元测试定义
8.1.2 单元测试的重点
8.1.3 单元测试环境
8.1.4 单元测试策略
8.2 静态测试技术
8.2.1 代码走查
8.2.2 控制流分析
8.2.3 数据流分析
8.2.4 信息流分析
8.3 动态测试技术
8.3.1 语句覆盖
8.3.2 判定覆盖
8.3.3 条件覆盖
8.3.4 判定/条件覆盖
8.3.5 路径覆盖
8.3.6 基本路径覆盖
8.4 CppUnit自动化单元测试框架
8.5 小结
9.1 系统测试概述
9.2 功能测试
9.3 易用性测试
9.4 可安装性测试
9.4.1 安装过程测试
9.4.2 不同环境下的安装
9.4.3 系统升级测试
9.4.4 安装的文件存放
9.4.5 卸载测试
9.5 异常测试
9.6 压力测试
9.7 GUI测试
9.8 兼容性测试
9.9 性能测试
9.10 安全性测试
9.11 配置测试
9.12 可靠性测试
9.13 健壮性测试
9.14 系统测试过程
9.15 小结
10.1 功能测试
10.1.1 链接测试
10.1.2 表单测试
10.1.3 Cookies测试
10.1.4 设计语言测试
10.1.5 数据库测试
10.1.6 文件上传测试
10.2 性能测试
10.2.1 链接速度测试
10.2.2 负载测试
10.2.3 压力测试
10.3 GUI测试
10.3.1 格式验证
10.3.2 导航条测试
10.3.3 页面排版测试
10.3.4 拼写和语法测试
10.3.5 标签属性测试
10.3.6 页面源文件测试
10.3.7 Tab键测试
10.4 兼容性测试
10.5 安全性测试
10.5.1 Web漏洞扫描
10.5.2 服务器端信息测试
10.5.3 文件和目录测试
10.5.4 认证测试
10.5.5 会话管理测试
10.5.6 权限管理测试
10.5.7 文件上传下载测试
10.5.8 消息泄漏测试
10.5.9 输入数据测试
10.5.10 跨站脚本攻击测试
10.5.11 Web Service测试
10.6 小结
11.1 本地化与国际化测试概述
11.2 国际化测试
11.2.1国际化测试常用术语
11.2.2 软件国际化要求
11.2.3 软件国际化测试方法
11.3 本地化测试
11.3.1 同步本地化工程模型
11.3.2 多语言测试
11.3.3 区域文化
11.3.4 数据格式
11.3.5 热键
11.4 小结
12.1 兼容性测试概述
12.1.1 向上兼容
12.1.2 向下兼容
12.1.3 交叉兼容
12.2 硬件兼容
12.3 软件兼容
12.3.1 浏览器兼容
12.3.2 分辨率兼容
12.3.3 打印机兼容
12.4 数据库兼容
12.5 操作系统兼容
12.6 数据共享兼容
12.7 小结
13.1 易用性测试概述
13.1.1 易用性的定义
13.1.2 UI的七大特征
13.2 安装易用性测试
13.3 GUI易用性测试
13.3.1 GUI的组成部分
13.3.2 GUI测试内容
13.4 UI易用性测试
13.5 易用性测试的自动化实现
13.6 小结
14.1 性能测试概述
14.1.1 什么是性能测试
14.1.2 性能测试自动化
14.2 主流性能测试工具
14.3 性能测试常见术语
14.3.1 响应时间
14.3.2 并发用户数
14.3.3 吞吐量
14.3.4 吞吐率
14.3.5 点击率
14.3.6 资源使用率
14.3.7 性能计数器
14.3.8 思考时间
14.4 性能测试过程
14.5 性能测试实例
14.5.1 系统介绍
14.5.2 设计
14.5.3 构建
14.5.4 执行
14.5.5 分析、诊断和调节
14.5.6 测试结论
14.6 小结
15.1 什么是自动化测试
15.1.1 自动化测试目的和范围
15.1.2 自动化测试需要达到的程度
15.1.3 适合自动化测试的对象
15.2 自动化测试优点
15.3 自动化测试缺点
15.4 自动化测试普遍存在的问题
15.5 当前主流自动化测试工具
15.6 自动化测试框架
15.6.1 自动化测试框架的发展
15.6.2 自动化测试框架的开发
15.7 自动化测试过程
15.8 自动化测试实例
15.8.1 系统介绍
15.8.2 测试方案及计划
15.8.3 测试用例
15.8.4 脚本开发
15.8.5 执行测试
15.8.6 提交测试报告
15.9 小结
16.1 验收测试的内容
16.1.1 制定验收测试的标准
16.1.2 复审配置项
16.1.3 执行验收测试
16.2 验收测试的策略
16.2.1 正式验收测试
16.2.2 非正式验收测试
16.2.3 Beta测试
16.3 验收测试过程
16.4 实施验收测试
16.5 提交验收测试报告
16.6 小结
17.1 文档的类型
17.2 文档测试的现状
17.3 文档测试的要点
17.4 文档测试的策略
17.5 小结
18.1 如何进入软件测试行业
18.2 软件测试工程师的职责
18.3 软件测试工程师的心态
18.4 当前你的工作情况
18.5 未来你如何选择
18.5.1 性能测试
18.5.2 自动化测试
18.5.3 单元测试
18.5.4 云测试
18.6 如何提高自身的技能
18.6.1 给自己制定一个目标
18.6.2 正规培训
18.6.3 自学
18.7 小结
参考文献