#电子书截图

程序开发人员测试指南 构建高质量的软件(异步图书出品)截图

#电子书简介

朱少民,国内软件测试界的领军人物和知名专家,三十多年来一直从事软件测试、质量管理和过程改进等工作,过去五年帮助了近百家企业提升其质量保证与测试能力,先后获得安徽省、原机械工业部、青岛市、合肥市等多项科技进步奖,出版了十多部著作,包括测试方面的畅销书《全程软件测试》、《软件测试方法和技术》、《完美测试》和译作《自动化测试*佳实践》等,经常在国内外会议上发表演讲,并在国内开设软件测试MOOC课程。之前曾任思科-网迅(中国)软件有限公司QA总监,目前是同济大学软件学院教授、中国科技大学软件学院教指委委员。

杨晓慧,前华为技术有限公司-软件公司测试专家,1999年进入华为公司,先后参与和主持过多项产品测试、测试流程改造、测试工程师职责定义等工作。工作覆盖测试策略、测试设计、测试评估和过程管理等软件测试工程的各个方面,在自动化、可靠性验证、可服务性验证、可测试性设计等领域上都有丰富的经验。2007年以后主管软件公司的测试技术架构设计、实现、应用,通过帮助产品持续积累和提升测试技术能力,实现研发的效率和质量提升。

欧阳辰,品友互动CTO。推动品友大数据智能战略,成为程序化广告的知名公司。加入品友之前,曾在微软、小米和甲骨文工作:曾任小米研发总监,负责广告和大数据平台,曾在微软工作十年,负责搜索和广告平台的核心大数据项目,持有数项国内外专利,著有《Druid实时大数据分析》。

