《软件测试理论与技术》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:李千目编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302399827
  • 页数:222 页
图书介绍:涵盖软件本教材按照软件测试流程,对软件测试的相关技术进行了全面、系统的介绍;由于面向对象技术的特性以及测试自动化技术日益广泛的应用,本教材还对面向对象软件测试技术和软件测试自动化相关知识进行了较详细的介绍。最后通过一个实际软件测试项目案例将各章知识联系起来,实现“巩固理论知识、提高实践能力”的教学目标。

第1章 软件测试的基本概念 1

1.1 软件质量 1

1.1.1 软件质量的概念 1

1.1.2 软件质量的属性 1

1.1.3 软件质量的模型 3

1.1.4 软件质量的量度 4

1.2 软件测试的概念 5

1.2.1 软件测试的定义与目的 5

1.2.2 软件测试的原则 5

1.3 软件的缺陷与错误 6

1.3.1 软件缺陷的定义和类型 6

1.3.2 软件缺陷的级别 6

1.3.3 软件缺陷产生的原因 7

1.3.4 软件缺陷的分类 7

1.3.5 修复软件缺陷的代价 8

1.4 软件测试的经济学与心理学 8

1.4.1 软件测试的心理学 8

1.4.2 软件测试的经济学 8

1.5 软件质量保证 9

1.5.1 软件质量保证概要 9

1.5.2 软件质量保证活动的实施 9

1.5.3 SQA与软件测试的关系 10

1.6 本章小结 10

第2章 软件测试类型及其在软件开发过程中的地位 11

2.1 软件开发阶段 11

2.1.1 软件生存周期 11

2.1.2 软件测试的生存周期模型 11

2.1.3 测试信息流 12

2.2 规划阶段的测试 12

2.2.1 目标阐述 12

2.2.2 需求分析 12

2.2.3 功能定义 13

2.2.4 规划阶段进行的测试 13

2.3 设计阶段的测试 13

2.3.1 外部设计 13

2.3.2 内部设计 13

2.3.3 设计阶段的测试 13

2.3.4 伪代码分析 14

2.4 编程阶段的测试 14

2.4.1 白盒测试与黑盒测试 14

2.4.2 结构测试与功能测试 14

2.4.3 路径测试:覆盖准则 14

2.4.4 增量测试与大突击测试 14

2.4.5 自顶向下测试与自底向上测试 15

2.4.6 静态测试与动态测试 15

2.4.7 性能测试 15

2.5 回归测试 15

2.6 运行和维护阶段的测试 15

2.7 本章小结 15

第3章 代码检查、走查与评审 16

3.1 桌上检查 16

3.1.1 桌上检查的检查项目 16

3.1.2 对程序代码做静态错误分析 16

3.2 代码检查 16

3.2.1 特定的角色和职责 16

3.2.2 代码检查过程 17

3.2.3 用于代码检查的错误列表 17

3.3 走查 18

3.3.1 特定的角色和职责 18

3.3.2 走查的过程 18

3.3.3 走查中的静态分析技术 19

3.4 同行评审 19

3.4.1 为什么需要评审 19

3.4.2 同行评审的角色和职能 19

3.4.3 同行评审的内容 20

3.4.4 评审的方法和技术 20

3.5 本章小结 21

第4章 覆盖率测试 22

4.1 覆盖率概念 22

4.2 逻辑覆盖 22

4.2.1 语句覆盖 22

4.2.2 判定覆盖 22

4.2.3 条件覆盖 23

4.2.4 条件/判定覆盖 23

4.2.5 条件组合覆盖 23

4.2.6 路径覆盖 23

4.2.7 ESTCA覆盖 23

4.2.8 LCSAJ覆盖 24

4.3 路径测试 24

4.3.1 分支结构的路径测试 24

4.3.2 循环结构的路径测试 24

4.3.3 Z路径覆盖与基本路径测试 26

4.4 数据流测试 28

4.4.1 定义/使用测试的几个定义 28

4.4.2 定义/使用路径测试覆盖指标 29

4.5 基于覆盖的测试用例选择 29

4.5.1 如何使用覆盖率 29

