书籍作者:张丙振 | ISBN:9787111670049 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:5282 |
创建日期:2021-10-07 | 发布日期:2021-10-07 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书是饿了么企业订餐团队在软件质量保障方面的经验总结。它通过讲解该团队如何从0到1构建软件质量体系以及该体系如何逐步演进,分享了饿了么在软件质量保障方面的技术积累、实战经验、解决问题的思考过程,以及质量保障团队的建设与发展。
【全书一共18章,分为六篇,具体内容如下】
第一篇 规划(第1章)
介绍了饿了么企业订餐业务的背景、团队背景、面临的挑战以及团队在制定技术规划时是如何考虑的。
第二篇 基础(第2~5章)
总结了QA团队在功能测试、安全测试、兼容性测试、线上问题治理等方面的技术见解和经验积累。
第三篇 提效(第6~9章)
介绍在团队人员与业务稳定之后,QA团队应如何提高测试和研发的效率。包括API测试框架、自动生成框架代码技术、框架代码场景化改造、FSM场景化代码动态组合技术等。
第四篇 赋能(第10~13章)
从持续集成、代码质量、Story QA等技术角度介绍了企业订餐QA团队是如何赋能研发人员以提高软件质量的。
第五篇 探索(第14~16章)
介绍了团队在契约测试、探索性测试、流量测试等方面的经验。
第六篇 管理(第17~18章)
分享了如何打造有实力、有格局和有凝聚力的团队,以及项目管理的关键问题和解决问题的思路。
张丙振
高级测试专家、企业订餐质量负责人,9年工作经验。擅长自动化测试、测试框架搭建、质量交付团队管理等。2017年入职饿了么中后台研发部,负责商家开放平台,多次参与公司S级别跨团队合作项目并担任测试总owner,曾担任上海站技术沙龙测试讲师。2019年转入阿里巴巴本地生活企业订餐团队,目前专注于QA团队建设、基础设施建设及质量交付。
檀飞翔
测试专家,从事测试行业7年,擅长测试框架开发、CI集成、自动化测试、功能测试以及大型项目测试管理。2016年加入饿了么,主要负责饿了么商家配送、商户订单、商家商品以及企业订餐等业务领域的QA工作,多次参与和负责公司级别项目,目前负责阿里巴巴本地生活企业订餐供给交易领域的QA工作,专注于测试提效和赋能工作。
侯佳刚
测试专家,一直积极探索正确的质量保障之道。从事质量工作多年,擅长测试自动化及测试工具开发。先后研发多个测试工具和质量平台,并将其应用在产品研发过程中。目前主要负责企业订餐质量平台研发及推广工作。
伍菊红
资深测试开发工程师,有较丰富的测试经验。曾参与多个公司级项目的业务测试,如企餐新零售入淘、覆盖率工具开发等,擅长自动化测试、工具开发。目前专注于测试前沿知识探索,如精准测试、流量回放等。
李京蓉
资深测试工程师,从事软件测试工作5年。2018年入职饿了么,负责饿了么商户端交易业务测试,转入企业订餐团队后负责供给交易领域的业务测试以及整个事业部的安全测试。
张晏婷
资深测试工程师。先后从事订单、财务等领域测试工作,功能测试、自动化测试经验丰富,参与多个提效工具、测试平台开发工作。
蔡辉
5年从业经验,资深测试工程师。有证券、金融、企业餐饮服务相关工作经验,擅长平台服务开发、质量交付。入职企业订餐后负责测试平台开发,自动化测试工具建设。
李南昊
高级测试工程师,主要负责企业订餐的业务测试、自动化测试、压测的工作。参与企业订餐三条业务线外卖、团餐、到店从0到1的搭建过程。
杨亮亮
资深测试工程师,负责企业订餐基础及到店相关领域QA工作。从事测试工作9年,曾独立负责多个大型项目(支付、基金、发票等)的测试工作。擅长后端自动化及测试工具、平台的搭建,具有丰富的行业知识背景及测试经验。
常娜
高级测试工程师。先后在阿里、百度、饿了么等企业工作,实战经验丰富。参与多个公司/BU级项目(广告、开放平台、订单等多领域)的测试工作,并协助完成多个测试平台的开发工作。
(1)饿了么企业订餐团队官方出品,饿了么联合创始人、CTO等近20位专家联袂推荐!
(2)从技术、方法、经验等多个维度全面讲解饿了么软件质量体系的搭建与演进过程,既能指导读者从0开始搭建质量体系,又能让读者了解饿了么质量体系建设的功过得失。
(3)书中既有可借鉴的方法论和案例成果,又给出了团队解决问题的思考过程,而且将这个过程立体化、可视化地呈现了出来。
【为何写作本书】
我们曾经思考过这样一个问题,如何才能将自己积累的技术和知识进行抽象总结,将逐步解决问题的过程立体化、可视化地展现给大家,而不只是简单地介绍一个结果。我们技术团队之所以决定写这本书,就是希望通过介绍我们的实战经验和解决问题的思路,帮助大家在“质量与效率”的提升上打开新的思路。
“质量与效率”一直是我们关注的焦点。相对于软件开发,软件测试起步较晚,缺乏拥有专业知识的人才。即便是大学开设的软件工程专业,针对软件测试的介绍也只是涉及少量的概念和设计测试用例的方法。专业的测试并不是简单地翻译需求。目前有很多测试人员只是在简单地执行需求翻译的工作,没有结合业务实现、质量模型和测试用例,没有用科学的方法设计测试场景,这就导致测试用例质量低下,只能应用于单个特定点的测试场景。
有些人认为功能测试很低端(从效率、技术含量和市场反馈的价值综合得出如此结论),甚至有相当一部分测试人员也认为,功能测试意义不大,希望从事测试工具的开发工作,因为那样看上去更高端,更具有挑战性。
其实,功能测试、自动化测试、性能测试、安全测试、测试框架开发、平台研发等工作都是为了提高软件测试的质量,没有高低贵贱之分,都是必要的辅助手段。可以将软件测试类比为一个兵团,上述这些工作是不同的兵种,在面对一场战役的时候,我们需要考虑的是如何排兵布阵,以赢得战役,而不是排列兵种的等级。
不同的时代对测试人员有不同的要求。
起初是“保姆时代”,以发现Bug为荣,对测试人员的基本要求是具备良好的测试思维,测试人员主要利用系统测试方法进行测试。业内关注的焦点是黑盒测试,白盒测试和灰盒测试偏少,效率偏低。由于黑盒测试大部分是通过人工在系统界面中手动进行的,从而导致业界普遍认为测试就是“点点点”。
随着软件复杂度的不断提高,交付质量变得越来越重要,我们急需提升测试的效率,压力测试和安全测试等各种专项测试以及各种测试平台和工具随之出现。
时代的进一步发展对测试提出了更高的要求,从产品研发后期寻找Bug转变为提前预防Bug。
小步迭代、快速上线的敏捷开发时代,再次对测试提出了更高的要求,持续集成、快速验证、全方位监控线上质量,需要测试人员更早地介入产品研发的整个过程,以便更好、更全面地了解产品。测试左移到开发阶段进行代码评审、单元测试,右移到运维阶段进行持续部署、线上监控,从而可以更加立体地保障软件的质量。
如今是一个输出测试能力的时代,测试人员不仅要提升自己的效率,而且要赋能研发人员,帮助他们提升自己的自测水平。
【本书主要内容】
第一篇:规划
本篇简要介绍了我们的业务背景、团队背景、测试的一般规律,以及我们团队在制定技术规划时是如何考虑的。
第二篇:基础
当团队从零开始的时候,QA(Quality Assurance,质量保证)基础设施落后、资源有限、技术改造频繁,应快速形成战斗力,以业务为先,保证产品的质量,此时QA团队的主要任务是发现产品中的Bug。本篇主要介绍了QA团队在功能测试、安全测试、兼容性测试等不同阶段的特点及不同之处。
第三篇:提效
当团队人员与业务基本稳定,而且功能迭代基本可以正常运行之后,我们就开始思考如何提高测试和研发的效率,例如,如何构建可用于提升效率的小工具和平台,如何实现API自动化,以及框架的搭建、分层思想、性能测试、环境的部署、CI(Continuous Integration,持续集成)流程的建立等,从而使得QA人员能够从大量的手工劳动中解放出来,提高工作效率,将更多的时间和精力投入到测试分析、发现Bug、预防Bug的工作中。
第四篇:赋能
在提效之后,我们开始思考,软件质量是“构建”出来的,是由软件开发整个过程的质量所决定的。所以,QA人员的工作不能总是停留在最后一个环节,在敏捷开发的大环境下,开发人员也要开始注重自测质量,作为QA人员,我们需要考虑如何赋能开发人员,使其能够对自己开发的产品进行自测。本篇主要从技术的角度(比如,可视化度量、自动化用例开放、工具开发,以及如何在流程上使用story_QA来使项目过程数据可视化)介绍了企业订餐业务的QA人员是如何赋能开发人员以提高软件质量的。
第五篇:探索
当前,业务开发周期越来越短,几乎每隔一天就有新版本发布。针对这种迭代速度快、回归量比较大的特点,自动化测试的稳定性正面临着巨大的挑战,除了传统的集成之外,我们还引入了契约测试、流量测试、探索性测试等辅助手段来提高测试质量,同时提高QA人员的工作效率。
第六篇:管理
本篇主要讲解了新型团队如何不拘泥于传统管理方法地勾勒团队画像,同时还介绍了技术分享的改革,以及如何让团队变成有格局、有原则、有自我认知、有凝聚力的健康团队。
【读者对象】
本书适合各种水平的测试人员、测试开发人员、测试组长、测试经理、项目经理等,以及其他在软件质量保证的道路上持续进行修炼的读者阅读。
第一篇 规 划
第1章 技术保障规划2
1.1 业务特点2
1.2 面临的挑战3
1.3 测试进程的演进4
1.4 绘制战略图5
1.5 本章小结7
第二篇 基 础
第2章 功能测试10
2.1 业务梳理10
2.1.1 接手新业务的痛点11
2.1.2 业务梳理的构想11
2.1.3 过程实战13
2.2 用例设计16
2.2.1 用例设计面临的问题17
2.2.2 解决思路17
2.2.3 用例设计原则确立18
2.2.4 用例设计模板化19
2.2.5 设计用例框架20
2.3 用例评审23
2.3.1 评审的意义23
2.3.2 评审的价值24
2.3.3 思考与破局24
2.3.4 合格用例的特点24
2.3.5 用例评审的准则25
2.4 本章小结26
第3章 安全测试27
3.1 全面清扫当前漏洞27
3.2 团队安全知识赋能28
3.2.1 引入安全测试工具28
3.2.2 增强安全意识29
3.3 安全测试常态化29
3.3.1 下沉QA流程30
3.3.2 研发流程增设安全保障31
3.4 本章小结32
第4章 兼容性测试33
4.1 兼容性测试的挑战33
4.2 兼容性测试的步骤34
4.3 案例分析:性能测试对比36
4.3.1 案例背景36
4.3.2 测试策略及过程36
4.3.3 测试结论39
4.4 关于测试机器资源40
4.5 本章小结41
第5章 线上问题治理42
5.1 线上问题的现状42
5.2 工具的抉择43
5.3 线下反馈线上化44
5.3.1 钉钉机器人接入44
5.3.2 简化线上问题反馈45
5.4 线上问题数据沉淀及可视化46
5.5 FAQ 转化47
5.6 线上问题规约49
5.7 本章小结49
第三篇 提 效
第6章 API测试框架52
6.1 API测试基础知识52
6.1.1 RPC53
6.1.2 RESTful54
6.1.3 Thrift57
6.2 常见API测试手段58
6.2.1 cURL 59
6.2.2 常见工具分析61
6.3 测试框架的演进与分析62
6.3.1 什么是框架62
6.3.2 测试框架思想的变迁63
6.3.3 测试框架的特点66
6.4 测试框架搭建67
6.4.1 常见的框架结构设计68
6.4.2 框架的升级改造方案69
6.4.3 框架的分层解耦70
6.4.4 数据分类处理72
6.4.5 多协议的封装74
6.4.6 多环境的处理76
6.5 测试框架结果自动对比验证80
6.5.1 验收结果思路对比81
6.5.2 hook函数扩展82
6.5.3 数据库设计83
6.5.4 对比引擎设计84
6.6 API覆盖率统计86
6.6.1 覆盖率介绍86
6.6.2 覆盖统计的思考87
6.6.3 接口覆盖率统计实战87
6.7 本章小结91
第7章 自动生成框架代码技术92
7.1 底层框架代码自动生成92
7.1.1 传统自动化框架的痛点93
7.1.2 代码自动生成的解决方案94
7.1.3 代码自动生成实战95
7.2 手工用例自动转化代码97
7.2.1 接口用例撰写现状98
7.2.2 代码自动转化实战98
7.3 冒烟测试代码自动化生成101
7.3.1 冒烟测试的挑战与方案102
7.3.2 拼装请求102
7.3.3 构造参数数据103
7.4 本章小结105
第8章 框架代码场景化改造106
8.1 Journey模式BDD106
8.1.1 Journey模式简介106
8.1.2 Journey模式原理107
8.2 问题与解决方案108
8.2.1 自动化问题109
8.2.2 解决方案109
8.3 过程实战110
8.3.1 梳理场景需求110
8.3.2 实例化用户故事110
8.3.3 转化为自动化验收代码110
8.4 框架与BDD的融合解析111
8.4.1 框架与BDD融合所面临的问题111
8.4.2 框架的设计思路113
8.4.3 过程实战113
第9章 FSM场景化代码动态组合技术116
9.1 订单代码组合的常态116
9.2 FSM 赋能方案117
9.3 业务建模118
9.4 动态绘制流程图119
9.4.1 Graphviz使用介绍119
9.4.2 使用简化模式绘图120
9.5 构建解析器122
9.5.1 解析器方案122
9.5.2 过程实战122
9.6 本章小结124
第四篇 赋 能
第10章 数据工厂128
10.1 数据工厂迭代背景128
10.1.1 造数常见的场景128
10.1.2 数据工厂演变历史129
10.2 数据工厂脚本化129
10.2.1 脚本化面临的挑战129
10.2.2 从RESTful API转向SOA API130
10.3 数据工厂平台化131
10.3.1 平台化面临的挑战131
10.3.2 关于平台化的思考132
10.3.3 如何新增一个造数工具133
10.4 数据工厂服务化的思考137
10.5 本章小结137
第11章 持续集成138
11.1 持续集成是什么138
11.2 持续集成前后实践的对比139
11.3 持续集成全景141
11.3.1 研发模式143
11.3.2 代码准入144
11.3.3 自动化方案145
11.4 本章小结152
第12章 代码质量153
12.1 代码质量背景知识153
12.1.1 怎样衡量代码质量154
12.1.2 糟糕的代码156
12.2 构建代码质量体系158
12.2.1 为什么选择SonarQube159
12.2.2 小试牛刀165
12.2.3 规则的取舍166
12.2.4 落地节奏的敲定168
12.2.5 度量可视化169
第13章 Story QA 赋能172
13.1 Story项目经理介绍172
13.1.1 Story项目经理的意义173
13.1.2 Story项目经理的工作职责173
13.2 Story QA破局173
13.2.1 Story QA 介绍174
13.2.2 Story QA实施步骤175
13.2.3 Story QA体系构建方案175
13.3 构建度量体系176
13.3.1 度量维度初阶176
13.3.2 度量维度进阶178
13.3.3 打分规则179
13.4 工具化和制度化180
13.4.1 由文本到工具的演变180
13.4.2 建立奖惩制度182
13.5 本章小结184
第五篇 探 索
第14章 流量回放测试186
14.1 流量回放的意义186
14.2 流量回放的基本思想187
14.3 常见工具介绍187
14.4 聚焦jvm-sandbox-repeater188
14.4.1 录制原理探究188
14.4.2 回放原理探究193
14.4.3 demo讲解197
14.5 repeater 插件探究201
14.6 本章小结204
第15章 契约测试205
15.1 微服务介绍205
15.1.1 微服务架构对测试的影响207
15.1.2 微服务下的测试模式208
15.2 契约测试209
15.2.1 什么是契约209
15.2.2 契约测试的价值210
15.2.3 契约测试的特性210
15.2.4 契约测试的实施210
15.2.5 契约测试与mock对比211
15.3 Pact框架213
15.3.1 Pact的工作原理213
15.3.2 Pact的使用214
15.4 本章小结217
第16章 探索性测试218
16.1 探索性测试初探218
16.1.1 探索性测试概念219
16.1.2 探索性测试与即兴测试的区别219
16.2 全局探索性测试220
16.2.1 商业区测试类型221
16.2.2 娱乐区测试类型224
16.2.3 旅游区测试类型225
16.2.4 旅馆区测试类型226
16.2.5 破旧区测试类型227
16.2.6 历史区测试类型227
16.3 探索性测试周期228
16.4 探索性测试思维过程 230
16.4.1 启发式测试策略模型231
16.4.2 基于测程的测试管理232
16.4.3 小试牛刀233
16.5 本章小结233
第六篇 管 理
第17章 团队管理236
17.1 绘制团队画像236
17.1.1 定格局236
17.1.2 打造团队文化237
17.1.3 认识自我237
17.1.4 向心力238
17.2 技术分享的改革238
17.2.1 无主题分享的窘境239
17.2.2 分享改革方案239
17.2.3 主题制定239
17.3 个人发展的梳理及工作习惯引导240
17.3.1 个人发展的方向及梳理240
17.3.2 技术体系的构建241
17.3.3 工作习惯的引导242
17.4 本章小结243
第18章 项目管理245
18.1 QA质量管理三问245
18.2 解决问题三部曲246
18.2.1 序幕246
18.2.2 高潮247
18.2.3 终章247
18.3 本章小结248
有很多干货,值得一读
2021-02-02 21:24:20