图书目录

目录

第一部分软件测试基础

第1章软件测试概述3

【导读案例】CPU为什么很少会坏?3

1.1软件的开发过程5

1.1.1软件产品的组成5

1.1.2软件项目成员7

1.1.3软件开发生命周期7

1.2软件错误典型案例9

1.3软件缺陷及其影响11

1.3.1软件缺陷定义12

1.3.2产生缺陷的原因12

1.4软件测试的概念13

1.4.1软件测试定义13

1.4.2测试在软件开发中的角色14

1.4.3验证和确认14

1.4.4质量和可靠性15

1.5软件测试基本原则15

1.6软件测试分类17

1.6.1按测试级别分类17

1.6.2按测试技术分类17

1.6.3按测试类型分类18

1.6.4其他测试活动分类18

1.6.5基于软件活动的测试级别18

【习题】20

【实验与思考】对Windows计算器进行“完全测试”22第2章测试过程与测试用例24

【导读案例】与其他应用交互的Bug的原因分析示例24

2.1软件测试的基本流程24

2.2测试过程模型26

2.2.1软件过程模型26

2.2.2V模型28

2.2.3W模型29

2.2.4TMap模型29

2.2.5测试过程改进模型31

2.3测试用例计划32

2.3.1计划测试用例32

2.3.2测试用例的重要性32

2.3.3测试用例设计的考虑因素33

2.3.4测试用例设计的基本原则33

2.4测试用例设计34

2.4.1测试用例编写标准34

2.4.2测试用例标识要素36

2.5测试用例的组织和跟踪37

2.5.1测试用例的属性38

2.5.2测试套件及其构成方法39

2.5.3跟踪测试用例41

2.5.4维护测试用例42

2.6测试用例的覆盖率42

【习题】42

【实验与思考】测试用例设计示例44第3章软件质量与质量保证49

【导读案例】在软件测试计划中确定测试需求49

3.1质量是免费的50

3.2软件质量的困境50

3.2.1“足够好”的软件50

3.2.2质量成本51

3.2.3质量和安全52

3.2.4管理活动的影响52

3.3质量与软件质量52

3.3.1关于质量的观点53

3.3.2软件质量的定义53

3.3.3加文的质量维度54

3.3.4麦卡尔的质量因素54

3.3.5WebApp设计质量55

3.4软件质量保证57

3.4.1关于质量保证57

3.4.2SQA的要素58

3.4.3SQA的任务59

3.4.4SQA计划60

3.4.5统计软件质量保证61

3.4.6软件安全与可靠性61

3.4.7ISO 9000质量标准62

3.5能力成熟度模型62

3.5.1软件能力成熟度模型62

3.5.2测试成熟度模型63

【习题】64

【实验与思考】软件质量维度的新思考66第4章软件测试的职业69

【导读案例】大厂的产品质量之道69

4.1软件测试的组织70

4.1.1测试的高级期望71

4.1.2哪些要测试,哪些不要测试71

4.1.3测试的阶段与进度71

4.1.4测试策略72

4.1.5资源需求72

4.1.6度量和统计72

4.1.7风险和问题73

4.2软件测试的团队73

4.2.1测试团队的地位73

4.2.2测试团队的构成75

4.2.3测试团队组织模型76

4.2.4测试团队中的岗位77

4.2.5测试员的任务分配81

4.3测试员的职业素养82

4.3.1测试员的工作82

4.3.2测试员的职业道德83

4.3.3测试员的职业素质84

4.4管理测试团队86

【习题】88

【实验与思考】测试员的职业认同与培养途径90

第二部分测试技术与方法

第5章软件测试策略95

【导读案例】软件测试文档的深度与广度95

5.1软件测试的策略性方法96

5.1.1测试策略的特征96

5.1.2测试的宏观策略97

5.1.3测试完成的标准98

5.1.4策略问题98

5.2传统软件的测试策略99

5.2.1单元测试策略99

5.2.2集成测试策略100

5.2.3冒烟测试策略102