4.5.2 使用最少测试用例来达到覆盖 29

4.6 本章小结 30

第5章 功能测试 31

5.1 等价类测试 31

5.1.1 等价类的概念 31

5.1.2 等价类测试的类型 31

5.1.3 等价类测试的原则 31

5.1.4 等价类方法测试用例设计举例 32

5.2 边界值分析 34

5.2.1 边界值分析的概念 34

5.2.2 选择测试用例的原则 34

5.2.3 边界值方法测试用例设计举例 34

5.3 基于判定表的测试 35

5.3.1 判定表的概念 35

5.3.2 基于判定表的测试用例设计举例 35

5.4 基于因果图的测试 36

5.4.1 因果图的适用范围 36

5.4.2 用因果图生成测试用例 36

5.4.3 因果图法测试用例设计举例 36

5.5 基于状态图的测试 37

5.5.1 功能图及其符号 37

5.5.2 功能图法设计测试用例举例 37

5.6 基于场景的测试 38

5.6.1 基本流和备选流 38

5.6.2 场景法设计测试用例举例 39

5.7 其他黑盒测试用例设计技术 39

5.7.1 规范导出法 39

5.7.2 内部边界值测试法 40

5.7.3 错误猜测法 40

5.7.4 基于接口的测试 40

5.7.5 基于故障的测试 40

5.7.6 基于风险的测试 40

5.7.7 比较测试 41

5.8 本章小结 41

第6章 单元测试和集成测试 42

6.1 单元测试的基本概念 42

6.1.1 单元测试的定义和目标 42

6.1.2 单元测试与集成测试、系统测试的区别 42

6.1.3 单元测试环境 43

6.2 单元测试策略 43

6.2.1 自顶向下的单元测试策略 43

6.2.2 自底向上的单元测试策略 43

6.2.3 孤立测试 44

6.2.4 综合测试 44

6.3 单元测试分析 44

6.3.1 模块接口 44

6.3.2 局部数据结构 44

6.3.3 独立路径 44

6.3.4 出错处理 45

6.3.5 边界条件 45

6.3.6 其他测试分析的指导原则 45

6.4 单元测试的测试用例设计原则 45

6.4.1 单元测试的测试用例设计步骤 45

6.4.2 单元测试中的白盒测试与黑盒测试 45

6.5 集成测试的基本概念 46

6.5.1 集成测试的定义 46

6.5.2 集成测试与系统测试的区别 46

6.5.3 集成测试与开发的关系 46

6.5.4 集成测试重点 47

6.5.5 集成测试层次 47

6.5.6 集成测试环境 47

6.6 集成测试的策略 48

6.6.1 基于分解的集成策略 48

6.6.2 基于功能的集成 48

6.6.3 基于调用图的集成 48

6.6.4 基于路径的集成 49

6.6.5 基于进度的集成 49

6.6.6 基于风险的集成 49

6.7集成测试分析 49

6.7.1 体系结构分析 49

6.7.2 模块分析 49

6.7.3 接口分析 49

6.7.4 可测试性分析 50

6.7.5 集成测试策略的分析 50

6.7.6 常见的集成测试故障 50

6.8 集成测试的测试用例设计 51

6.9 本章小结 51

第7章 系统测试 52

7.1 系统测试概念 52

7.1.1 什么是系统测试 52

7.1.2 系统测试与单元测试、集成测试的区别 52

7.1.3 集成测试的组织和分工 52

7.1.4 系统测试分析 53

7.1.5 系统测试环境 53

7.2 系统测试的方法 53

7.2.1 功能测试 53

7.2.2 协议一致性测试 54

7.2.3 性能测试 54

7.2.4 压力测试 54

7.2.5 容量测试 54

7.2.6 安全性测试 55

7.2.7 失效恢复测试 55

7.2.8 备份测试 55

7.2.9 GUI测试 55

7.2.10 健壮性测试 56

7.2.11 兼容性测试 56

7.2.12 易用性测试 56

7.2.13 安装测试 56

7.2.14 文档测试 56

7.2.15 在线帮助测试 56

7.2.16 数据转换测试 57

7.3 系统测试的实施 57