曾乐天,博士,毕业于西安电子科技大学,现在工业和信息化部电子第五研究所(中国赛宝实验室)从事软件测评方面的研究工作。
第 1章开发者测试 1
1.1开发者测试1
1.2开发人员测试活动2
1.2.1单元测试2
1.2.2集成测试2
1.2.3维护2
1.2.4持续集成3
1.2.5自动化测试3
1.3开发人员通常不做什么4
1.4定义“开发者测试”5
1.5开发人员测试和开发过程5
1.6小结6
第2章 测试目标、方式和角色7
2.1测试和检查7
2.2测试目标7
2.2.1批判式测试8
2.2.2支持式测试8
2.3测试方式8
2.3.1传统测试9
2.3.2敏捷测试10
2.3.3BDD、ATDD和实例化需求11
2.4质量保证和开发者测试13
2.5小结14
第3章测试术语15
3.1错误、缺陷、失效15
3.2白盒测试与黑盒测试16
3.3测试技术分类16
3.3.1测试级别17
3.3.2测试类型19
3.3.3让测试级别和测试类型
发挥作用21
3.4敏捷测试四象限22
3.5其他类型的测试23
3.5.1冒烟测试23
3.5.2端到端测试24
3.5.3特性测试24
3.5.4正面测试和负面测试24
3.5.5小型、中型和大型测试24
3.6小结25
第4章开发者眼中的可测试性26
4.1可测试的软件26
4.2可测试性的好处27
4.2.1功能可被验证27
4.2.2减少意外28
4.2.3它可以改变28
4.2.4为什么要注重可测试性29
4.3可测试性的定义30
4.3.1可观察性31
4.3.2可控制性33
4.3.3可部署性34
4.3.4可隔离性35
4.3.5小规模(smallness)36
4.3.6单一性36
4.3.7抽象级别37
4.3.8效率(efficiency)38
4.3.9复用38
4.3.10可测试性的提示38
4.4小结39
第5章契约式编程40
5.1契约形式化约束41
5.2实现契约式编程42
5.3强制契约43
5.3.1断言43
5.3.2支持契约的类库44
5.3.3单元测试45
5.3.4静态分析45
5.4小结45
第6章可测试性的驱动者47
6.1直接输入和输出47
6.2间接输入和输出48
6.3状态49
6.4时序耦合50
6.5数据类型和可测试性50
6.6域值比54
6.7小结55
第7章单元测试56
7.1为什么做单元测试?56
7.2什么是单元测试57
7.3单元测试框架的生命周期58
7.3.1测试方法59
7.3.2测试初始化器和清除59
7.3.3构造函数和析构函数60
7.4测试命名60
7.4.1测试框架的强制规定60
7.4.2行为驱动的开发方式61
7.4.3工作单元、测试状态、
所期望的行为61
7.4.4选择一个命名标准61
7.5测试结构化62
7.6断言方法63
7.6.1断言类型63
7.6.2每个测试有多少断言64
7.6.3断言冗长65
7.6.4断言等式66
7.6.5限制和匹配器67
7.7测试异常70
7.8行为驱动开发方式的框架72
7.8.1测试结构72
7.8.2命名测试73
7.8.3匹配器74
7.9小结75
第8章基于规格说明的测试76
8.1等价类划分76
8.2边界值分析78
8.3典型数据类型的边缘用例和其他
测试用例79
8.3.1数字79
8.3.2字符串79
8.3.3日期和时间80
8.3.4集合80
8.4状态转移测试81
8.5决策表82
8.6小结83
第9章依赖关系84
9.1对象间依赖关系84
9.1.1传入协作者85
9.1.2使用工厂方法86
9.1.3提供一个外部工厂或者
生成器87
9.2系统资源依赖关系89
9.2.1文件89
9.2.2提供你自己的抽象89
9.2.3测试由I/O操作处理过的
数据90
9.2.4系统时钟91
9.2.5其他系统资源依赖关系92
9.3层间依赖关系92
9.4跨层级依赖关系94
9.5小结95
第10章 数据驱动和组合测试96
10.1参数化测试98
10.2Theories99
10.3生成式测试101
10.3.1验证结果102
10.4组合测试103
10.4.1单模式故障104
10.4.2双模式故障105
10.4.3双模式故障和所有成对变量
之外106
10.5小结106
第11章 准单元测试107
11.1实例107
11.1.1使用内存数据库的测试108
11.1.2测试专用的邮件服务器108
11.1.3使用轻量级容器的测试109
11.1.4Web服务测试110
11.2影响111
11.3小结112
第12章 测试替身113
12.1桩对象113
12.1.1桩对象的灵活性114
12.1.2用桩对象来避免副作用115
12.2伪对象116
12.3模拟对象117
12.3.1验证间接输出117
12.3.2验证间接输入转换121
12.4探针122
12.5哑对象123
12.6验证状态还是行为124
12.6.1状态验证124
12.6.2行为验证125
12.6.3参数125
12.7小结126
第13章 模拟框架127
13.1创建测试替身127
13.2设置预期128
13.3验证交互行为131
13.4误用、滥用和其他陷阱133
13.4.1过度验证133
13.4.2模拟具体类134
13.4.3模拟有价值的类135
13.4.4Mock返回Mock135
13.5小结135
第14章 测试驱动开发——经典风格137
14.1测试驱动一个简单的搜索引擎137
14.1.1测试1:发现API138
14.1.2测试2:主逻辑路径
(Happy Path)139
14.1.3测试3:多文件索引140
14.1.4测试4:更复杂的文件141
14.1.5测试5:在多文件中找到
单词141
14.1.6测试6:消除重复的
匹配(Matches)142
14.1.7测试7:引入排序143
14.1.8测试8:忽略大小写145
14.1.9测试9:处理标点符号146
14.2测试的顺序147
14.3红色到绿色状态条的策略147
14.4挑战148
14.4.1我们的代码无法被测试149
14.4.2我们的代码很特殊150
14.4.3测试驱动开发不是完整的
测试150
14.4.4从零开始150
14.5测试最先还是最后151
14.6小结151
第15章 测试驱动开发——Mockist风格153
15.1一种不同的方法153
15.1.1测试驱动用户注册154
15.1.2增加更多测试158
15.2双环TDD159
15.2.1另一个反馈环159
15.2.2关闭周期160
15.3小结160
第16章 复制161
16.1复制的坏处161
16.2利用复制的好处162
16.3机械复制163
16.3.1拷贝、粘贴163
16.3.2块拷贝、粘贴163
16.3.3构造函数拷贝、粘贴164
16.3.4方法复制165
16.4知识复制166
16.4.1不同方法中的类似功能167
16.4.2功能相似的类167
16.4.3竞争性实现168
16.4.4竞争性领域模型168
16.5小结169
第17章 使用测试代码170
17.1测试代码中的注释170
17.2删除测试用例173
17.2.1需要被删除的主要候选者173
17.2.2需要被删除的可能候选者174
17.2.3删除测试用例的重要性174
17.3小结175
第18章 超越单元测试176
18.1单元测试以外的测试176
18.1.1封装在事务内的测试176
18.1.2需要使用服务或组件的
测试178
18.1.3需要与其他系统交互的
测试179
18.1.4通过UI运行的测试181
18.1.5需要调用一个系统的测试183
18.1.6更多内容184
18.2单元测试不具备的特征185
18.2.1复杂性186
18.2.2稳定性186