5.2.4回归测试策略103

5.2.5确认测试策略103

5.2.6系统测试策略104

5.3测试的标准与规范104

5.3.1标准化基础104

5.3.2GB/T 8567规定的测试文件105

5.3.3GB/T 9386计算机软件测试文档编制规范106

5.3.4GB/T 15532计算机软件测试规范106

5.4调试技巧109

5.4.1调试过程110

5.4.2心理因素110

5.4.3调试策略111

5.4.4纠正错误111

【习题】112

【实验与思考】测试的控制流程与状态图114第6章静态测试116

【导读案例】代码评审的8条准则116

6.1关于静态测试117

6.1.1错误和缺陷118

6.1.2缺陷放大模型118

6.1.3静态测试的过程119

6.2代码评审120

6.2.1检查代码120

6.2.2流图分析121

6.3非正式评审121

6.3.1桌面检查121

6.3.2结对编程122

6.3.3走查123

6.3.4同事评审123

6.4正式技术评审124

6.4.1FTR的基本要素124

6.4.2评审指导原则124

6.4.3评审会议125

6.4.4检查表126

6.4.5评审报告和记录保存127

6.4.6样本驱动评审127

6.5软件文档测试128

6.5.1软件文档的类型128

6.5.2文档测试的重要性128

6.5.3评审文档时要找什么129

6.5.4文档测试的实质129

6.5.5检查产品说明书130

6.6评审和测试类似软件131

【习题】132

【实验与思考】熟悉软件评审技术134第7章单元测试136

【导读案例】在微软当软件测试工程师136

7.1单元测试方法137

7.1.1单元测试的定义138

7.1.2单元测试的内容138

7.1.3驱动程序和桩程序139

7.2状态迁移图139

7.3单元测试过程141

7.3.1测试策划141

7.3.2测试设计142

7.3.3测试执行142

7.3.4测试总结143

7.3.5测试文档143

7.4单元测试的评估143

7.5单元测试工具144

【习题】146

【实验与思考】熟悉单元测试及其工具148第8章动态测试152

【导读案例】单元级和系统级的典型测试案例152

8.1动态测试技术153

8.1.1动态测试过程153

8.1.2分析和非分析方法153

8.1.3主动和被动测试153

8.2白盒测试方法154

8.2.1语句覆盖155

8.2.2判定覆盖156

8.2.3条件覆盖156

8.2.4判定条件覆盖157

8.2.5条件组合覆盖157

8.2.6路径覆盖158

8.3黑盒测试方法159

8.3.1等价类划分法160

8.3.2边界值分析法161

8.3.3组合分析162

8.3.4判定表方法162

8.3.5因果图法163

8.3.6错误推测法164

8.4增量测试与大突击测试164

8.5基于风险的测试165

【习题】166

【实验与思考】划分等价类与设计测试用例168第9章集成测试与配置测试170

【导读案例】我所了解的手机测试170

9.1集成测试的技术要求171

9.2集成的模式与方法172

9.2.1测试前的准备172

9.2.2集成测试的内容173

9.3集成测试过程174

9.3.1测试策划175

9.3.2测试设计175

9.3.3测试执行176

9.3.4测试总结176

9.3.5集成测试工具176

9.4配置测试的要求177

9.4.1配置测试的技术要求177

9.4.2配置测试的内容178

9.4.3配置测试过程181

9.5确认测试181

【习题】182

【实验与思考】绘制测试控制流程185第10章系统测试188

【导读案例】手机基本功能测试188

10.1什么是系统测试190

10.1.1系统测试的定义191

10.1.2功能性测试192

10.1.3可靠性测试192

10.1.4系统测试过程195

10.2功能测试195

10.3性能测试196

10.3.1系统负载196

10.3.2系统性能指标196

10.3.3性能测试基本过程197

10.3.4使用性能测试工具197

10.4易用性测试199

10.4.1用户界面测试199

10.4.2优秀UI的构成199

10.4.3辅助选项测试202