7.3.1 确认测试 57

7.3.2 α测试和β测试 57

7.3.3 验收测试 57

7.3.4 回归测试 57

7.3.5 系统测试问题总结、分析 58

7.4 如何做好系统测试 58

7.5 本章小结 58

第8章 面向对象软件的测试 59

8.1 面向对象软件测试的问题 59

8.1.1 面向对象的基本特点引起的测试问题 59

8.1.2 面向对象程序的测试组织问题 60

8.2 面向对象软件的测试模型及策略 60

8.2.1 面向对象软件的测试模型 60

8.2.2 面向对象分析的测试 60

8.2.3 面向对象设计的测试 60

8.2.4 面向对象编程的测试 61

8.2.5 面向对象程序的单元测试 61

8.2.6 面向对象程序的集成测试 61

8.2.7 面向对象软件的系统测试 61

8.3 面向对象程序的单元测试 62

8.3.1 方法层次的测试 62

8.3.2 类层次的测试 62

8.3.3 类树层次的测试 62

8.4 面向对象程序的集成测试 63

8.4.1 面向对象程序的集成测试策略 63

8.4.2 针对类间连接的测试 64

8.5面向对象软件的系统测试 64

8.5.1 功能测试 65

8.5.2 其他系统测试 65

8.6 本章小结 65

第9章 软件性能测试基础理论 66

9.1 软件性能定义 66

9.1.1 用户眼中的软件性能 66

9.1.2 运维人员眼中的软件性能 66

9.1.3 开发人员眼中的软件性能 67

9.1.4 Web前端性能 67

9.2 性能测试 67

9.2.1 性能测试的定义 67

9.2.2 性能测试的目标 67

9.3 性能测试术语 68

9.3.1 响应时间 68

9.3.2 并发用户数 68

9.3.3 吞吐量 69

9.3.4 吞吐率 70

9.3.5 TPS 70

9.3.6 点击率 70

9.3.7 资源利用率 70

9.3.8 性能计数器 70

9.3.9 思考时间 71

9.4 软件性能测试方法论 71

9.4.1 SEI负载测试计划过程 71

9.4.2 RBI方法 72

9.4.3 性能下降曲线分析法 72

9.4.4 LoadRunner的性能测试过程 73

9.4.5 Segue提供的性能测试过程 73

9.4.6 敏捷性能测试 74

9.5 性能测试过程中的常见风险 75

9.5.1 识别风险 75

9.5.2 规避风险 75

9.6 本章小结 75

第10章 性能测试的应用领域 76

10.1 性能测试的方法分类 76

10.1.1 验收性能测试 76

10.1.2 负载测试 77

10.1.3 压力测试 77

10.1.4 配置测试 78

10.1.5 可靠性测试 78

10.1.6 负载压力测试 79

10.2 性能测试应用领域分析 79

10.2.1 能力验证 79

10.2.2 规划能力 80

10.2.3 性能调优 80

10.2.4 缺陷发现 80

10.2.5 性能基准比较 80

10.3 本章小结 81

第11章 性能测试团队建设 82

11.1 性能测试人员构成 82

11.2 性能测试过程模型 83

11.2.1 测试前期准备 84

11.2.2 测试工具引入 85

11.2.3 测试计划 86

11.2.4 测试设计与开发 88

11.2.5 测试执行与管理 91

11.2.6 测试分析 93

11.3 敏捷性能测试模型 93

11.3.1 APTM的检查表 94

11.3.2 APTM中的活动 95

11.3.3 环境与工具 96

11.4 本章小结 98

第12章 性能测试工具原理 99

12.1 服务器端性能测试工具架构 99

12.2 性能测试脚本录制时的协议类型 102

12.3 性能测试工具的选择与评估 104

12.3.1 创建还是购买 104

12.3.2 测试工具的评估和选择过程 104

12.4 本章小结 107

第13章 性能测试需求分析 108

13.1 制定负载测试的目标 108

13.2 收集系统信息 109

13.3 制订测试计划 109

13.3.1 性能测试需求 110

13.3.2 测试环境 112

13.3.3 数据准备 113

13.3.4 测试策略 114