18.2.3缺陷定位187
18.2.4性能187
18.2.5环境依赖性188
18.2.6目标受众188
18.3实践指南189
18.3.1测试的独立性189
18.3.2配置189
18.3.3验证191
18.3.4利用测试替身191
18.3.5决定开发者测试策略192
18.4小结193
第19章 测试思路与启发式194
19.1高层注意事项194
19.1.1测试有效性194
19.1.2测试配方194
19.1.3抽象级别及其细节195
19.1.4原型195
19.1.5可信来源(结果判断
依据)196
19.2低层注意事项196
19.2.10-1-n196
19.2.2空值(null)196
19.2.3范围196
19.2.4集合196
19.2.5异常和错误197
19.2.6数字197
19.2.7字符串197
19.2.8日期197
19.3小结198
附录A工具和库199
附录B源代码201
词汇表209
后记:忘却测试是为了更好的开发216
本书分为19章,主要内容为开发人员测试,测试目标、方式和角色,测试术语,开发人员眼中的可测试性,契约式编程,可测试性的驱动者,单元测试,基于规格说明的测试,依赖关系,数据驱动和组合测试,准单元测试,测试替身,模拟框架,测试驱动开发——经典风格,测试驱动开发——Mockist风格,使用测试代码,**单元测试,测试思路等开发人员和测试人员必知必会的知识。
如果你是一个希望所写的代码质量更高、缺陷更少的开发人员,那么这本书很适合你。本书介绍了如何用可测试性提升软件质量,在各种开发模式中,可测试性都是软件的主要质量属性之一。阅读本书,你可以成为更好的开发人员,学习到更多的软件测试知识,不必再苦于没有时间做测试、也无法从同事或团队那里获得相关的支持。
市面上一本面向开发人员的测试书
业界有影响的测试专家朱少民、杨晓慧、欧阳辰、曾乐天翻译
本书不是“测试专家写的开发人员测试”,而是“开发专家写的开发人员测试”。书中并没有花太多篇幅介绍测试的概念、测试设计技术、单元测试工具(这些可能是我们之前推行开发人员测试的重点),而是把重心放在了可测试性、影响测试的编码风格、实现开发人员测试的方式、测试环境和条件的构造、开发人员测试在全部测试活动中的位置和作用等方面(这些是真正影响开发人员测试效率的问题)。因此,这本书对于开发人员具有很好的实用价值。
这本书不是一座“大山”,而是若干“甜点”组成,除了前3章介绍测试的基本概念和术语,其他各章相对独立,一章基本是一个主题,阐述开发人员测试所遇到的问题、解决方法、注意事项等。即使隔了很长时间我们才读另一章,或者跳过没有兴趣的个别章节,也完全不影响我们阅读的体验或收获。“甜点”还隐藏在每一章中——每章穿插着一些“小窍门”“经验之谈”或“注意事项”等,点拨读者,读者获得启发或警醒。
本书实例丰富,循序渐进,例如14.1 节就用了“一个简单的搜索引擎”的8个实例,一步一步地介绍经典风格的TDD是如何实施的。
  • 评论列表(0

留言评论