【习题】203

【实验与思考】熟悉C代码的测试覆盖率205第11章验收测试与回归测试208

【导读案例】再测试和回归测试208

11.1验收测试的定义209

11.1.1验收测试标准209

11.1.2正式验收测试209

11.1.3非正式验收测试210

11.1.4α测试与β测试210

11.1.5测试共享211

11.1.6外包测试211

11.2验收测试的内容与过程212

11.3回归测试的定义212

11.3.1技术要求213

11.3.2测试环境213

11.3.3测试方法213

11.3.4准入条件214

11.3.5准出条件214

11.4回归测试的内容与过程214

11.5回归测试的实施215

11.5.1单元回归测试215

11.5.2配置项回归测试215

11.5.3系统回归测试216

11.6回归测试的效率和有效性217

【习题】217

【实验与思考】熟悉验收测试与回归测试219第12章安全性测试223

【导读案例】提高软件系统的鲁棒性223

12.1软件的安全性224

12.1.1应用程序级别和系统级别的安全性224

12.1.2安全威胁模型224

12.1.3安全编码准则225

12.2安全性测试226

12.2.1安全性测试的目标226

12.2.2安全性测试的类型227

12.3性能测试中的压力、负载与容量229

12.3.1压力测试229

12.3.2负载测试230

12.3.3负载测试与压力测试的关系231

12.3.4容量规划232

12.4可靠性测试233

12.4.1可靠性测试方法233

12.4.2可靠性数据收集234

12.4.3可靠性测试结果评估234

12.5容错性测试234

12.5.1故障转移与数据恢复235

12.5.2测试目标235

12.5.3测试范围235

12.5.4完成标准236

【习题】236

【实验与思考】熟悉安全性测试示例238第13章自动化测试240

【导读案例】初识“猴子测试”240

13.1持续集成与持续部署241

13.2自动化测试原理244

13.2.1自动化测试基本结构244

13.2.2断言及其运用245

13.2.3自动化测试的限制246

13.3自动化测试工具247

13.3.1测试工具的类别248

13.3.2测试工具的选择248

13.4构建自动化测试框架250

13.5自动化测试的执行251

13.5.1前处理251

13.5.2后处理252

13.5.3测试过程252

13.5.4测试结果比较253

13.6随机测试的猴子256

13.6.1笨拙的猴子256

13.6.2半聪明的猴子256

13.6.3聪明的猴子257

【习题】258

【实验与思考】使用Selenium进行Web UI自动化测试260

第三部分进 阶 主 题

第14章敏捷、测试驱动与行为驱动开发测试267

【导读案例】提高软件项目产品的质量267

14.1极限测试方法268

14.1.1极限编程的主要特征268

14.1.2极限测试的过程269

14.1.3极限测试的实施270

14.2场景测试270

14.3测试驱动开发271

14.3.1TDD的基本流程271

14.3.2TDD的关键概念272

14.4行为驱动开发273

14.4.1BDD的核心原则273

14.4.2BDD的基本流程274

14.4.3BDD的测试276

14.5模糊测试方法277

14.6敏捷开发中的测试277

14.6.1敏捷开发的原则与价值观277

14.6.2敏捷测试的特点278

14.6.3敏捷测试的实践279

14.6.4用户故事驱动的测试279

【习题】280

【实验与思考】熟悉BDD与测试方法282第15章面向对象应用系统测试285

【导读案例】数据库测试的种类和方法285

15.1扩展测试的视野286

15.2测试OOA和OOD模型287

15.2.1面向对象软件的构造287

15.2.2OOA和OOD模型的正确性288

15.2.3面向对象模型的一致性288

15.3面向对象软件的测试策略289

15.3.1面向对象环境中的单元测试289

15.3.2面向对象环境中的集成测试290

15.3.3面向对象环境中的确认测试290

15.4面向对象测试方法290

15.4.1面向对象测试用例的设计含义291

15.4.2传统测试用例设计方法的可应用性291

15.4.3基于故障的测试291