13.3.5 人力与时间安排 115

13.4 业务流程 115

13.4.1 业务流程介绍与案例 115

13.4.2 业务流程分析 116

13.5 步骤测量 117

13.6 本章小结 118

第14章 测试脚本编写 119

14.1 参数化脚本 119

14.1.1 参数化的目的 119

14.1.2 什么时候进行参数化 121

14.1.3 怎样参数化输入数据 122

14.2 手工关联和自动关联 124

14.3 日志高级应用 128

14.4 高级脚本技术 130

14.4.1 如何将编写的动态链接库嵌入LR中运行 130

14.4.2 如何利用LR编写FTP脚本 131

14.4.3 web_custom_request使用技巧 132

14.4.4 特殊的录制脚本方法 137

14.5 本章小结 142

第15章 测试场景设计与执行 143

15.1 场景设计介绍 143

15.1.1 新建场景 143

15.1.2 负载生成器管理 152

15.2 场景执行 154

15.2.1 场景运行的准备工作 154

15.2.2 有效的场景运行技术要点 156

15.3 性能监控 157

15.3.1 性能参数监控方法 157

15.3.2 根据测试目标添加性能监控参数 158

15.4 本章小结 159

第16章 测试分析技术 160

16.1 分析性能测试结果 160

16.2 挖掘LR中的错误信息 163

16.3 通过LR图表组合挖掘系统缺陷根源 181

16.4 本章小结 187

第17章 Web前端性能 188

17.1 HTTP协议基础理论 188

17.1.1 HTTP协议结构 188

17.1.2 典型的HTTP请求与响应分析 190

17.1.3 与前端性能相关的头信息 191

17.2 浏览器访问URL原理 194

17.2.1 连接到URL服务器 194

17.2.2 获取页面对应的HTML文档 194

17.2.3 解析文档并获取所需要的资源 194

17.2.4 onload事件 195

17.3 如何提高Web前端的性能 195

17.3.1 减少网络时间 196

17.3.2 减少发送请求的数量 196

17.3.3 提高浏览器下载的并发度 197

17.3.4 让页面尽早开始显示 198

17.3.5 其他 199

17.4 单机前端性能工具介绍 199

17.4.1 Firebug工具 199

17.4.2 HttpWatch 工具 201

17.4.3 Chrome自带的开发工具 202

17.4.4 Page Speed工具 203

17.4.5 DynaTrace AJAX Edition工具 204

17.5 雅虎团队经验:网站页面性能优化的34条黄金守则 205

17.5.1 尽量减少HTTP请求次数 205

17.5.2 减少DNS查找次数 206

17.5.3 避免跳转 207

17.5.4 可缓存的Ajax 208

17.5.5 推迟加载内容 208

17.5.6 预加载 209

17.5.7 减少DOM元素数量 209

17.5.8 根据域名划分页面内容 210

17.5.9 使iframe的数量最小 210

17.5.10 不要出现404错误 210

17.5.11 使用内容分发网络 211

17.5.12 为文件头指定Expires或Cache-Control 211

17.5.13 Gzip压缩文件内容 212

17.5.14 配置ETag 213

17.5.15 尽早刷新输出缓冲 214

17.5.16 使用GET来完成Ajax请求 214

17.5.17 把样式表置于顶部 215

17.5.18 避免使用CSS表达式 215

17.5.19 使用外部JavaScript和CSS 216

17.5.20 削减JavaScript和CSS 216

17.5.21 用〈link〉代替@import 217

17.5.22 避免使用滤镜 217

17.5.23 把脚本置于页面底部 217

17.5.24 剔除重复脚本 217

17.5.25 减少DOM访问 218

17.5.26 开发智能事件处理程序 218

17.5.27 减小cookie体积 219

17.5.28 对于页面内容使用无cookie域名 219

17.5.29 优化图像 219

17.5.30 优化CSS Spirite 220

17.5.31 不要在HTML中缩放图像 220

17.5.32 favicon.ico要小而且可缓存 220

17.5.33 保持单个内容小于25KB 221

17.5.34 打包组件成复合文本 221

17.6 本章小结 221

参考文献 222