作者 |
刘琛梅 等 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9782112291553 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8085073 - 测试架构师修炼之道:从测试工程师到测试架构师 第2版--------------------------- 本书并不是一本单方面讲授测试技术或者测试管理方面的书籍,旨在帮助广大奋斗在一线的测试工程师们系统梳理自己的测试技术并构建自己的测试体系,迅速升级为测试架构师!“测试策略”是本书的核心,通过大量策略把测试理念和各种测试技术串了起来,并讨论了该如何把测试技术和产品结合起来,如何确定测试目标、测试范围、测试的深度和广度、测试的重点和难点。 相较于上一版,本书主要的修改如下: 第1章对近年技术发展对测试的影响和对测试人员的新的要求进行重新规划介绍,比如敏捷思维、devops、全能测试理念,同时增加了对校招的介绍,更新了对测试环境的介绍和作者自己对测试的理解。 第2章主要增加了几个测试人员新的发展方向,包括产品、研发管理、组织变革等。 第3章新增测试核心、测试目标选择、测试质量评估等内容,同时更新了对测试架构师的认知,让本章内容更充实,更有实战性。 第4章新增对测试架构师基本能力和技术的介绍、对3种测试性能的介绍、对专项测试用例的介绍,同时补充了对自动化测试和测试方法的介绍。 第5章本章除5.2节部分内容外,其他内容或者为重写内容或者新增内容,比如改写了5.1节的沟通和协商的内容,新增了组织和管理测试、持续探索学习等相关内容。 第6章 新增了对测试策略与各个测试活动的关系的介绍,对其中部分案例进行更新。 第7章为新增章,主要介绍如何通过四步法制定测试策略。 第8章除了与第1版保持主题不变外,整体内容均进行了重写,主要介绍测试评估的方法和后期的调整策略。 第9章新增章,其中部分内容来自第1版的第7章和第8章,大部分内容则为新内容,主要介绍测试策略在实践中的应用,以案例解读为主。 . ---------------------------8079921 - 架构师的自我修炼:技术、架构和未来--------------------------- 本书共38章,分四个部分。 第 一部分是架构师的基础知识修炼。软件的基础知识原理主要是操作系统、数据结构、数据库原理等,书中会从常见的问题入手,直达这些基础技术本质的原理,并覆盖这些基础技术的关键技术点,帮助读者理解这些基础技术原理和日常开发工作的关联关系,对这些基础技术有一个全新的认知。 第二部分是架构师的程序设计修炼。讲述如何设计一个强大灵活、易复用、易维护的软件,在这个过程中,应该依赖哪些工具和方法,遵循哪些原则和思想,使用哪些模式和手段。 第三部分是架构师的架构方法修炼。围绕目前主要的互联网分布式架构以及大数据、物联网架构分析这些架构背后的原理,详解它们都遵循了怎样的驱动力和设计思想,以及如何通过这些技术实现系统的高可用和高性能。 第四部分是架构师的思维修炼。软件开发是一个实践性很强的活动,如果只是学习技术,那就是在纸上谈兵。只有将知识技能应用到工作实践中,才能真正体会到技术的关键点在哪里。如何在工作中处理好各种关系,得到充分的授权和信任,在工作中实践自己的技术思想,并为公司创造更多的价值,使自己的技术成长和职业发展进入互相促进的正向通道,也是架构师需要修炼与提升的。 |
目录 |
[套装书具体书目] 8079921 - 架构师的自我修炼:技术、架构和未来 - 9787111679363 - 机械工业出版社 - 定价 89 8085073 - 测试架构师修炼之道:从测试工程师到测试架构师 第2版 - 9787111697442 - 机械工业出版社 - 定价 109 ---------------------------8085073 - 测试架构师修炼之道:从测试工程师到测试架构师 第2版--------------------------- 前 言 第一部分 瓶颈:测试工程师该如何进行职业规划 第1章 测试工程师的“三年之痒” 3 1.1 软件测试发展简史 3 1.2 敏捷开发模式下的软件测试 4 1.3 测试人员面临的机遇和挑战 6 1.3.1 究竟是无用的测试,还是全能的测试 7 1.3.2 测试的困境和迷局 8 1.3.3 从质量守护者到产品赋能者 11 第2章 测试工程师的职业规划 14 2.1 测试人员的职业发展方向 14 2.1.1 测试人员在管理上的发展 15 2.1.2 测试人员在技术上的发展 16 2.1.3 角色和段位 17 2.1.4 测试人员在质量领域的发展 20 2.1.5 测试人员在研发工程效能领域的发展 22 2.2 测试工程师职业规划建议 25 2.2.1 做管理还是做技术 25 2.2.2 关于跳槽 27 2.2.3 不断提升影响力 28 第二部分 突破:向测试架构师的 目标迈进 第3章 测试架构师应该做和不应该做的事情 31 3.1 测试架构师需要关注和不需要关注的事情 31 3.1.1 在需求分析阶段 32 3.1.2 在测试分析和设计阶段 34 3.1.3 在测试执行阶段 36 3.1.4 在测试质量评估阶段 37 3.2 像测试架构师一样思考 39 3.3 测试管理者可以替代测试架构师吗 39 3.4 系统架构师可以替代测试架构师吗 40 第4章 测试架构师的知识能力模型 42 4.1 测试架构师必备的能力和知识体系 42 4.1.1 测试架构师必备的6个关键能力 43 4.1.2 测试架构师的知识体系 44 4.2 软件产品质量模型 46 4.2.1 为什么深入理解质量对测试如此重要 46 4.2.2 软件产品质量的8个属性 47 4.2.3 功能性 48 4.2.4 兼容性 50 4.2.5 安全性 51 4.2.6 可靠性 53 4.2.7 易用性 56 4.2.8 效率(性能) 59 4.2.9 可维护性 60 4.2.10 可移植性 62 4.3 基于质量的测试方法 63 4.3.1 理解测试类型 63 4.3.2 如何通过质量属性来探索测试方法 65 4.3.3 通过质量模型来确定测试深度和测试广度 66 4.4 功能性测试方法 66 4.4.1 什么是“运行” 66 4.4.2 单运行正常值输入法 68 4.4.3 单运行边界值输入法 68 4.4.4 多运行顺序执行法 69 4.4.5 多运行相互作用法 70 4.5 可靠性测试方法 71 4.5.1 异常值输入法 71 4.5.2 故障植入法 72 4.5.3 稳定性测试法 73 4.5.4 压力测试法 74 4.5.5 恢复测试法 76 4.6 性能测试方法 77 4.6.1 基线性能测试法 78 4.6.2 影响性能的因子测试法 82 4.6.3 场景性能测试法 86 4.7 易用性测试法 87 4.7.1 一致性测试法 88 4.7.2 可用性测试法 89 4.8 安全性测试方法 90 4.8.1 权限测试 91 4.8.2 参数校验测试 92 4.8.3 传输安全性测试 94 4.8.4 拒绝服务攻击安全性测试 95 4.8.5 安全性测试工具介绍 96 4.9 基于车轮图的测试分析方法 97 4.9.1 测试分析不等于测试设计 97 4.9.2 测试点不等于测试用例 98 4.9.3 产品测试车轮图 100 4.9.4 在MM图中使用车轮图 101 4.9.5 使用测试分析设计表来进行测试分析 102 4.10 基于模型的测试设计技术 103 4.10.1 测试设计四步法 104 4.10.2 对测试点进行分类 106 4.10.3 流程类测试设计——路径分析法 112 4.10.4 参数类测试设计——输入-输出表分析法 129 4.10.5 数据类测试设计——等价类和边界值分析法 135 4.10.6 组合类测试设计——正交分析法 140 4.10.7 错误推断法 145 4.11 控制测试用例的粒度 146 4.11.1 测试点的组合和拆分 146 4.11.2 策略覆盖 147 4.12 影响测试设计效果的因素 151 4.12.1 有效澄清和确认需求 152 4.12.2 有针对性的可测试性需求 153 4.13 基于场景的测试方法 157 4.13.1 场景和场景测试 157 4.13.2 使用场景测试模型来进行测试分析 160 4.14 探索式测试 166 4.14.1 什么是探索式测试 166 4.14.2 探索式测试的基本思想:CPIE思维模型 167 4.14.3 选择合适的探索式测试方法 168 4.14.4 开展探索式测试 171 4.15 自动化测试 174 4.15.1 关于自动化测试的经验和教训 175 4.15.2 自动化测试分层 181 4.15.3 自动化测试框架 184 4.15.4 如何有效开展自动化测试 189 4.15.5 如何评估自动化的收益 193 4.15.6 自动化测试成熟度模型 194 第5章 测试架构师的软能力修炼 197 5.1 沟通和协商 198 5.1.1 知识的诅咒 198 5.1.2 产品测试中的沟通原则 199 5.1.3 通过沟通来获得对产品测试有用的信息 204 5.2 写出漂亮的测试用例 206 5.2.1 统一测试用例编写风格 206 5.2.2 测试用例编写风格指导 207 5.2.3 如何编写测试用例案例集 208 5.3 组织和管理测试用例 215 5.3.1 测试用例模板 215 5.3.2 基于特性树组织测试用例 217 5.3.3 维护测试用例 220 5.4 持续学习和探索 222 第三部分 修炼:测试架构师的核心技能 第6章 如何制定测试策略 227 6.1 什么是测试策略 228 6.1.1 测试的核心是什么 228 6.1.2 测试策略与测试方针 229 6.1.3 测试策略与测试计划 229 6.1.4 测试策略与测试方案 229 6.2 四步测试策略制定法 232 6.2.1 基于产品质量的测试策略 232 6.2.2 基于产品特性价值的测试策略 232 6.2.3 四步测试策略制定法 233 6.3 产品质量评估模型 238 6.3.1 测试覆盖度分析 238 6.3.2 测试过程分析 240 6.3.3 缺陷分析 243 6.3.4 在测试全流程中使用产品质量评估模型 244 6.4 组合缺陷分析技术 245 6.4.1 组合缺陷分析模型 245 6.4.2 缺陷趋势分析 248 6.4.3 缺陷密度 253 6.4.4 缺陷修复率 254 6.4.5 缺陷年龄分析 256 6.4.6 缺陷触发因素分析 259 6.4.7 产品缺陷趋势预判技术 261 6.5 特性价值分析技术 265 6.5.1 你知道测试的产品是如何赚钱的吗 265 6.5.2 从价值角度来对特性进行分类 266 6.5.3 基于特性价值来确定测试重点 270 6.6 风险分析技术 272 6.6.1 风险识别 272 6.6.2 风险评估 275 6.6.3 风险应对 277 6.6.4 历史/继承特性分析 279 6.7 不同研发模式下的测试分层技术 285 6.7.1 瀑布模式 285 6.7.2 敏捷模式 286 6.7.3 DevOps 289 6.7.4 瀑布下的测试分层 293 6.7.5 敏捷模式下的测试分层 295 6.7.6 敏捷转型下的测试分层 297 6.8 测试方案模板 300 第7章 制定基于产品质量的测试策略 301 7.1 项目背景 304 7.2 制定总体测试策略 305 7.2.1 确定特性的质量目标 305 7.2.2 对项目整体进行风险分析 306 7.2.3 确定测试优先级 311 7.2.4 确定测试深度和广度 312 7.2.5 确定研发模式和测试分层 315 7.2.6 确定关键测试活动的出入口准则 322 7.2.7 预判产品缺陷趋势 324 7.2.8 回顾 325 7.3 制定测试设计策略 327 7.3.1 在测试设计时考虑测试深度和广度 327 7.3.2 给测试用例划分等级 329 7.3.3 有效的测试设计评审 331 7.3.4 回顾 333 第8章 产品质量评估和测试策略调整 334 8.1 确认和计划的偏差 335 8.1.1 尽量避免小瀑布迭代 336 8.1.2 如何补救延期、阻塞和返工等问题 338 8.1.3 如何处理实际交付的内容和计划的偏差 339 8.1.4 在适应变化的情况下依然保持版本迭代节奏 341 8.2 选择测试用例 343 8.2.1 选择接收测试用例的策略和原则 344 8.2.2 选择不同阶段的测试用例的策略和原则 344 8.2.3 选择回归测试用例的策略和原则 345 8.3 测试过程跟踪 347 8.3.1 测试执行顺序和策略覆盖 348 8.3.2 确定缺陷修复的优先级 350 8.3.3 非必现缺陷处理 352 8.3.4 缺陷预判和调整测试策略 354 8.4 产品质量评估 357 8.4.1 质量指标分析 358 8.4.2 建立特性质量档案 362 8.4.3 组合缺陷分析 362 8.4.4 非测试用例发现缺陷的原因分析 364 8.4.5 遗留缺陷分析 365 第9章 基于价值的测试策略 368 9.1 再谈测试策略 368 9.2 不同产品阶段下的测试策略 371 9.3 探索式测试策略 372 9.3.1 根据不同的特性选择适合的探索式测试方法 372 9.3.2 将基于价值的测试策略和基于产品的测试策略组合起来 372 9.3.3 启发式测试策略模型 375 9.4 自动化持续测试策略 375 9.4.1 持续测试和自动化测试 377 9.4.2 自动化持续测试策略 378 9.4.3 将自动化持续测试和产品发展阶段相结合 379 ---------------------------8079921 - 架构师的自我修炼:技术、架构和未来--------------------------- 前言 第一部分 架构师的基础知识修炼 第1章 操作系统原理:程序是如何运行和崩溃的 2 1.1 程序是如何运行起来的 2 1.2 一台计算机如何同时处理数以百计的任务 4 1.3 系统为什么会变慢,为什么会崩溃 5 1.4 小结 7 第2章 数据结构原理:Hash表的时间复杂度为什么是O(1) 8 2.1 数组的结构 8 2.2 链表的结构 9 2.3 Hash表的结构 10 2.4 栈的结构 12 2.5 队列的结构 13 2.6 树的结构 14 2.7 小结 14 第3章 Java虚拟机原理:JVM为什么被称为机器 16 3.1 JVM的构造 17 3.2 JVM的垃圾回收 19 3.3 Web应用程序在JVM中的执行过程 22 3.4 小结 24 第4章 网络编程原理:一个字符的互联网之旅 25 4.1 DNS域名解析原理 26 4.2 CDN 27 4.3 HTTP的结构 28 4.4 TCP的结构 29 4.5 链路层负载均衡原理 32 4.6 小结 33 第5章 文件系统原理:用1分钟遍历一个100TB的文件 34 5.1 硬盘结构原理 35 5.2 文件系统原理 36 5.3 RAID硬盘阵列原理 37 5.4 分布式文件系统架构原理 39 5.5 小结 40 第6章 数据库原理:SQL为什么要预编译 42 6.1 数据库架构与SQL执行过程 43 6.2 使用PrepareStatement执行SQL的好处 45 6.3 数据库文件存储与索引工作原理 46 6.4 小结 48 第7章 编程语言原理:面向对象编程是编程的终极形态吗 49 7.1 软件编程的远古时代 49 7.2 机器与汇编语言时代 51 7.3 高级编程语言时代 51 7.4 面向对象编程时代 52 7.5 编程语言的未来 53 7.6 小结 54 第二部分 架构师的程序设计修炼 第8章 软件设计的方法论:软件为什么要建模 56 8.1 什么是软件建模 57 8.2 4+1视图模型 58 8.3 UML建模 59 8.4 小结 60 第9章 软件设计实践:使用UML完成一个设计文档 61 9.1 用类图设计对象模型 61 9.2 用序列图描述系统调用 62 9.3 用组件图进行模块设计 63 9.4 用部署图描述系统物理架构 64 9.5 使用用例图进行需求分析 65 9.6 用状态图描述对象状态变迁 66 9.7 用活动图描述调用流程 66 9.8 使用合适的UML模型构建一个软件设计文档 67 9.9 软件架构设计文档示例模板 68 9.10 小结 74 第10章 软件设计的目的:糟糕的程序差在哪里 75 10.1 糟糕的设计有多糟糕 76 10.2 一个设计“腐坏”的例子 77 10.3 解决之道 78 10.4 小结 80 第11章 软件设计的开闭原则:不修改代码却能实现需求变更 81 11.1 什么是开闭原则 81 11.2 一个违反开闭原则的例子 82 11.3 使用策略模式实现开闭原则 84 11.4 使用适配器模式实现开闭原则 85 11.5 使用观察者模式实现开闭原则 86 11.6 使用模板方法模式实现开闭原则 88 11.7 小结 89 第12章 软件设计的依赖倒置原则:不依赖代码却可以复用它的功能 91 12.1 依赖倒置原则 91 12.2 依赖倒置的关键是接口所有权的倒置 93 12.3 使用依赖倒置来实现高层模块复用 94 12.4 小结 96 第13章 软件设计的里氏替换原则:正方形可以继承长方形吗 97 13.1 里氏替换原则 98 13.2 一个违反里氏替换原则的例子 99 13.3 正方形可以继承长方形吗 100 13.4 子类不能比父类更严格 101 13.5 小结 102 第14章 软件设计的单一职责原则:一个类文件打开后最好不要超过一屏 104 14.1 单一职责原则 107 14.2 一个违反单一职责原则的例子 107 14.3 从Web应用架构演进看单一职责原则 108 14.4 小结 110 第15章 软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法 112 15.1 接口隔离原则 113 15.2 一个使用接口隔离原则优化的例子 114 15.3 接口隔离原则在迭代器设计模式中的应用 117 15.4 小结 117 第16章 设计模式基础:不会灵活应用设计模式,就没有掌握面向对象编程 119 16.1 面向对象编程的本质是多态 119 16.2 设计模式的精髓是对多态的使用 121 16.3 小结 123 第17章 设计模式应用:编程框架中的设计模式 125 17.1 什么是框架 125 17.2 Web容器中的设计模式 127 17.3 JUnit中的设计模式 129 17.4 小结 132 第18章 反应式编程框架设计:如何使程序调用不阻塞等待,立即响应 133 18.1 反应式编程 135 18.2 反应式编程框架Flower的基本原理 135 18.3 反应式编程框架Flower的设计方法 138 18.4 反应式编程框架Flower的落地效果 140 18.5 小结 141 第19章 组件设计原则:组件的边界在哪里 143 19.1 组件内聚原则 144 19.2 组件耦合原则 145 19.3 小结 147 第20章 领域驱动设计:35岁的程序员应该写什么样的代码 148 20.1 领域模型模式 149 20.2 领域驱动设计 151 20.3 小结 154 第三部分 架构师的架构方法修炼 第21章 分布式架构:如何应对高并发的用户请求 156 21.1 垂直伸缩与水平伸缩 157 21.2 互联网分布式架构演化 157 21.3 小结 163 第22章 缓存架构:减少不必要的计算 165 22.1 通读缓存 166 22.2 旁路缓存 168 22.3 缓存注意事项 171 22.4 小结 173 第23章 异步架构:避免互相依赖的系统间耦合 174 23.1 使用消息队列实现异步架构 175 23.2 消息队列异步架构的好处 178 23.3 小结 180 第24章 负载均衡架构:用10行代码实现一个负载均衡服务 181 24.1 HTTP重定向负载均衡 181 24.2 DNS负载均衡 183 24.3 反向代理负载均衡 184 24.4 IP负载均衡 184 24.5 数据链路层负载均衡 186 24.6 小结 187 第25章 数据存储架构:改善系统的数据存储能力 188 25.1 数据库主从复制 188 25.2 数据库分片 190 25.3 关系数据库的混合部署 193 25.4 NoSQL数据库 196 25.5 小结 197 第26章 搜索引擎架构:瞬间完成海量数据检索 199 26.1 搜索引擎倒排索引 199 26.2 搜索引擎结果排序 202 26.3 小结 205 第27章 微服务架构:微服务究竟是“灵丹”还是“毒药” 206 27.1 单体架构的困难和挑战 206 27.2 微服务框架原理 208 27.3 微服务架构的落地实践 210 27.4 小结 211 第28章 高性能架构:除了代码,还可以在哪些地方优化性能 212 28.1 性能指标 212 28.2 性能测试 213 28.3 性能优化 215 28.4 小结 219 第29章 高可用架构:淘宝应用升级时,为什么没有停机 220 29.1 高可用的度量 221 29.2 高可用的架构 222 29.3 小结 225 第30章 安全性架构:为什么说用户密码泄露是程序员的问题 227 30.1 数据加密与解密 227 30.2 HTTP攻击与防护 230 30.3 小结 233 第31章 大数据架构:思想和原理 234 31.1 HDFS分布式文件存储架构 235 31.2 MapReduce大数据计算架构 236 31.3 Hive大数据仓库架构 238 31.4 Spark快速大数据计算架构 240 31.5 大数据流计算架构 242 31.6 小结 242 第32章 AI与物联网架构:从智能引擎到物联网平台 243 32.1 大数据平台架构 244 32.2 智能推荐算法 245 32.3 物联网大数据架构 249 32.4 小结 250 第33章 区块链技术架构:区块链到底能做什么 251 33.1 比特币与区块链原理 251 33.2 联盟链与区块链的企业级应用 255 33.3 小结 257 第四部分 架构师的思维修炼 第34章 技术修炼之道:同样工作十几年,为什么有的人成为资深架构师,有的人失业 260 34.1 德雷福斯模型 261 34.2 如何在工作中成长 263 34.3 小结 264 第35章 技术进阶之道:你和世界上顶级的程序员差几个等级 265 35.1 软件技术的生态江湖与等级体系 265 35.2 技术进阶之捷径 267 35.3 小结 269 第36章 技术落地之道:你真的知道自己要解决的问题是什么吗 270 36.1 确定会议真正要解决的问题是什么 271 36.2 不需要去解决别人的问题,提醒他问题的存在即可 272 36.3 去解决那些被人们习以为常而忽略了的问题 273 36.4 小结 273 第37章 技术沟通之道:如何解决问题 275 37.1 让有能力解决问题的人感受到问题的存在 275 37.2 “直言有讳” 276 37.3 想解决一个大家都不关注的问题,可以等问题变得更糟 277 37.4 如果不填老师想要的答案,你就得不了分 278 37.5 小结 278 第38章 技术管理之道:真的要转管理吗 280 38.1 彼得定律 281 38.2 用目标驱动 282 38.3 小结 283 附录A 软件开发技术的第一性原理 284 附录B 我的架构师成长之路 287 附录C 无处不在的架构之美 293 附录D 软件架构师之道 298 |