15.4.4测试用例与类层次292

15.4.5基于场景的测试设计292

15.4.6表层结构和深层结构的测试293

15.5类级可用的测试方法294

15.5.1面向对象类的随机测试294

15.5.2类级的划分测试294

15.6类间测试用例设计295

15.6.1多类测试295

15.6.2从行为模型导出的测试296

【习题】297

【实验与思考】面向对象软件测试活动299第16章移动与Web应用测试302

【导读案例】基于TRIZ方法组织软件开发测试302

16.1移动应用测试303

16.1.1移动应用的主要类型303

16.1.2移动应用测试与类型304

16.1.3测试策略与环境305

16.2Web应用测试概念305

16.2.1测试的一般问题306

16.2.2质量维度306

16.2.3环境的错误307

16.2.4测试策略307

16.3Web应用测试类型307

16.4内容测试309

16.4.1内容测试的目标310

16.4.2数据库测试310

16.5界面测试311

16.5.1界面测试策略312

16.5.2测试界面机制312

16.5.3测试界面语义314

16.5.4可用性测试314

16.5.5导航测试315

16.6功能测试与性能测试316

16.6.1构件测试316

16.6.2性能测试317

16.6.3配置测试318

16.6.4易用性测试318

16.7Web安全测试319

【习题】320

【实验与思考】熟悉Web应用系统测试322第17章人工智能测试的挑战324

【导读案例】批判性思维与软件测试324

17.1DevOps文化与实践325

17.1.1DevOps生命周期326

17.1.2DevOps与测试327

17.1.3DevOps流水线集成测试328

17.1.4监控与反馈循环329

17.1.5蓝绿部署331

17.1.6金丝雀发布332

17.2大数据软件测试334

17.2.1大数据对测试的影响334

17.2.2大数据测试策略335

17.2.3大数据生态系统337

17.3云端软件测试337

17.3.1云计算与软件测试337

17.3.2云安全338

17.3.3合规性339

17.4人工智能与软件测试339

17.4.1人工智能用于测试339

17.4.2模型验证与评估340

【习题】341

【实验与思考】制定元宇宙软件测试策略343

第四部分测试的管理与发展

第18章问题报告与成效评价349

【导读案例】项目管理是“艺术”349

18.1设法修复软件缺陷350

18.1.1设法修复软件缺陷351

18.1.2分离和再现软件缺陷353

18.1.3软件缺陷之间的平等性354

18.1.4软件缺陷的生命周期355

18.2报告和跟踪软件缺陷355

18.2.1标准: 测试事件报告355

18.2.2软件缺陷报告和跟踪356

18.3成效评价356

18.3.1使用软件缺陷跟踪数据库356

18.3.2在日常测试中使用的度量357

【习题】358

【实验与思考】规划一个软件测试项目360第19章软件测试管理364

【导读案例】从程序员到软件测试工程师364

19.1软件测试的管理366

19.1.1软件测试管理的特点366

19.1.2软件测试过程管理367

19.2软件测试资源管理367

19.2.1工作量的估算368

19.2.2人力资源管理368

19.2.3测试环境资源368

19.2.4测试文档管理369

19.3软件测试进度管理369

19.3.1测试的里程碑和关键路径369

19.3.2测试进度的特性及外在关系370

19.3.3测试进度管理的S曲线法370

19.3.4测试进度NOB曲线法371

19.4软件测试风险管理372

19.5部署测试环境373

19.5.1测试环境的定义374

19.5.2测试环境要素375

19.5.3数据准备376

19.5.4虚拟机应用376

19.6测试环境的维护和管理377

19.6.1测试环境管理员的职责377

19.6.2测试环境管理所需的文档377

19.6.3测试环境访问权限的管理378

19.6.4测试环境的变更管理378

19.6.5测试环境的备份和恢复378

19.7软件测试的未来发展378

【习题】379

【课程学习与实验总结】381附录A习题及部分实验参考答案386参考文献400

ⅩⅦ