本书是作者总结十几年的软件测试的实践经验写成的,希望通过来自一线的实践知识和技能,帮助读者打开一扇通往软件测试之路的大门,寻找到解决测试问题的技术、技巧和方法,体验到测试工作中“逮”Bug犹如“寻宝”的乐趣。全书分为“设计”“工具”和“管理”3篇,共14章,每章的内容虽有一定的联系,但也可各自独立,读者可以根据自己的需求,按照书的内容顺序阅读,也可以根据自己的兴趣选取相关章节阅读。本书可供软件测试初学者、测试从业人员阅读,也可作为计算机软件专业学生的参考书,还可作为培训学校的教材。
第1 篇 软件测试设计技术
第1 章 软件测试的基本知识…………………3
1.1 软件测试的基本理论………………..4
1.1.1 软件测试的定义……………4
1.1.2 软件测试术语……………….5
1.1.3 软件工程模型……………….9
1.1.4 软件测试模型……………..10
1.1.5 软件测试方法……………..12
1.1.6 软件测试步骤……………..13
1.1.7 软件缺陷管理……………..14
1.1.8 测试用例…………………….16
1.1.9 软件测试类型……………..19
1.1.10 软件测试曲线……………28
1.1.11 软件的杀虫剂现象…….29
1.2 软件测试的七项基本原则……….29
1.2.1 原则1:软件测试显示存在缺陷…………………….30
1.2.2 原则2:穷尽软件测试是不可行的…………………30
1.2.3 原则3:软件测试尽早介入……………………………30
1.2.4 原则4:缺陷集群性……30
1.2.5 原则5:杀虫剂悖论……31
1.2.6 原则6:软件测试活动依赖于软件测试背景…..31
1.2.7 原则7:不存在缺陷(即有用系统)的谬论…31
1.3 验证与确认的区别…………………31
1.4 本章总结……………………………….33
1.4.1 介绍内容…………………….33
1.4.2 案例……………………………34
第2 章 传统的软件测试的设计方法…….36
2.1 运用等价类/边界值设计测试用例…………………………………..37
2.1.1 等价类………………………..37
2.1.2 边界值………………………..38
2.1.3 基于输出的等价类/边界值划分…………………39
2.1.4 测试用例的设计…………..39
2.1.5 案例……………………………41
2.2 运用决策表设计测试用例……….41
2.2.1 四边形类型判断系统……41
2.2.2 用户登录系统………………43
2.2.3 飞机票定价系统…………..45
2.3 运用状态转换图设计测试用例….48
2.3.1 从状态转换图到状态转换树………………………..49
2.3.2 从状态转换图到状态转换表………………………..51
2.3.3 业务流程状态转化法……52
2.4 运用决策树设计测试用例……….53
2.4.1 文本编辑软件………………53
2.4.2 机票购买系统………………54
2.5 运用正交法设计测试用例……….55
2.5.1 正交法………………………..56
2.5.2 浏览器组合软件测试……56
2.6 软件白盒测试…………………………58
2.6.1 语句覆盖测试……………..59
2.6.2 分支覆盖测试……………..61
2.6.3 条件覆盖测试……………..63
2.6.4 判定/条件覆盖测试……..65
2.6.5 MC/DC(修订的条件/分支软件测试)覆盖测试…..66
2.6.6 路径覆盖测试……………..67
2.6.7 控制流测试…………………68
2.6.8 单元测试中的基于代码的功能测试…………………….69
2.6.9 总结……………………………70
2.7 测试用例设计的若干错误观点…70
2.7.1 能发现到目前为止没有发现的缺陷的用例是好的用例…………………….70
2.7.2 测试用例应该详细记录所有的详细操作信息…..70
2.7.3 测试用例设计出来后是不用维护的…………………71
2.7.4 测试用例不应该包含实际的数据…………………71
2.8 本章总结……………………………….71
2.8.1 介绍内容…………………….71
2.8.2 案例……………………………72
第3 章 探索式软件测试设计方法………..74
3.1 探索式软件测试中用到的一些方法……………………………….75
3.1.1 表单输入的测试探索…..75
3.1.2 模糊查询输入框输入数据的测试探索………….77
3.1.3 对文件的探索……………..78
3.1.4 登录界面的测试探索…..79
3.1.5 根据机器的声音探索…..79
3.1.6 通过查看Log 日志探索……………………………80
3.1.7 在开头/结尾处进行探索……………………………80
3.1.8 多次执行同样操作进行探索…………………….80
3.1.9 通过复制/粘贴进行探索……………………………81
3.1.10 通过测试结果进行探索………………………….82
3.1.11 利用反向操作进行探索………………………….83
3.1.12 利用名词和动词进行探索………………………….83
3.1.13 运用提问进行探索……..84
3.1.14 函数级别的黑盒测试探索………………………….85
3.1.15 运用不懂技术和业务的人员进行探索……………85
3.1.16 并发操作的测试探索….85
3.1.17 页面刷新功能的测试探索………………………….87
3.1.18 不常用功能的测试探索………………………….87
3.1.19 URL 栏的测试探索…….87
3.1.20 突发事故的测试探索….88
3.1.21 界面链接的测试探索….88
3.1.22 需要多步操作来完成一个事务的测试探索…89
3.1.23 老功能的测试探索……..89
3.1.24 重灾区的测试探索……..90
3.1.25 强迫症测试法的测试探索………………………….90
3.1.26 升级的测试探索…………91
3.1.27 总结………………………….91
3.2 基于场景的测试……………………..92
3.3 本章总结………………………………..94
3.3.1 介绍内容…………………….94
3.3.2 案例……………………………95
第4 章 基于风险的软件测试……………….97
4.1 基于风险的软件测试方法……….98
4.2 软件测试风险级别确认与调整…………………………………….101
4.2.1 确定风险级别……………101
4.2.2 调整风险级别……………103
4.3 本章总结……………………………..105
4.3.1 介绍内容…………………..105
4.3.2 案例………………………….105
第5 章 专项软件测试设计…………………106
5.1 性能测试……………………………..107
5.1.1 性能测试的定义………..107
5.1.2 由于性能测试没做到位发生的缺陷………..107
5.1.3 性能指标…………………..107
5.1.4 性能计数器……………….110
5.1.5 性能测试类型……………118
5.1.6 性能测试可以发现的问题………………………….119
5.1.7 性能调优…………………..119
5.1.8 性能测试角色……………121
5.1.9 性能测试工具……………122
5.1.10 性能测试流程………….123
5.2 嵌入式软件的基本测试方法….125
5.2.1 嵌入式软件测试流程………………………….125
5.2.2 单元测试和集成测试………………………….127
5.2.3 插桩技术…………………..127
5.2.4 嵌入式软件测试工具………………………….127
5.3 本章总结……………………………..129
5.3.1 介绍内容…………………..129
5.3.2 案例………………………….129
第6 章 云计算、大数据的软件测试方法……………………………………..131
6.1 如何对大数据软件产品进行软件测试……………………………..132
6.1.1 前言………………………….132
6.1.2 新产品的软件测试……..132
6.1.3 老产品的升级测试……..132
6.2 云计算软件测试应注意的问题…………………………………….133
6.2.1 云计算中增加了供应商角色,给云计算测试带来复杂性…………………..133
6.2.2 云计算中使用虚拟技术,给性能测试带来的影响….134
6.2.3 增加按照使用量收费的软件测试方法……………134
6.2.4 安全性测试……………….135
6.2.5 定位问题…………………..135
6.2.6 法律法规问题…………….136
6.2.7 迁移性软件测试…………136
6.2.8 功能测试…………………..137
6.2.9 自动化测试……………….138
6.3 云计算的优缺点……………………138
6.3.1 优点………………………….138
6.3.2 缺点………………………….140
6.4 文档、环境、数据在云软件测试中的管理………………………141
6.4.1 文档管理…………………..141
6.4.2 云计算软件测试环境管理………………………….142
6.4.3 云计算软件测试数据管理………………………….143
6.4.4 变更管理与版本控制………………………….143
6.5 本章总结……………………………..144
6.5.1 介绍内容…………………..144
6.5.2 案例………………………….144
参考文献………………………………………145
第2 篇 软件测试工具
第7 章 软件测试工具总览…………………149
7.1 软件测试工具介绍……………….150
7.1.1 普通软件测试工具推荐…150
7.1.2 APP 软件测试工具…….150
7.1.3 软件测试工具介绍…….151
7.1.4 软件测试工具的类型…153
7.2 关于自动化测试工具…………….154
7.2.1 自动化测试工具本身也是软件,也要重视工具本身的质量………..154
7.2.2 自动化测试工具要随用户的需求变化而变化…155
7.2.3 不是所有的功能都可以作自动化测试……………155
7.2.4 探索式软件测试也可由自动化测试来实现…….155
7.2.5 是否需要采用自动化测试,需要考虑测试的效率…155
7.2.6 自动化测试可以覆盖软件测试中的每个阶段…156
7.2.7 软件测试自动化是敏捷开发强有力的工具…….156
7.2.8 不要盲目选用现有的自动化测试工具……………156
7.2.9 各种类型的自动化测试工具的比较……………….157
7.3 本章总结……………………………..158
第8 章 单元测试工具………………………..160
8.1 单元测试工具JUnit 4 如何在Eclipse 中使用…………………161
8.1.1 JUnit 4 环境的配置…….161
8.1.2 Junt4 测试用例的运行和调试………………………164
8.1.3 对代码的详细介绍……..166
8.1.4 对JUnit 4 的高级操作….167
8.1.5 介绍一下断言…………….171
8.1.6 案例分析…………………..173
8.2 本章总结………………………………175
8.2.1 介绍内容…………………..175
8.2.2 案例………………………….175
第9 章 性能测试工具………………………..176
9.1 LoadRunner 工具介绍……………177
9.1.1 LoadRunner 简介………..177
9.1.2 LoadRunner 性能测试工具架构…………………..177
9.1.3 LoadRunner 基本功能使用技巧…………………..178
9.1.4 用LoadRunner 实现APP压力测试…………………..207
9.1.5 案例………………………….209
9.2 本章总结………………………………214
9.2.1 介绍内容…………………..214
9.2.2 案例………………………….214
第10 章 缺陷管理工具………………………215
10.1 Bugzilla 使用指南……………….216
10.1.1 什么是Bugzilla ………..216
10.1.2 为什么使用Bugzilla….216
10.1.3 新建一个Bugzilla账号………………………..216
10.1.4 产品和结构………………217
10.1.5 Bug 报告状态分类和Bug处理意见…………………217
10.1.6 指定处理人……………..218
10.1.7 超链接…………………….218
10.1.8 概述………………………..218
10.1.9 硬件平台和操作系统…218
10.1.10 版本………………………218
10.1.11 Bug 报告优先级……..218
10.1.12 Bug 状态………………..218
10.1.13 报告人…………………..219
10.1.14 邮件抄送列表………..219
10.1.15 从属关系……………….219
10.1.16 附加描述……………….219
10.1.17 Bug 查找………………..219
10.1.18 Bug 列表………………..220
10.1.19 用户属性设置………..220
10.2 案例…………………………………..220
10.3 本章总结……………………………225
10.3.1 介绍内容…………………225
10.3.2 案例………………………..226
第11 章 APP 软件测试工具………………227
11.1 UiAutomator 工具介绍………..228
11.1.1 使用UiAutomator工具的优点……………..229
11.1.2 下载和配置……………..229
11.1.3 开发测试代码………….232
11.1.4 UiAutomator API详解………………………..245
11.1.5 案例分析…………………258
11.2 Selenium 和WebDriver 工具入门介绍……………………………264
11.2.1 环境安装………………….265
11.2.2 WebDriver 对浏览器的支持………………………..268
11.2.3 操作指南………………….26
11.2.4 案例分析………………….272
11.3 Monkey 工具介绍………………..293
11.3.1 Monkey 的特征………..293
11.3.2 基本语法………………….293
11.3.3 检查安卓设备中有什么包…………………….293
11.3.4 Monkey 的参数列表…294
11.3.5 利用Monkey 进行稳定性测试……………..297
11.3.6 Monkey 脚本……………298
11.4 精准测试工具——星云测试平台……………………………298
11.4.1 精准测试理念…………..298
11.4.2 星云测试工具客户端下载与配置………………299
11.4.3 项目编译………………….300
11.4.4 执行测试………………….305
11.5 本章总结…………………………….311
11.5.1 介绍内容………………….311
11.5.2 案例…………………………312
参考文献……………………………..313
第3 篇 软件测试管理
第12 章 软件测试与质量文档……………317
12.1 研发过程管理工作规范……….318
12.2 飞天e-购网软件测试报告…..360
12.3 BBS 软件测试报告……………..375
12.4 数字电视机顶盒中间件集成测试计划书………………………..378
12.5 BBS 主测试计划…………………383
12.6 BBS 级别测试计划……………..392
12.7 软件缺陷管理流程………………398
12.8 本章总结…………………………….409
第13 章 软件测试管理………………………410
13.1 软件测试团队组成结构分析….411
13.1.1 方案一…………………….411
13.1.2 方案二…………………….412
13.2 软件测试过程…………………….413
13.3 软件测试的独立性………………417
13.4 从微软裁员首裁软件测试工程师谈起………………………..419
13.5 软件测试的本质…………………421
13.5.1 纯软件测试方法介绍………………………..421
13.5.2 纯软件测试方法在Sprint 中的运用……….422
13.5.3 纯软件测试方法与软件质量的关系…………………..423
13.6 对敏捷开发的一些思考……….424
13.6.1 简介………………………..424
13.6.2 敏捷开发的优点………424
13.6.3 敏捷开发的缺点………426
13.6.4 总结………………………..427
13.7 精益创业与探索式软件测试…………………………………..427
13.8 本章总结……………………………428
13.8.1 介绍内容…………………428
13.8.2 案例………………………..429
第14 章 软件测试工程师的职业素质…………………………………….430
14.1 如何成为一名优秀的软件测试工程师………………………..431
14.1.1 起码有3 年以上的软件开发经验………….431
14.1.2 具有逆向思维的能力………………………..432
14.1.3 具有敏锐的洞察力和锲而不舍的精神………432
14.1.4 具有发散性思维的能力………………………..432
14.1.5 擅于同软件开发工程师沟通…………………….432
14.1.6 擅于同领导沟通……….433
14.1.7 掌握一些自动化软件测试工具和脚本………433
14.1.8 擅于学习…………………434
14.1.9 提高自己的表达能力………………………..434
14.1.10 了解业务知识…………434
14.1.11 培养对软件测试的兴趣………………………434
14.1.12 追求完美……………….434
14.2 如何成为一名优秀的软件质量保证工程师…………………435
14.2.1 具有软件开发,软件测试和实施经验………435
14.2.2 具有一定的统计学基础………………………..435
14.2.3 强大的沟通能力……….436
14.2.4 专业的管理和质量知识………………………..436
14.3 软件测试好书推荐………………436
14.3.1 《软件测试的艺术》….436
14.3.2 《赢在测试2-中国软件测试专家访谈录》…437
14.3.3 《探索式软件测试》….437
14.3.4 《探索式测试实践之路》…………………..438
14.3.5 《探索吧!深入理解探索式软件测试》…….438
14.3.6 《云服务测试如何高效地进行云计算测试》…………………..438
14.3.7 《Google 软件测试之道》…………………..438
14.3.8 《软件测试经验与教训》…………………..438
14.3.9 《学习要像加勒比海盗》…………………..439
14.4 云计算中发生的事故…………..439
14.4.1 Google 应用引擎平台宕机………………………..439
14.4.2 Google Gmail 和日历服务中断…………………439
14.4.3 Google Voice 服务宕机………………………..439
14.4.4 亚马逊S3 服务故障…440
14.4.5 亚马逊EC2 云计算服务遭到僵尸网络攻击…..440
14.4.6 微软爆发BPOS 服务中断事件…………………440
14.4.7 Amazon 主页故障…….440
14.5 ISTQB 和CSTQB ……………….441
14.5.1 ISTQB &CSTQB简介………………………..441
14.6 本章总结…………………………….442
介绍内容……………………………..442
参考文献………………………………………44
本书是作者总结十几年的软件测试的实践经验写成的,希望通过来自一线的实践知识和技能,帮助读者打开一扇通往软件测试之路的大门,寻找到解决测试问题的技术、技巧和方法,体验到测试工作中“逮”Bug犹如“寻宝”的乐趣。全书分为“设计”“工具”和“管理”3篇,共14章,每章的内容虽有一定的联系,但也可各自独立,读者可以根据自己的需求,按照书的内容顺序阅读,也可以根据自己的兴趣选取相关章节阅读。本书可供软件测试初学者、测试从业人员阅读,也可作为计算机软件专业学生的参考书,还可作为培训学校的教材。
本书是由国内具有丰富测试经验的作者写作的关于软件测试实践的书,全书内容丰富,结构清晰,涵盖测试设计、测试工具与测试管理3部分内容。全书内容强调测试实践,既有测试基本知识的介绍,也有测试应用的案例分析;既可以作为测试初学者入门用书,也可以供测试职业人士参考。
——中国软件测试认证委员会(CSTQB)专家组成员 崔启亮
本书作者顾翔老师有着多年的培训经验,这本书是他多年传道、授业、解惑的总结,内容全面、精彩,可为软件测试工作人员提供专业的指导。
——中国赛宝(华东)实验室 陈锃基
从我十多年的软件测试行业从业经验来看,大部分软件测试人员缺乏对被测对象所涉及的IT技术的深入理解,例如对代码、中间件、数据库、虚拟化、云计算、大数据的理解,缺乏这些技术上的理解,表面上看起来不会对测试工作造成很大的影响,其实却会导致测试的不周全、不深入;顾翔老师知识面广,测试经验丰富,在编写本书时不仅全面透彻地讲解了软件测试本身的知识,还用通俗易懂的语言介绍了各类相关技术,测试初学者们可以全面学习并从中受益。
——广州亿能测试技术服务有限公司CEO 陈能技
本书作者经过长期的工作实践,结合国内测试现状,精心构思了测试的知识体系。书中将测试设计提升到很关键的高度,用好的测试设计指导测试工具在测试执行中的使用;用测试管理的精髓,引导测试工作的有序开展,为广大测试工程师的学习提供了必备的参考。
——科大讯飞 CTO助理 测试部经理 吴如伟
本书的特色在于将大量的技术赋予了实际的应用场景,让读者能够更加清晰地把握如何将测试技术应用于具体实践的同时,为测试团队实施相关技术方案带来信心。本书的技术内容和流程方法倾注了作者多年的从业经验,读者可以基于该书的内容为模板,迅速展开合理、规范和有序的测试工作。书中所讲述的测试技术都是作者精心选取的主流技术,体现了作者丰富的行业经验和对新技术发展方向敏锐的洞察力,初级以及资深的读者均可受益于本书的精彩内容。
——星云测试CEO 赵明
本书是一本非常全面的软件测试实践参考书。它不仅知识体系完整,作者也结合自己多年的测试实战经验,分享了大量非常有参考价值的实战案例。它不只是一本专业软件测试人员需要学习的参考书,对于做敏捷开发的每一个团队成员来说,都需要认真学习本书当中的测试基础知识、测试设计和管理的思路、实践和工具。
——Scrum中文网和Leangoo看板创始人 廖靖斌
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”的出版宗旨,不断发展壮大,成为集图书、期刊、音像电子出版物和网络出版为一体的,在国内外有专业特色和品牌影响的综合性科技出版大社。