为您推荐:
精华内容
最热下载
问答
  • 5星
    8.04MB howard1983 2021-02-24 10:05:28
  • 5星
    5.04MB qq_44537408 2021-01-20 15:13:13
  • 5星
    578.92MB goodxianping 2021-07-26 13:35:05
  • 5星
    3.98MB qq_38412739 2021-03-06 09:35:04
  • 5星
    2.01MB qq_17695025 2021-06-03 05:12:31
  • 5星
    10.91MB qq_17695025 2021-03-15 22:23:19
  • 5星
    215KB licbc 2021-06-08 08:44:24
  • 5星
    330.37MB JZTY_2018 2021-05-10 17:12:16
  • 5星
    358.9MB qq_17695025 2021-06-16 05:36:32
  • 4星
    1.59MB u013883025 2021-07-09 13:26:40
  • 《解决方案架构师修炼之道》正是围绕着从现有IT角色到解决方案架构师的有效转换展开,并以一种非常合理的方式说明了开启这段转换之旅的步骤。 首先,本书简洁而贴切地说明了这个角色需要什么,以及它与其他类似角色...

    2138e60c620a49dfe8d790612661d45e.gif技术领域的发展日新月异,IT专业人员为了自身的职业发展,必须与时俱进地掌握新技能。然而,在过去的十年中,这种快速变化的趋势已经在云计算领域中占据主导地位,成为“新常态”。现在,几乎每天都有云供应商发布新的公告、功能和服务更新,因此有必要建立持续学习的文化。与此同时,开发人员、数据库管理员、安全专业人员、构建/发布工程师等常规角色之间的典型界限逐渐变得模糊,这也导致了新角色的出现,这些角色需要着眼全局来把握端到端的完整流程。

    其中之一就是“解决方案架构师”,该角色从行业中现有的“应用架构师”和“IT架构师”等角色演变而来,现在已经成为主流。随着专业方向的不同,这个角色也发生了一些变化。最常见的是“云解决方案架构师”(Cloud Solutions Architect),该角色本身就相当动态。

    通常,IT专业人士希望能转换角色,但是他们缺乏在这条道路上取得成功的指导。

    988fdaa2170ea4bebe7cb6efe2400284.png

    《解决方案架构师修炼之道》正是围绕着从现有IT角色到解决方案架构师的有效转换展开,并以一种非常合理的方式说明了开启这段转换之旅的步骤。

    首先,本书简洁而贴切地说明了这个角色需要什么,以及它与其他类似角色有什么不同。

    之后,讲到了成为成功的解决方案架构师要具备的技术技能和各方面的知识。本书从基本的设计理念和架构原则(包括高可用性、可靠性、性能、安全性和成本优化)开始,对其中的每一方面进行深入探讨。

    本书还涵盖了有关云原生架构、DevOps以及数据工程和机器学习领域(现代架构的基石)的一些关键概念。

    强烈建议大家阅读这本书,并把它作为一份便利的参考资料一直留存,因为在书中你会发现非常重要的知识点,而这些知识将帮助你成为成功的解决方案架构师并开启一个充满无限可能的新世界!

    01

    目标读者


    本书适合从事IT行业的软件开发人员、系统工程师、DevOps工程师、架构师和团队负责人,以及有志于成为解决方案架构师并热衷于设计安全、可靠、高性能和高性价比的架构的人阅读。

    02

    本书涵盖内容

    • 第1章主要定义解决方案架构并解释其重要性。本章诠释了采用解决方案架构的各种益处,并探讨了在公有云上的架构设计。

    • 第2章讲述不同类型的解决方案架构师角色,以及他们如何融入组织结构。本章详细探讨了解决方案架构师的各种职责,并进一步说明了解决方案架构师在敏捷组织中的作用及如何与敏捷流程相适应。

    • 第3章揭示解决方案架构的各种属性,如可伸缩性、韧性、灾难恢复、可访问性、可用性、安全性和成本。本章解释了这些架构属性的共存和使用原则,以创建高效的解决方案设计。

    • 第4章讲述创建可伸缩、韧性和高性能架构的设计原则。本章通过应用安全性、克服约束、应用变更以及测试和自动化方法解释了什么是有效的架构设计,并通过探索面向服务的架构和采取数据驱动的方法来研究架构原则,从而有效地使用设计思维。

    • 第5章解释云的优势和设计云原生架构的方法。本章阐述了对于不同云迁移策略和迁移步骤的理解,讨论了混合云设计,并探讨了受欢迎的公有云供应商。

    • 第6章通过实例探讨各种架构设计模式,如分层、微服务、事件驱动、基于队列、无服务器、基于缓存和面向服务等模式。本章展示了解决方案架构属性和原则的适用性,以根据业务需求设计最佳架构,并解释了AWS云平台中的各种参考架构。

    • 第7章阐述应用程序性能提升的关键属性,如延迟、吞吐量和并发性。本章解释了在多个架构层级提高性能的各种技术选型,包括计算、存储、数据库和网络,以及性能监控。

    • 第8章讨论适用于保护工作负载安全的各种设计原则。安全性需要应用于架构的每一层和每一个组件,本章有助于了解正确的技术选型,以确保架构的每一层级都是安全的。本章探讨了适用于架构设计的行业合规性准则,并通过共享安全责任模型解释了云中的安全问题。

    • 第9章对促使架构可靠的设计原则进行讨论。本章探讨了各种用于确保应用程序的高可用性的灾难恢复技术,以及用于业务流程连续性的数据复制方法,解释了最佳实践和云在应用程序中实现可靠性的作用。

    • 第10章论述在应用程序中实现卓越运维的各种流程和方法。本章解释了适用于应用程序设计、实现和后期生产全流程的最佳实践和技术选型,以提高应用程序的可运维性,还探讨了云工作负载的卓越运维。

    • 第11章讨论在不影响业务敏捷性的情况下优化成本的各种技术。本章解释了用于监控成本和成本控制治理的多种方法,有助于读者理解云服务使用的成本优化。

    • 第12章解释DevOps在应用程序部署、测试和安全方面的重要性。本章探讨了DevSecOps及其在应用程序的持续部署和交付流程中的作用,讲述了DevOps的最佳实践以及实现这些实践的工具和技术。

    • 第13章讲述如何设计大数据和分析架构。本章概述了创建大数据流水线的步骤,包括数据摄取、存储、处理和可视化,帮助读者理解物联网所涉及的概念和技术,本章还探讨了有关机器学习、模型评估技术的详细信息,并对各种机器学习算法进行了概述。

    • 第14章讲述遗留系统的各种挑战和现代化驱动因素。本章解释了对遗留系统进行现代化改造的策略和技术。对许多组织来说,使用公有云正在成为首选策略,因此本章还探讨了遗留系统的云迁移。

    • 第15章讨论解决方案架构文档及其结构以及所需的各种细节。本章研究了各种IT采购文档(解决方案架构师需要参与其中以提供反馈)。

    • 第16章讲述胜任解决方案架构师所必需的各种软技能,有助于读者了解如何获得战略技能(如售前和高层沟通)、发展设计思维以及个人领导技能(如大局观和主人翁意识)。本章探讨了将自己打造成领导者并不断拓展自身技能的技巧。

    03

    大咖推荐

    本书是一本非常好的解决方案架构师手册,因为它系统、全面,并且与时俱进。这本手册涵盖了SOA、云迁移和混合云、无服务器、微服务、基于队列、事件驱动、大数据等架构设计模式,对性能、安全性、可靠性、运维、成本等进行了全方位考量,也涉及云原生架构、DevOps、数据工程和机器学习等一些崭新领域,从架构师的角色和职责开始,逐步深入探讨设计原则、设计模式及其实践。我相信,它会成为架构师的案头必备。

    ——朱少民,《架构之道:软件构建的设计方法》译者,

    《敏捷测试:以持续测试促进持续交付》作者,QECon大会发起人

    解决方案架构师对于软件产品开发而言越来越重要,只有根据业务场景做针对性的架构设计才能保证整体架构方案可落地。因此,解决方案架构师不仅是技术专家,更是千锤百炼的业务专家。成为一名优秀的解决方案架构师绝非一日之功,这本书好比一位向导,指引大家成为一名优秀的解决方案架构师。

    ——张尧,凯捷中国首席架构师

    如果说产品经理的价值是指导团队开发正确的产品,那么架构师的价值就是教团队以正确的方式开发产品。架构师其实有许多种,比如系统架构师、应用架构师、数据架构师、安全架构师等。如果说哪一种架构师既懂技术,又懂产品,还懂业务,那一定就是解决方案架构师。强烈推荐这本经典著作,阅读这本书会帮助你成为一名出色的综合型技术人才。 

    ——黄勇,《架构探险:从零开始写Java Web框架》作者

    在云服务成为数字化最重要的基础设施和驱动力的今天,围绕着云服务,以涵盖业务、应用、数据和基础设施的解决方案设计来指引数字变革,已越来越多地被各行业头部企业所采纳。而其中的架构设计,正是支撑这场变革的骨架。与之相适应,新的趋势、场景、技术也对投身其中的架构师提出了新的要求。本书很好地定位于这样的趋势当中,定位在云服务体系的数据和基础设施层面,从弹性、安全、灾备、DevOps、云迁移及混合云等若干重要维度展开,以架构设计的视角进行详细阐述。同时,结合这样的环境,对架构的含义、原则、模式和方法进行了再归纳和再升华。本书对于投身数字变革中的架构师来说是非常有益的给养。推荐大家阅读、参考。

    ——马徐,腾讯云高级战略专家,《服务设计方法与项目实践》译者

    解决方案架构师的重要性越来越受到行业的关注。这个角色由企业架构领域的应用架构师与IT架构师发展而来,它的兴起与演进,契合了当下从“架构适配业务的内部视角”到“业务驱动架构的外部视角”关注点变化的趋势。但是对于这个新兴的角色,行业中相关的文献仍显空白。很高兴看到这本书出版,它能为这个新角色的定义与发展提供指导。

    ——王健,Thoughtworks首席咨询师,“白话中台战略”系列文章作者

    解决方案如何解释?我的理解是:对一组抽象问题的一揽子解决办法。每个公司内部都面临着各种各样的业务问题,面对这些棘手的问题,解决方案架构可以帮助识别、理解、解决业务中出现的各类问题。在这个过程中,我们首先需要对解决方案架构的定义达成共识,并对解决方案架构的发展有深刻理解。强烈推荐几位好友联手翻译的这本书,它一定能帮到你。

    ——吴瑞诚,小米业务中台武汉负责人

    在第四次工业革命的浪潮之下,各行各业纷纷转战竞争激烈的数字化转型赛道。众人皆知转型之路需披荆斩棘,不仅需要绩效高、执行力强的研发团队,更需要一支着眼全局,从战略到战术视角定义问题和设计解决方案的架构团队。对于这样的架构团队,不同的企业皆有解读,然而林林总总的架构师头衔(解决方案架构师、云架构师、技术架构师、应用架构师等)往往会令从业者困惑不已。幸运的是,这本书的出版恰逢其时。它先从“道”出发,帮助读者理解这个时代下架构师面临的挑战以及架构设计原则。然后,进一步洞察了架构师的“法”和“术”,分享了云时代的架构设计模式、设计框架和方法。此外,本书也对优秀架构师的软技能和实战工具选择提出了期待。

    ——笪磊,Thoughtworks BeeArt产品负责人,

    《EDGE:价值驱动的数字化转型》《领域驱动设计精粹》译者

    在企业数字化转型过程中,一个重要的议题就是技术如何赋能业务,以及如何开创数字化业务。解决方案架构师在将业务目标和需求与数字化服务、产品及基础设施进行结合的过程中,担任了至关重要的角色。解决方案架构师是一位多面手,需要能透彻地理解业务,根据业务问题准确地提炼、抽象、设计解决方案,并最终使之落地。我的几位朋友翻译的这本书为有志于成为解决方案架构师的读者提供了系统性的指导。

    ——周柯,Thoughtworks中国区首席信息官

    解决方案架构师是未来IT架构中不可或缺的关键角色。本书作者从全球视角出发,经过多年沉淀积累,总结出一套科学、严谨的解决方案架构师参考指南。几位译者在翻译的过程中,亦融入了许多专业见解,对处于困惑之中的解决方案架构师起到了领航的作用。

    ——方强,旺米科技创始人

    04

    目录

    第1章 解决方案架构的含义  1

    1.1 什么是解决方案架构  2

    1.2 解决方案架构的演进  4

    1.3 解决方案架构为何如此重要  5

    1.4 解决方案架构的益处  5

    1.4.1 满足业务需求和交付质量  7

    1.4.2 选择最佳技术平台  7

    1.4.3 处理解决方案的约束和问题  7

    1.4.4 协助资源和成本管理  8

    1.4.5 管理解决方案交付和项目生命周期  8

    1.4.6 解决非功能性需求  8

    1.5 公有云中的解决方案架构  9

    1.5.1 什么是公有云  9

    1.5.2 公有云、私有云和混合云  10

    1.5.3 公有云架构  10

    1.5.4 公有云供应商和云服务产品  11

    1.6 小结  12

    第2章 组织中的解决方案架构师  14

    2.1 解决方案架构师角色的类型  15

    2.1.1 企业解决方案架构师  17

    2.1.2 解决方案架构师  17

    2.1.3 技术架构师  18

    2.1.4 云架构师  18

    2.1.5 架构师布道者  18

    2.1.6 基础设施架构师  19

    2.1.7 网络架构师  19

    2.1.8 数据架构师  20

    2.1.9 安全架构师  21

    2.1.10 DevOps架构师  21

    2.2 理解解决方案架构师的职责  22

    2.2.1 分析用户需求  22

    2.2.2 定义非功能性需求  23

    2.2.3 与利益相关者的接触与合作  25

    2.2.4 处理各种架构约束  25

    2.2.5 技术选型  27

    2.2.6 概念验证和原型开发  27

    2.2.7 设计解决方案并持续交付  28

    2.2.8 确保发布后的可操作性和可维护性  29

    2.2.9 担任技术布道者  30

    2.3 敏捷组织中的解决方案架构师  30

    2.3.1 为什么选择敏捷方法论  30

    2.3.2 敏捷宣言  31

    2.4 小结  35

    第3章 解决方案架构的属性  36

    3.1 可伸缩性和弹性  37

    3.1.1 容量伸缩困境  38

    3.1.2 架构伸缩  38

    3.1.3 静态内容伸缩  40

    3.1.4 服务器机群弹性  40

    3.1.5 数据库伸缩  40

    3.2 高可用性和韧性  41

    3.3 容错和冗余  43

    3.4 灾难恢复与业务连续性  44

    3.5 可扩展性与可重用性  45

    3.6 易用性与可访问性  46

    3.7 可移植性与互操作性  47

    3.8 卓越运维与可维护性  48

    3.9 安全性与合规性  49

    3.9.1 认证和授权  49

    3.9.2 Web安全  50

    3.9.3 网络安全  50

    3.9.4 基础设施安全  50

    3.9.5 数据安全  50

    3.10 成本优化与预算  51

    3.11 小结  52

    第4章 解决方案架构的设计原则  53

    4.1 工作负载的伸缩  54

    4.1.1 可预测伸缩  54

    4.1.2 被动伸缩  56

    4.2 构建有韧性的架构  56

    4.3 性能设计  58

    4.4 使用可替换资源  59

    4.5 考虑松耦合  60

    4.6 考虑服务而非服务器  62

    4.7 根据合理的需求选择合适的存储  63

    4.8 考虑数据驱动的设计  65

    4.9 克服约束  65

    4.10 安全无处不在  67

    4.11 自动化一切  67

    4.12 小结  68

    第5章 云迁移和混合云架构设计  70

    5.1 云原生架构的好处  71

    5.2 创建云迁移策略  72

    5.2.1 Lift and Shift方法  73

    5.2.2 云原生方法  75

    5.2.3 Retain or Retire方法  76

    5.3 云迁移的步骤  77

    5.3.1 发现工作负载  78

    5.3.2 分析信息  79

    5.3.3 制订迁移计划  80

    5.3.4 设计应用程序  83

    5.3.5 执行应用程序迁移上云  85

    5.3.6 集成、验证和切换  87

    5.3.7 运维云应用程序  89

    5.3.8 云上应用程序优化  90

    5.4 创建混合云架构  91

    5.5 设计云原生架构  92

    5.6 主流的公有云  94

    5.7 小结  95

    5.8 进一步阅读  95

    第6章 解决方案架构设计模式  96

    6.1 构建N层架构  97

    6.1.1 Web层  97

    6.1.2 应用层  99

    6.1.3 数据库层  99

    6.2 创建基于SaaS的多租户架构  99

    6.3 构建无状态和有状态的架构  101

    6.4 理解SOA  103

    6.4.1 基于SOAP的Web服务架构  103

    6.4.2 RESTful Web服务架构  105

    6.4.3 构建基于SOA的电子商务网站架构  106

    6.5 构建无服务器架构  107

    6.6 创建微服务架构  109

    6.7 构建基于队列的架构  111

    6.7.1 队列链表模式  112

    6.7.2 作业观察者模式  113

    6.8 创建事件驱动架构  114

    6.8.1 发布者/订阅者模型  114

    6.8.2 事件流模型  115

    6.9 构建基于缓存的架构  116

    6.9.1 三层Web架构中的缓存分发模式  117

    6.9.2 重命名分发模式  119

    6.9.3 缓存代理模式  120

    6.9.4 重写代理模式  121

    6.9.5 应用缓存模式  122

    6.10 理解断路器模式  123

    6.11 实现隔板模式  124

    6.12 构建浮动IP模式  125

    6.13 使用容器部署应用程序  126

    6.13.1 容器的好处  127

    6.13.2 容器化部署  128

    6.14 应用程序架构中的数据库处理  129

    6.15 避免解决方案架构中的反模式  132

    6.16 小结  133

    第7章 性能考量  134

    7.1 架构性能的设计原则  134

    7.1.1 降低延迟  135

    7.1.2 提高吞吐量  136

    7.1.3 处理并发问题  137

    7.1.4 使用缓存  138

    7.2 性能优化的技术选型  139

    7.2.1 计算能力选型  139

    7.2.2 选择存储  144

    7.2.3 选择数据库  147

    7.2.4 选择网络  149

    7.3 管理性能监控  152

    7.4 小结  153

    第8章 安全考量  155

    8.1 架构安全的设计原则  155

    8.1.1 实现认证和授权控制  156

    8.1.2 安全无处不在  156

    8.1.3 缩小爆炸半径  157

    8.1.4 时刻监控和审计一切  157

    8.1.5 自动化一切  157

    8.1.6 数据保护  157

    8.1.7 事件响应准备  158

    8.2 架构安全技术选型  158

    8.2.1 用户身份和访问管理  158

    8.2.2 处理网络安全问题  165

    8.2.3 保护应用程序及其基础设施  169

    8.2.4 数据安全  173

    8.3 安全和合规认证  178

    8.4 云的共享安全责任模型  178

    8.5 小结  180

    第9章 架构可靠性考量  182

    9.1 架构可靠性的设计原则  182

    9.1.1 使系统自愈  183

    9.1.2 实现自动化  183

    9.1.3 创建分布式系统  184

    9.1.4 容量监控  184

    9.1.5 验证恢复过程  184

    9.2 架构可靠性的技术选型  185

    9.2.1 规划RTO和RPO  185

    9.2.2 数据复制  186

    9.2.3 规划灾难恢复  188

    9.2.4 灾难恢复的最佳实践  195

    9.3 利用云来提高可靠性  196

    9.4 小结  197

    第10章 卓越运维考量  198

    10.1 卓越运维的设计原则  199

    10.1.1 自动化运维  199

    10.1.2 进行增量和可逆的变更  199

    10.1.3 预测并响应故障  200

    10.1.4 从错误中学习并改进  200

    10.1.5 持续更新运维手册  200

    10.2 卓越运维的技术选型  201

    10.2.1 卓越运维的规划阶段  201

    10.2.2 卓越运维的执行阶段  204

    10.2.3 卓越运维的改进阶段  210

    10.3 在公有云中实现卓越运维  212

    10.4 小结  213

    第11章 成本考量  215

    11.1 成本优化的设计原则  215

    11.1.1 计算总拥有成本  216

    11.1.2 规划预算和预测  217

    11.1.3 管理需求和服务目录  218

    11.1.4 跟踪支出  219

    11.1.5 持续成本优化  219

    11.2 成本优化的技术选型  220

    11.2.1 降低架构复杂度  220

    11.2.2 提高IT效率  221

    11.2.3 实现标准化和架构治理  222

    11.2.4 成本监控和报告  224

    11.3 公有云上的成本优化  227

    11.4 小结  228

    第12章 DevOps和解决方案架构框架  230

    12.1 DevOps介绍  231

    12.2 DevOps的好处  231

    12.3 DevOps的组成部分  232

    12.3.1 CI/CD  233

    12.3.2 持续监控和改进  234

    12.3.3 基础设施即代码  235

    12.3.4 配置管理  235

    12.4 什么是DevSecOps  236

    12.5 结合DevSecOps和CI/CD  237

    12.6 实施CD策略  238

    12.6.1 就地部署  238

    12.6.2 滚动部署  238

    12.6.3 蓝绿部署  238

    12.6.4 红黑部署  239

    12.6.5 不可变部署  240

    12.7 在CI/CD流水线中实施持续测试  240

    12.8 CI/CD的DevOps工具  242

    12.8.1 代码编辑器  243

    12.8.2 源代码管理  243

    12.8.3 CI服务器  243

    12.8.4 代码部署  245

    12.8.5 代码流水线  246

    12.9 实施DevOps最佳实践  247

    12.10 小结  248

    第13章 数据工程和机器学习  249

    13.1 什么是大数据架构  250

    13.2 大数据处理流水线设计  251

    13.3 数据摄取  252

    13.3.1 数据摄取的技术选型  253

    13.3.2 数据摄取上云  254

    13.4 数据存储  255

    13.5 数据处理和分析  262

    13.6 数据可视化  265

    13.7 理解物联网  266

    13.8 什么是机器学习  267

    13.9 使用数据科学和机器学习  268

    13.10 评估机器学习模型:过拟合与欠拟合  270

    13.11 了解监督学习和无监督学习  270

    13.12 小结  272

    第14章 遗留系统架构设计  273

    14.1 遗留系统面临的挑战  274

    14.1.1 难以满足用户需求  274

    14.1.2 维护和更新费用较高  275

    14.1.3 缺乏技能和文档  275

    14.1.4 存在安全风险  276

    14.1.5 无法兼容其他系统  276

    14.2 遗留系统现代化改造策略  277

    14.2.1 系统现代化改造的好处  277

    14.2.2 遗留系统的评估  279

    14.2.3 现代化改造方案  279

    14.2.4 文档和支持  280

    14.3 遗留系统现代化改造技术  280

    14.3.1 封装、重新托管和重新平台化  281

    14.3.2 重构和重新架构  282

    14.3.3 重新设计和替换  282

    14.4 遗留系统的云迁移策略  283

    14.5 小结  284

    第15章 解决方案架构文档  285

    15.1 文档目的  285

    15.2 文档视图  286

    15.3 文档结构  288

    15.3.1 解决方案概述  289

    15.3.2 业务上下文  290

    15.3.3 概念解决方案概述  291

    15.3.4 解决方案架构  292

    15.3.5 解决方案交付  295

    15.3.6 解决方案管理  295

    15.3.7 附录  296

    15.4 解决方案架构的IT采购文档  296

    15.5 小结  297

    第16章 学习软技能,成为更优秀的解决方案架构师  298

    16.1 掌握售前技能  299

    16.2 向企业高管汇报  300

    16.3 主人翁意识和责任心  301

    16.4 定义战略执行以及目标与关键成果  301

    16.5 着眼于大局  302

    16.6 灵活性和适应性  303

    16.7 设计思维  303

    16.8 做一个动手写代码的程序员  305

    16.9 持续学习,不断进步  306

    16.10 成为他人的导师  307

    16.11 成为技术布道者和思想领袖  308

    16.12 小结  308

    上下滑动查看

    7cd4fe98fbb9f8dc9ea744712886989c.gif

    8926bf0c9962398aaba764f4cbbdc4aa.png

    扫码关注【华章计算机】视频号

    每天来听华章哥讲书

    72a791c27df49b083f0189adeaa8e54d.gif

    更多精彩回顾

    书讯 | 11月书讯(上)| 拿下这些新书,赢在起跑线

    书讯 | 11月书讯(下) | 拿下这些新书,赢在起跑线

    资讯 | 为什么 Rust 是编程的未来?

    书单 | 8本书助你零基础转行数据分析岗

    干货 | SpringBoot 实战:加载和读取资源文件内容

    收藏 | 看漫画来告诉你:什么是 “元宇宙” ?

    上新 | 【新书速递】产品经理应该知道的72件事

    3b5ef4824b347a63ec159438b5d43075.gif

    e4d56d8728957f6ad95111d425a99865.gif

    点击阅读全文购买

    展开全文
    hzbooks 2021-11-26 01:37:54
  • 《测试架构师修炼之道》一书,笔者入行一年多的时候拜读过。虽然这本书主要偏向业务测试、质量管理的方向,而并非技术测试、测试开发的方向,但只要是测试行业从业者,笔者认为都值得一看。 从笔者本人角度,对于...

    《测试架构师修炼之道》一书,笔者入行一年多的时候拜读过。虽然这本书主要偏向业务测试、质量管理的方向,而并非技术测试、测试开发的方向,但只要是测试行业从业者,笔者认为都值得一看。

    从笔者本人角度,对于测试人员的职业发展,是极端推崇技术方向的。但工作最终总会落实到人,测试近年来被划分为偏向技术的岗位,那么技术本身就一定要搞起来,这样才能使得这类职业能够在工作框架体系里处于不屈之地。

    但即便如此,测试本身也有很多技术/管理方法论的积淀,有很多old school的东西是值得尊重的。不论技术做成什么样,从测试工作的最终目标而言,都需要贴合传统测试遗留下来的的概念。《测试架构师修炼之道》一书,对传统测试,尤其质量管理方向相关的知识点、工作目标、工作方法都概括的非常明确,是测试行业不可多得的智慧积淀(嗯,测试行业确实缺乏沉淀!)。

    技术方向的测试同学阅读这本书,能够更好地把握技术研发的方向;业务方向的测试同学阅读这本书,能够更全面地规划自己的发展。

    在阅读的过程中,笔者也做了相关的读书笔记,提炼了其中的精要。本文也将把笔者的读书笔记全部分享出来:

    第一章:软件测试工程师的“三年之痒”

    第三年的瓶颈:基本的技术与业务都已掌握,但不知道该如何深入,工作缺乏挑战性与成就感

    软件测试的能力:

    • 对整个系统有整体把握
    • 站在用户(玩家)角度理解需求
    • 技术+产品技能

    第二章:软件测试工程师的职业规划

    职业规划路线

    测试工程师的两条路:

    • 管理(测试主管、PM)
    • 技术(工具、平台、专项)

    管理

    • 初级(组长):负责产品一个/多个特性(P6、P7)
    • 中级(主管):管理10~20人团队,制定、评估测试计划,评估产品质量(P7、P8)
    • 高级(总监):理解产品商业目标,团队人才管理,财务资源规划,改进产品测试效率与质量(P9+)

    技术

    • 产品测试专家
      • 业务需求向测试转换过程的桥梁,负责测试架构设计
      • 对测试重点与难点进行攻关,提供最优方法
      • 协助测试经理指定测试计划与进度
      • 战略规划、业务建模、数据分析、产品生命周期质量保证
      • 测试技术的涉猎(为产品服务)
    • 专项
      • 性能、可靠性、安全测试
      • 技术共性的研究:测试设计、缺陷分析、探索性&自动化(测试执行)、测试流程、安全性&兼容性(功能性)、性能、可靠性、可移植性(可安装性)、易用性、可维护性(稳定&可测试)

    九段秘书&六段测试

    • 四段——深入理解产品质量,了解产品性能、可靠性、易用性等非功能属性测试,能够运用测试缺陷分析技术评估产品质量。
    • 五段——推动测试技术进步,不断追求最适合产品的技术。
    • 六段——缺陷预防,测试方法标准化,固化为测试工具和流程。

    质量与测试

    • 质量关注大的产品流程
    • 测试关注产品的小质量,除此之外,还有交付质量、经营质量等环节
    • 软件测试在质量领域的发展
      • 产品流程设计
      • 质量管理者(策划、控制与改进)
      • 客户满意度管理

    第三章:软件测试架构师应该做和不该做的事情

    产品测试是端到端的

    需求分析

    • 理解需求
      • 理解商业目标
        • 客户/细分客户
        • 市场趋势
        • 竞争对手
        • 产品是否体现市场价值
        • 测试策略是否和营销目标一致
      • 梳理用户使用场景
        • 产品有什么类型的用户
        • 用户的业务是什么
        • 竞争对手的解决方案/差异
        • 产品的规范要求、行业背景、用户习惯
        • 场景的输入与输出
    • 测试策略
      • 测试范围
      • 测试重点:产品价值、质量目标、代码实现、历史测试情况
      • 测试目标
      • 测试深度:测试方法多样性(边界值、异常值等)
      • 测试广度:业务覆盖度

    测试分析和设计

    • 阶段测试策略
      • V模型(需求分析->编码,单元/集成/系统/验收测试)
      • 出入口准则
      • 分解总体测试策略
    • 按照设计方案落实

    测试执行

    • 版本测试策略
      • 测试范围与计划的偏差
      • 测试目标、用例
      • 测试重点关注内容与执行顺序
      • 回归&自动化等测试方法
    • 跟踪测试执行
      • 跟踪用例执行情况
      • 缺陷跟踪
      • 调整测试策略
      • 不仅仅是发现bug,而是记录与跟进
    • 建立版本质量档案
      • 质量目标:商用、demo等
      • 目标分解:覆盖度/测试过程/缺陷情况
      • 分类:老特性变化/新特性研发
      • 优先级

    质量评估

    • 能否进入下一阶段测试?
      • 质量目标是否达到
      • 未达到的一般性质量目标如何应对
      • 遗留缺陷分析

    测试经理、测试架构师与系统架构师

    • 测试经理
      • 制定测试计划(PM)
      • 通过协调调度保证测试顺利进行
    • 测试架构师
      • 制定测试策略
      • 验证产品是否展现应有的价值,满足用户需求
      • 理解框架,使得测试设计与执行更加有效
    • 系统架构师
      • 如何创造产品,实现产品价值
      • 如何实现以满足用户需求
      • 需要与测试架构师一起整理user story

    第四章:软件测试架构师的知识能力模型

    软件产品质量模型

    验证是否符合需求->非功能/隐性需求?

    质量六属性:

    • 功能性
    • 可靠性
    • 易用性
    • 效率
    • 可维护性
    • 可移植性

    功能性

    指定条件下使用时,满足显性/隐性功能的能力

    • 适合性:满足用户基本需求
    • 准确性:结果与精度正确,表达内容无误
    • 互操作性:多特性能够相互配合
    • 安全性
    • 功能顺从性:符合功能相关标准规范

    可靠性

    • 成熟性:避免因故障而失效
    • 容错性:发生故障/违反接口约定(异常值)情况下,维持规定的性能级别的能力
    • 可恢复性:软件失效情况下,重建规定性能级别并恢复受直接数据影响的能力
    • 可靠性顺从性:符合可靠性规范

    易用性

    从用户习惯的角度

    • 易理解性
    • 易学性
    • 易操作性
    • 吸引性
    • 易用性的依从性:遵循易用性相关标准与风格的程度

    效率

    产品性能

    • 时间特性:提供适当响应和处理时间以及流量/吞吐量的能力
    • 资源利用率:执行功能时,使用合适数量/类别的资源的能力
    • 效率依从性:遵循相关性能指标的程度

    可维护性

    可被修改的能力

    • 可分析性:诊断软件缺陷/失效原因/修改部分识别的能力
    • 可修改性:软件产品能够被修改的能力
    • 稳定性:软件产品不会因为修改而造成意外结果的能力(体现可修改的容易程度)
    • 可测试性:软件产品已修改的部分能够被确认修复的能力
    • 可维护性依从性:遵循相关标准/约定的能力

    可移植性

    从一种环境迁移到另外一种环境的能力

    • 适应性:无需采用额外手段便可适应不同环境的能力(多OS兼容)
    • 可安装性:在指定环境中被安装的能力(是否易安装?)
    • 共存性:和环境中其它软件共存的能力(与效率/性能相关)
    • 易替换性:在同样环境下替代另一个相同用途产品的能力
    • 可移植性的依从性:遵循可移植的标准/约定的能力

    测试类型

    • 功能测试:产品能否满足用户特定功能要求并做出正确响应
    • 安全性测试:产品是否有保护数据的能力,能在合适范围承受恶意攻击
    • 兼容性测试:能够和其他相关产品/平台顺利对接(操作系统)
    • 配置测试:是否能在推荐配置上流畅运行,是否会出现输入故障
    • 可靠性测试:在长时间运行能否保证系统的性能水平,存在异常情况下系统是否依然可靠
    • 易用性测试:产品是否易于理解、学习与操作
    • 性能测试:时间/资源的使用
    • 安装测试:产品是否能被安装与正确运行

    测试方法

    车轮图——围绕产品质量模型的相应测试方法

    功能测试方法

    • 单运行正常值输入法
      • 测试用户发送email,收件人地址、发件人地址、邮件内容、标题、优先级等,都是输入。测试这些的正确性,即为单运行正常值输入。
      • 输入有限(邮件优先级):遍历
      • 输入无限(邮件内容):等价类
    • 单运行边界值输入法
      • 输入边界值、超越边界的值、不合法的值与输入正常值进行对比
    • 多运行顺序执行法
      • 考虑用户习惯性的操作
      • 比如用户“收到一封邮件”与“发送一封邮件”两个事件组合中,只有“用户收到一封邮件,又发送该封邮件”才是测试点,具有顺序性。而“用户收到一封邮件后发送任意一封邮件”与“用户发送一封邮件后再收到一个邮件”并非测试点,可以分开来测。
    • 多运行相互作用法
      • 考虑两种运行有业务上或者内在资源上的关联
      • “用户发邮件时,又收到一封邮件”就是相互作用的例子

    单/多运行:测试人员的一次/多次操作或行为
    从设计的角度划分功能,比如“用户和服务器建立了连接”这种叙述,并不算是运行
    而“用户通过点击xxx” -> 输出结果为和服务器建立了连接,前者算是“运行”
    针对一个用户执行操作(多个用户,考虑可靠性测试法)

    可靠性测试方法

    • 异常值输入法:采用系统不允许的输入值进行输入
      • 故障植入法:把系统放在有问题的环境中进行测试,输入仍然为正常值
      • 弱网/断线重连
      • CPU、内存不足
      • 软件冲突、驱动不正确
      • 硬件问题
    • 稳定性测试法:在一段时间里,长时间大容量运行某种业务的一套方法
      • 低于性能测试的基准,考虑实际情况
      • 增加操作数量
      • 多个用户同时操作某功能
      • 用户反复进行某操作
      • 用户反复进行异常操作
    • 压力测试法:在一段时间里,持续使用超过系统规格的负载进行测试的方法
      • 在每个周期的某个小时段内,增大访问/操作量,持续一段时间
      • 不允许业务失败
    • 恢复测试法:在持续超过负载进行一长段时间的测试后,再恢复原先的负载规格执行测试的方法
      • 持续进行超过规格的负载时,规格内的业务不是100%正确,可容忍宕机(考虑产品可靠性的要求)
      • 当负载降到规格值之内后,业务必须100%正确

    性能测试方法

    • 系统能够正确处理新业务的最大能力
      • 从分配资源到完成处理流程的速度
      • 例子:每秒允许登录用户(开服PCU)、每秒能够主动发起多少次连接
      • 考虑新业务的拆除(比如用户下线)
    • 并发:系统能够同时正确处理的最大业务的能力
      • 别的指标不能对并发指标造成影响

    分析性能测试的影响因素:考虑用户发邮件,因变量为邮件大小(1bit~10MB)与邮件过滤策略(1~1000条),通过拟合曲线观察趋势。或者采用混合因变量的方法,模拟真实业务情况。

    易用性测试法

    • 一致性:风格布局统一,操作提示是否符合设计规范等。最好有个checklist。
    • 可用性:用户视角——功能是否易用?最好需要熟悉用户又熟悉测试的人(提测)
      • 完成某个业务场景配置需要的时间?
      • 完成某个业务场景配置了多少步骤?
      • 完成某个业务场景跳转了多少配置页面?
      • 完成某个业务场景求助了几次?产品资料是否容易解决问题?

    测试设计技术

    测试点与测试用例

    测试用例是测试点的加工,需要对测试点进行去重、合并、细化
    需要保证用例的可执行性,是一份真正能够直到测试的说明书

    四步测试设计法

    • 建模
      • 流程(流程图)
      • 参数(输入输出表)
      • 数据(等价类分析表)
      • 组合(因子表)
    • 设计基础测试用例:覆盖测试模型,确定测试条件
    • 补充测试数据
    • 扩展:针对容易发生缺陷的地方进一步增加用例

    测试点的分类

    • 流程类测试点:通过组合,形成一个完整的流程
    • 参数类测试点:参数个数有限,可以遍历覆盖,系统会对不同参数有不同响应
    • 数据类测试点:是一个范围,范围内的响应基本上是一样的
    • 组合类测试点:流程、参数、数据的组合

    流程类测试设计:路径分析法

    • 绘制业务流程图进行建模
    • 对覆盖流程的各个路径进行分析,覆盖方法有:
      • 语句覆盖:所有判定和过程的最小路径集合
      • 分支覆盖:覆盖系统中每个判定的所有分支所需的最小路径数
      • 全覆盖:100%覆盖所有可能的路径
      • 最小线性无关覆盖(常用):每个路径片段至少被执行一次。
        • 线性无关路径(IP) = 边数 - 节点数 + 2 = 判定数 + 1 = 区域数 + 1
    • 确定业务流程的所有子流程。对于每一个子流程,确定测试输入。

    参数类测试设计:输入——输出表分析法

    • 列出相关的参数输入与输出
    • 正常的输入参数/异常与正常的组合
    • 排列组合后,根据业务的约束条件与控制变量法去重,得到输入——输出表
    • 覆盖输入输出表,完成用例

    数据类测试设计:等价类和边界值分析法

    • 等价类:输入值按照测试效果划分,相同效果为一类
    • 边界值:参数输入边界的取值
    • 等价类分析表:在某个条件下,有效与无效输入等价类的表
      • 无效等价类一般针对单个因素
      • 如果部分条件的等价类相似,可考虑合并这些条件。这样的话,某个条件下可测一部分有效/无效等价类,而另一个条件则测另一些有效/无效等价类。

    组合类测试设计:正交分析法

    • 采用因子表建模
      • 有约束关系,考虑拆表
    • 采用PICT工具生成测试用例(pairwise testing)
    • 合并pairwise表,生成用例

    控制用例粒度:测试点的组合与拆分

    • 细粒度能够更加精确发现问题,但是用例数量会过多;粗粒度可以发现产品设计上、原型上的问题,但是可能测不到细节
    • 不同阶段、不同业务功能,采取不同的粒度
    • 策略覆盖:某些因子/数据类测试点在和其他测试点关系较弱的情况下,没有必要使用pairwise正交,可以考虑按比例在测试用例中进行分配
    • 错误推断法:根据经验判断产品在哪些地方会出问题,针对这些问题设计测试用例

    探索式测试

    一边学习、一边设计、一边执行

    CPIE

    • 收集(Collection):收集并理解关于测试对象的信息
    • 划分优先级(Prioritization):对所有需要测试的任务进行优先级划分
    • 分析调研(Investigation):对测试任务仔细分析,预测可能输出的结果
    • 实验(Experimentation):进行测试实验,确认测试结果和预期是否符合,分析是否有必要改变测试策略与方法。若有必要则重新回到收集阶段。

    优点:更快测试,更快寻找到有效测试点,更高效发现缺陷
    缺点:基本测试覆盖易不足,测试点不易复用

    选择合适的探索式测试方法

    • 产品特性分区。根据不同分区,选择不同的探索测试方法
      • 历史区:老代码与特性
        • 恶邻测试法:缺陷多的代码段,需要多花时间
        • 博物馆测试法:老的遗留代码与很久没有执行过的用例需要和新代码有相同的重视程度
        • 上一版本测试法:检查新版本无法运行的测试用例,确保没有遗漏必须功能
      • 商业区:销售特性
        • 指南针测试法:通过阅读用户手册、场景、需求以进行测试
        • 卖点测试法:对吸引用户的特性进行测试
        • 地标测试法:寻找测试点,明确测试项
        • 极限测试法:什么特性能使软件发挥极限?哪些输入会影响软件性能?
        • 快递测试法:专注于数据从输入到输出的执行流程
        • 深夜测试法:测试对象是否能自动完成任务?其中异常是否自动记录?
        • 遍历测试法:选定一个测试目标,用最短路径访问目标包含的所有对象
      • 娱乐区:辅助特性
        • 配角测试法:专注于紧邻主要功能的辅助特性
        • 深巷测试法:把最流行与最不流行的模块放在一起测
        • 通宵测试法:测试软件长时间运行后,各模块是否正常
      • 破旧区:问题高发的特性
        • 破坏测试法:专注缺陷较多的代码段
        • 反叛测试法:输入最不可能的数据
        • 强迫症测试法:强迫一遍又一遍接受同样的数据
      • 旅馆区:平台或维护特性
        • 取消测试法:启动某些操作,然后停止,查看测试对象处理机制与反应
        • 懒汉测试法:让程序自行处理空字段/运行默认值
      • 旅游区:噱头/一次性的特性——快速访问文件之类的各种功能
        • 收藏夹测试法:把软件可达的输出进行遍历与手机
        • 长路径测试法:访问离应用程序开始点尽量远的特性,在到达目的地前尽可能在应用程序内穿行
        • 超模测试法:关心表面的东西(UI显示)
        • 测一送一测试法:测试同一个程序多开的情况
      • 其它区:代码变动、用户不关心但研发关心的内容
        • 内部测试法:收集这个功能哪些部分对确认测试结果、定位问题有用的测试输出,然后关心其效果
        • 变动区测试法:分析版本变化,只针对变化内容测试

    开展探索式测试

    • 确定任务——全局场景、特性漫游与局部功能点探索
    • 根据任务设计探索地图
      • 现在测试什么,接下来测试什么
      • 直接使用测试点测试
      • 根据测试结果调整测试点
      • 设定完成时间
    • 探索式测试总结
      • 哪些方法能够有效发现产品问题
      • 测试过程存在什么不足

    自动化测试

    自动化的不足

    • 成本高(维护、人力与技术)
    • 脚本不一定可靠
      • 脚本难以捕获异常
      • 失败的用例不一定是错误
    • 不能单靠测试解决
      • 需求、UI、命令行需要确定

    评估自动化的收益

    总成本 = 前期开发 + 后期维护成本

    前期开发成本:人力、时间、金钱
    后期维护成本:产品变更、定位/修复自动化运行环境可靠性与代码健壮性,以及其它杂项因素

    自动化测试的收益 = 自动化测试的运行次数

    实施成本计算方式:p = k * n / (c1 + c2)

    • p:成本
    • k:手工执行自动化用例所花费时间成本
    • n:自动化用例执行次数
    • c1:前期成本
    • c2:后期维护成本

    第五章:软件测试架构师的软能力修炼

    沟通和协商

    基本沟通原则:尽早沟通,既要对事,也要对人——换位思考(了解项目各组成员的业务与立场)

    写好测试用例

    测试用例包含:

    • 用例标题(完整的句子,用条件描述)
    • 前置条件
    • 测试数据
    • 测试步骤
    • 预期结果(一种步骤,对应一种结果)

    第六章:如何才能制定好测试策略

    测试策略

    • 测试的对象和范围
    • 测试的目标
    • 测试的重点和难点
    • 测试的深度和广度
    • 如何安排各种测试活动
    • 如何评价测试的效果

    与其它名词的不同:

    • 测试方针:产品测试通用要求、原则与底线
    • 测试计划:测试策略的拆解与时间资源的分配
    • 测试方案:解决在测试设计和执行方面的问题(上面6个)

    四步测试策略制定法

    • 明确产品质量目标
      • 测试目标为满足质量目标
      • 围绕目标进行刚刚好的测试
      • 将目标——行为——评估形成闭环
    • 风险分析
      • 提前识别阻塞测试的风险,基于风险调整测试策略
      • 基于风险加强和降低测试投入
    • 适配产品研发流程
      • 按照研发流程设计测试策略结构
        • 概念阶段(三方)制定总体测试策略
        • 计划阶段制定阶段性测试策略
      • 根据研发流程安排测试活动
    • 测试分层
      • 将大的测试目标,分到不同层次中分阶段完成

    产品质量评估模型

    • 多维度:覆盖质量评估各个维度
    • 定量+定性:指标与分析结合
    • 过程+结果:除了结果还要评估测试过程

    评估维度:

    • 测试覆盖度
      • 需求覆盖度评估
        • 已经验证测试的产品需求数:产品需求规格总数
        • 目标为100%
        • 建立需求表/用例与需求的映射关系
      • 路径覆盖度分析
        • 已经测试的语句数量:程序中可执行语句的总数
        • 语句、分支、全、最小线性无关覆盖
        • 确定覆盖策略,用路径分析法设计用例并跟踪执行
    • 测试过程
      • 测试用例分析
        • 测试用例执行率
          • 已经执行的测试用例数目:测试用例总数
          • 测试阻塞/未执行的测试用例,影响执行率
        • 测试用例执行通过率
          • 测试用例通过:已经执行测试用例数目
        • 测试用例和非测试用例发现缺陷比
          • 非测试用例为发散性的测试,这个比值不能过低,否则用例设计有问题
      • 测试方法分析
        • 分析测试设计和测试方法是否符合
        • 分析测试方法和测试策略是否符合
        • 通过缺陷分析,反推测试方法的可行性
      • 测试投入分析
        • 测试人员安排与投入工作量
    • 缺陷
      • 缺陷密度分析
        • 每千行代码发现的bug数
        • 预测产品的缺陷数,评估当前发现的缺陷是否足够多
      • 缺陷修复情况分析
        • 缺陷修复率:已经修复缺陷:已经发现缺陷
        • 在每个测试分层都要确定缺陷修复率目标
        • 在每个分层结束判断是否能够进入下一阶段测试
        • 如果最终缺陷修复率不能达到预期,理论上不能发布产品
      • 缺陷趋势分析
        • 判断当前系统是否能够很容易地发布缺陷
        • 观察凹凸性和拐点,分析原因
        • 发现缺陷与解决曲线趋势收敛:当前测试方法已经无法有效发信啊问题
      • 缺陷年龄分析
        • 定义:系统产生/引入缺陷的时间
          • 继承/历史遗留:属于历史版本、继承版本或移植代码出现的问题
          • 需求阶段:需求不清、需求错误、系统整体设计的问题
          • 设计阶段:功能接口/交互、边界值/流程/算法设计的问题
          • 编码阶段:流程逻辑、算法、编程规范,接口规范的问题
          • 新需求/变更:新需求或功能实现变更引发
          • 缺陷修改:修改缺陷,引入了新的问题
        • 分析方法
          • 确定缺陷年龄(bugzilla)
          • 统计各类缺陷年龄的数量,绘制缺陷年龄分析图
          • 进行分析。理想情况如下:
            • 在缺陷的引入阶段就能及时发现该类缺陷,不会逃逸到下个阶段
            • 在特定的分层发现该分层的问题
            • 没有继承/历史遗留/新需求/缺陷修改引入的缺陷
      • 缺陷触发因素分析
        • 缺陷触发因素越全面,说明测试方法越多,测试也会越深入
        • 确定缺陷的确实方法和类型,统计缺陷数目,绘制缺陷触发因素柱状图分析

    风险分析技术

    • 分析对象:测试策略
    • 分析目标:识别可能阻塞测试策略顺利进行的问题

    风险识别

    • 分析测试设计关注哪些内容,比如针对某个特性进行测试需要通过路径分析法覆盖,然后需要进行功能交互、压力测试、性能测试等测试手段
    • 分析上述内容保证顺利进行,需要哪些条件,比如文档/沟通顺利、测试人员对场景有深厚理解、能够掌握测试方法等因素
    • 根据缺失的因素,识别风险

    风险评估

    • 风险优先级正交表(风险影响程度 X 风险发生频率)
    • 需求类风险
      • 需求质量不高,不足以支撑后续开发测试
      • 开发测试都未能理解需求
    • 设计类风险
      • 设计正确性与全面性
      • 测试容易发现缺陷吗?开发修复成本大吗?测试回归成本大吗?对用户影响大吗?
    • 风险应对
      • 回避、转移、减轻、改变
    • 老功能分析
      • 差异分析
      • 历史测试情况分析
        • 老功能在新版本质量要求是否提升
        • 老功能缺陷与测试方法分析

    分层测试技术

    V模型

    在这里插入图片描述

    • 单元测试:产品实现函数单元
    • 集成测试:产品模块与功能
    • 系统测试:从系统角度验证功能是否正确
    • 验收测试:从用户角度确认产品是否满足业务需求

    通信公司的分层:

    • 详细设计级
      • 模块级系统测试(MST)
      • 联调(BBIT)
    • 概要设计级
      • 系统设计确认(SDV)
      • 系统集成测试(SIT)
      • 系统验证测试(SVT)

    敏捷环境下的分层:

    • 单元测试
    • 功能测试
    • 非功能测试
    • 探索测试

    第七章:测试策略实战攻略

    开始

    制定测试策略之前,需要进行信息收集,比如:

    • 项目的范围
    • 人力投入
    • 历史情况

    然后采用四步测试策略制定法:

    • 明确产品质量目标
    • 进行风险分析
    • 适配产品开发流程
    • 进行测试分层

    产品分为4个等级:

    • 完全商用:完全满足用户需求,少量或者没有遗留问题,用户使用无限制
    • 受限商用:特性无法满足用户特定场景,有普通以上的遗留问题,但有规避措施
    • 测试、演示或者小范围试用:特性只满足用户部分需求,有严重以上遗留问题,无规避措施(Beta)
    • 不能使用:特性无法满足用户需求,存在严重以上的遗留问题

    对产品每个特性,也根据四个质量等级来划分。将特性的质量目标确定后,就可以进行风险分析
    风险分析后就能够确定测试策略的结构,可以采用总分式

    • 总体测试策略(概念与计划阶段)
    • 阶段测试策略(计划与开发阶段)
    • 测试执行(开发、验证、发布)

    总体测试策略

    对质量目标进行分解,比如:

    • 测试覆盖度
      • 需求覆盖度
      • 路径覆盖度
    • 测试过程
      • 用例执行率
      • 测试用例与非测试用例发现缺陷比
    • 缺陷
      • 密度
      • 修复率

    并为每一个测试分层确定目标,采用老功能分析法对特性进行分类。

    • 哪些特性是新开发的
    • 哪些是从老版本继承的
    • 哪些特性的改动比较大
    • 从老版本继承特性的历史情况

    新特性进行全面测试,老特性对变化的部分进行全面测试,没有变化的可以适量回归+探索

    测试深度和广度

    • 测试深度:测试过程中需要使用的测试方法
    • 测试广度:测试的范围

    通过产品质量评估模型与老功能分析,可以初步确定测试深度:

    • 功能测试(demo只用功能测试即可)
    • 性能测试
    • 可靠性、易用性测试

    老功能分析可以用来确认测试广度:

    • 测试覆盖度、测试过程、缺陷,是否全面测试

    之后根据质量目标与分类,确定测试优先级与总体框架:

    • 策略层:总体、阶段、测试执行策略
    • 活动层:测试分析、设计,单元、集成、系统、验收测试
    • 保证层:需求、开发设计、测试设计review

    阶段测试策略

    采用测试分析设计表保证测试设计符合策略

    • 测试分析准备表
      • 被测对象配置在测试设计中需要考虑哪些测试方法以及功能交互
      • 测试点的考虑:功能、安全、一致性、性能、易用性等
      • 功能交互:安全特性、VLAN
    • 测试类型分析表
      • 对待分析的每一条需求,逐一分析各测试类型下是否有测试点
    • 功能交互分析表
      • 需要进行交互分析的功能与对应测试点的关系

    之后可以对测试用例进行分级

    集成测试

    集成测试位于开发阶段,相当于联调。集成测试是黑盒性质的测试,包括以下几项:

    • 新合入功能是否正确
    • 验证功能集成后系统功能的正确性
    • 确认原来的系统功能没有被新合入的功能破坏

    集成测试的条件(入口准则):

    • 计划的功能开发完成,完成了单元测试
    • 功能集成完成,可测,提供用户的输入输出接口
    • 测试团队做好准备
      • 测试用例已经输出,并通过评审
      • 测试资源已经到位
      • 测试环境已经准备好

    集成测试结束条件(出口准则):

    • 系统需要继承的功能已经全部开放,集成完成
    • 计划执行的测试用例已经完成
    • 缺陷分析的结果符合预期
    • 达到了集成测试阶段的产品质量目标

    系统测试

    系统测试主要是针对全局,而非像集成测试一样针对单个功能

    • 从系统角度验证测试功能的正确性
    • 从系统角度来验证各种非功能的质量的正确性

    入口准则:

    • 集成测试的出口准则
    • 测试团队已经做好准备

    系统测试会对功能、可靠性、性能、易用性等各方面进行测试,不考虑测试执行顺序容易阻塞,需要考虑以下情况:

    • 先进行稳定测试,再进行压力测试,最后进行恢复测试
    • 先进行复杂的、难的测试用例,再进行简单的
    • 将功能测试的测试用例和满规格的测试用例放在一起进行

    出口准则:

    • 计划执行的测试用例都已经完成
    • 缺陷分析的结果符合预期
    • 达到了系统测试阶段产品质量目标

    验收测试

    产品发布前的测试,是对用户需求的确认

    • Alpha测试
      • 由测试人员模拟用户进行的测试,应该是不太了解产品细节,但对用户非常了解的人。Alpha测试需要关注以下的内容:
        • 用户会如何学习产品?产品提供的帮助是否切实?
        • 用户将产品安装在怎样的环境中?升级对用户的影响是否在容忍范围内?
        • 用户环境中哪些业务时需要关注的?不需要关注的业务怎么处理?
        • etc
    • Beta测试
      • 由用户参加的测试,常见有如下两种:
        • 产品正式发布前将产品提前发给用户,收集反馈
        • 产品开发完成后,交由用户对产品进行验收

    验收测试的入口准则:

    • 系统测试的出口准则
    • Alpha测试人员、方案已经选好
    • Beta测试的用户已经确定

    出口准则:

    • 达到产品质量目标

    第八章:版本测试策略和产品质量评估

    版本测试时,应当有一份版本计划与一份测试计划,分别由开发人员和测试人员输出

    • 版本计划
      • 几个build,每个build合成什么功能
    • 测试计划
      • 集成测试、系统测试与验收测试需要测试多少个版本
      • 每个版本的主要测试目标

    版本测试主要工作是指定版本测试策略,然后跟进测试执行并进行评估。

    第一个版本测试策略

    第一个版本策略的制定方式,也可以按照目标——风险——流程——顺序的思路来制定
    当某一个build的提交并不完整的时候,可以根据对测试人员是否可测为基准,进行测试
    对于测试目标,比较好的描述方式是:对某个功能(测试对象),进行哪些测试(测试方法),发现产品哪些方面的缺陷(测试结果)

    每个版本测试策略中,需要注明哪些是重点关注的内容。首先要对提交功能进行分析,提出测试团队重点关注内容,其次要确定版本测试功能优先级表。实际开发过程中,不同功能可能分为不同的提交,因此测试功能的优先级需要实时定制更新,而后在版本策略中向测试团队说明。同时可以对测试用例进行分级,从而更加容易选择测试用例。

    在测试执行顺序方面,可以遵循如下的原则:

    • 质量情况越好,就可以考虑将更多的测试方法组合起来执行
    • 对刚提交的功能,在质量情况不明的情况下,不建议用组合测试法进行测试
    • 先执行高优先级特性的测试用例,先进性复杂的、难的测试用例

    测试的时候会遇到一些全局因素,比如浏览器、测试工具、操作系统等运行环境,需要策略性地进行试探测试。也可在不同配置下,对相同功能进行测试。
    “接收测试”指开发人员将版本转移给测试人员是,测试人员对这个版本进行一次测试,确认没有阻塞问题能够按照测试策略完成测试。有两种结果——通过和不通过,判断标准是是否有阻塞问题。如果不通过,但有规避阻塞地方法,可以继续进行测试。接收测试适合level1的测试用例。

    跟踪测试执行

    跟踪测试执行的目的有3个:

    • 确保测试团队按照测试策略来进行测试
    • 实时关注缺陷,通过缺陷分析来确认测试策略是否合适,是否需要调整
    • 关注项目中的实时风险,基于风险调整测试策略

    要保证测试团队按照测试策略来执行测试,需要保证以下三点:

    • 测试内容和测试策略中确定的范围、深度和广度一致
      • 测试用例和测试策略一致
    • 测试执行的顺序和测试策略一致
      • 测试团队是否按照特性优先级顺序执行测试用例
      • 测试团队是否按照测试策略中的测试方法、测试顺序来执行测试用例
    • 计划测试的内容能够顺利执行
      • 原因:人力不足,时间不够,测试环境不具备,具有其它缺陷
      • 缺陷跟踪
        • 缺陷趋势是否正常
          • 拐点预测:测试方法不同或测试方法不变测试对象不同,不应该出现拐点
          • 判断拐点出现是否过早或者过晚
        • 是否存在因修改引入的缺陷
        • 本版本中必须解决哪一些缺陷:会不会对后续测试造成阻塞,需要保证测试完整性
        • 本版本中需要解决哪一些缺陷:阻塞的、改动大的、涉及需求方案设计的、致命和严重的
      • 调整测试策略
        • 被阻塞的功能较多的话,需要考虑是否提前结束测试
        • 存在阻塞的功能,原计划不在本版本的用例,考虑是否可以调整到本版本中测试
        • 没有阻塞的功能,原计划不在本版本的用例,考虑是否调整到本版本测试
        • 拐点出现太早,说明当前测试方法不能有效发现缺陷,分析是否因测试阻塞造成
        • 一直未出现拐点,说明当前测试方法能够有效发现缺陷,可以在下一阶段开始的1~2个版本中,增加一些和上一阶段测试相关的探索性测试

    版本质量评估

    在进行下个版本测试之前,需要进行版本质量评估
    质量评估的方法:

    • 记录需求和实现的偏差
      • 需求理解方的错误导致实现上的错误(开发与产品理解分歧)
      • 需求没有提交完
      • 记录相关的bug列表,三方讨论
    • 进行测试过程评估
      • 测试方法:总结哪些测试方法比较有效
      • 测试投入
      • 测试用例:是否执行完,通过率是多少(先评估质量指标是否有效),多个版本中执行结果情况如何
        • 某功能通过率不高,说明该功能质量可能不高,需要调整测试策略
        • 项目初期关注首次通过率,其后关注累计通过率
        • 测试用例在多版本执行结果出现反复,有可能因为新功能合入对旧功能造成影响,或者因为缺陷修改引入了新的结果
    • 缺陷分析
      • 功能特性的缺陷密度是否正常
      • 缺陷年龄分析是否正常
        • 缺陷引入阶段实时发现,不能遗留到下个阶段
        • 在特定测试分层发现该层问题
        • 没有继承/历史遗留/新需求变更/缺陷修改引入的缺陷
      • 缺陷触发因素分析是否正常
    • 调整测试策略:如果产生影响最终发布质量的问题,就需要采取措施
    • 建立特性版本质量档案
      • 对当前测试覆盖度方面的记录,包括需求与实现的偏差
      • 测试过程分析记录
      • 缺陷分析

    后面版本测试策略

    • 回归测试
      • 缺陷回归:验证缺陷是否被开发人员修复
        • 功能性缺陷:对缺陷本身与该功能相关交互验证
        • 非功能性缺陷:对缺陷验证,分析缺陷修改是否对功能有影响
        • 底层/中间层缺陷:控制这类缺陷在设计修改和编码上的质量
      • 功能回归:确认老功能不会因新合入功能而失效
        • 新开发功能合入版本后的回归
        • 老功能回归:自动化测试
      • 阶段回归:确认产品当前质量达到该阶段的质量目标
        • 集成测试阶段:验证功能集成后正确性,满足出口条件(level 1级测试用例)
        • 系统测试阶段:对重点功能进行测试
        • 验收测试:对典型场景进行测试
    • 探索式测试
      • 集成阶段中后期逐渐进行探索式测试,对新合入功能进行探索
      • 系统测试阶段,对整个系统重点特性与辅助特性进行深入测试
    • 自动化测试
      • 先对需要多次执行的测试用例进行自动化,优先自动化简单的、可靠的功能

    阶段质量评估

    在每个阶段完成时对整体质量进行评估,判断是否能够达到出口标准,进入下一阶段评估
    质量评估可以按照质量评估模型进行评估,需要持续跟踪测试执行、评估版本与阶段质量。具体工作如下:

    • 确认总体策略中的质量目标是否完成
      • 对总体质量目标进行分解,为每个测试分层确定质量目标
      • 如果质量红线(重要目标)没有达成,就不能进入下一阶段测试或发布
      • 如果一般性目标没有达成,且没有应对措施,也不能进入下一阶段测试或发布
    • 重要的质量目标(质量红线)
      • 需求覆盖度、测试用例执行率、测试用例累计执行通过率、缺陷修复率
    • 对未达到的一般性质量目标制定应对措施
      • 非测试用例发现缺陷:寻找测试设计中的问题,改进设计,进行探索式测试
        • 产品实现/功能交互/边界值异常分支未考虑/测试场景未考虑
      • 组合缺陷分析:将缺陷分析方法进行组合
        • 缺陷密度过高,可以分析缺陷触发因素。是否采用了更多的测试方法?是否有遗留较多的缺陷?如果缺陷趋势收敛,修复率达标,可以进入下一阶段的测试。
      • 遗留缺陷:制定规避措施
        • 在版本计划发布前几个版本就开始进行,需要评估缺陷对用户影响程度、发生概率
        • 致命缺陷/没有规避措施严重缺陷,不应该遗留
        • 非必然重现bug,需要提单做问题记录,跟踪周期可以延长,可以适当降低问题优先级。
    展开全文
    u013842501 2021-10-04 16:12:34
  • 第一部分 瓶颈:软件测试工程师该如何进行职业规划第1章 软件测试工程师的“三年痒”1.1 软件测试发展简史:调试--证实--证伪--预防--模型--全周期;1.2 中国的软件测试行业:起点高;困境和迷局(不了解、不理解...
    第一部分 瓶颈:软件测试工程师该如何进行职业规划

    第1章 软件测试工程师的“三年之痒”
    1.1 软件测试发展简史:调试--证实--证伪--预防--模型--全周期;
    1.2 中国的软件测试行业:起点高;困境和迷局(不了解、不理解、外包);迷茫(门槛低、深入难)
    1.3 认识软件测试的优势和劣势:优势是入门容易、理解产品、理解用户、多面手;劣势是认可度低、发展受限;
    第2章 软件测试工程师的职业规划
    2.1 软件测试的职业发展方向:管理(初级管理者、中级管理者、高级管理者);技术(产品测试专家、专项测试工程师);角色和段位;质量领域发展(产品流程设计、企业质量管理者、客户满意度管理专家);
    2.2 软件测试工程师的职业规划建议:技术或管理;跳槽的建议;软件测试创业;

    第二部分 突破:向 软件测试架构师的目标迈进

    软件测试是一门结合产品领域、管理、心理学和经济学等综合性的技艺。软件架构师的精髓在于找到最适合的软件测试技术,且不断的持续改进。
    第3章 软件测试架构师应该和不应该做的事情
    3.1 软件测试架构师需要关注和不关注的事情
    需求分析:理解商业目标;梳理用户场景;输出总体策略(详见7.1-7.3);
    测试分析和设计:制定阶段策略(详见7.4);落实策略,保证质量;
    测试执行:执行版本策略(详见8.1-8.2,8.4);跟踪执行(详见8.3);质量评估(详见6.3,8.4);
    质量评估:阶段/发布质量评估(详见8.6);
    3.2 像软件测试架构师一样的思考:目标、范围、深度广度、重点难点、如何测试、如何评估;
    3.3 软件测试经理可以替代软件测试架构师吗:合作互补;
    3.4 系统架构师可以替代软件测试架构师吗:协作配合;
    第4章 软件测试架构师的知识能力模型
    测试技术(软件产品质量模型、测试类型、测试方法、测试设计、探索式测试、自动化测试)+产品知识、沟通协调、书面表达
    4.1 软件产品质量模型:六类属性(功能性、可靠性、易用性、效率、可维护性和可移植性);
    功能性:软件产品在指定条件下使用时,提供满足 明确隐含要求的功能的能力;5个子属性(适合性、准确性、互操作性、安全性、功能顺从性);
    可靠性:特定条件下使用时,软件产品维持规定的性能级别的能力;4个子属性(成熟性、容错性、可恢复性、可靠性顺从性);
    易用性:产品被用户理解、学习、使用和吸引用户的能力;5个子属性(易理解性、易学性、易操作性、吸引性、依从性)
    效率:相对于所用的资源数量,软件产品可提供适当的性能的能力,也就是我们常说的产品性能;3个子属性(时间特性、资源利用率、效率依从性);
    可维护性:软件产品可被修改的能力;5个子属性(可分析性、可修改性、稳定性、可测试性、依从性);
    可移植性:软件产品从一种环境迁移到另外一种环境的能力,环境可以指硬件、软件或组织等;5个子属性(适应性、可安装性、共存性、易替换性、依从性);
    4.2 测试类型:测试需要考虑的不同角度(功能测试、安全性测试、兼容性测试、配置测试、可靠性测试、易用性测试、性能测试、安装测试等);
    4.3 测试方法
    1、产品测试 车轮图:一个软件测试者要从哪些方面(测试类型)用哪些方法(测试方法)去测试产品(质量属性)的关系图;产品测试两个关键问题,分别是全面性和深度;
    2、 功能测试方法:运行是指软件测试中,测试人员模拟用户的“操作”或“行为”;
    单运行正常值输入法:系统允许的“正常值”的测试方法;
    单运行边界值输入法:测试系统的“边界值”的测试方法;
    多运行顺序执行法:按照一定顺序来进行多个运行操作的测试方法;
    多运行相互作用法:多个存在相互关系的运行组合在一起进行测试;
    3、 可靠性测试方法
    异常值输入法:测试系统容错性,基本可靠性测试方法(系统正常,输入异常);
    故障植入法:把系统放在有问题环境中进行测试的一种可靠性测试方法(系统异常-故障模拟,正常输入);
    稳定性测试法:长时间、大容量运行某种业务,测试系统的成熟性;性能测试是测试真实规格是否与承诺规格一致,稳定性测试是低于性能值前提下测试,压力测试是在高于性能值的前提下测试;四字要诀,多(数量)、并(并发)、复(反复)、异(异常);
    压力测试法:超过系统规格的负载进行测试的一种可靠性测试方法;突发负载模型(希望系统正常)、持续负载模型(系统可能打死);
    恢复测试法:使用超过规格的负载测试、再将负载降到规格以内的测试方法;普通版(高-低)、加强版(高-低-高-低...);测试系统的可恢复性;
    4、 性能测试方法:真实规格与承诺规格是否一致;除确认规格之外,还希望发现系统的瓶颈;
    测试出系统最好的性能值:正确处理新业务的最大能力;同时正确处理的最大业务能力;
    分析会影响性能值的各种因素,测试他们对性能的影响:影响因素、影响趋势、最坏值;
    以场景为单位来测试性能:评估产品在用户使用环境中的性能表现,更有实际意义;
    5、 易用性测试法:用户理解、使用产品时对产品的能力;
    一致性测试法:测试对象是用户界面,测试风格、布局、元素、提示等;目的是证实;
    可用性测试法:测试对象是用户界面,是否易于理解、使用,需要与功能测试结合,以场景作为测试粒度,以用户视角进行测试;推荐交叉测试法;
    4.4 测试设计技术
    1、测试点 不等于测试用例
    测试用例是一份真正能够指导测试的测试说明书;
    2、 四步测试设计法
    测试分析是发现性过程,测试设计是创造性过程;
    第一步: 建模
    类型1:流程类,绘制“流程图”来建立测试模型;
    类型2:参数类,绘制“输入输出表”来建立测试模型;
    类型3:数据类,绘制“等价类分析表”来建立测试模型;
    类型4:组合类,绘制“因子表”来建立测试模型;
    第二步: 设计基础测试用例;
    基础测试用例只确定了测试条件;
    第三步: 补充测试数据;
    为基础测试用例确定测试输入,补充测试数据;
    第四步: 扩展
    根据经验,补充用例,增加有效性;
    3、对测试点进行 分类
    流程类特征:输入的不同进行不同的处理;
    参数类特征:参数值是有限的,系统会对不同的参数值作出不同的处理或响应;
    数据类特征:数据取值是一个范围,系统对允许输入数据作出的处理或响应往往是一样的;
    组合类特征:流程、参数、数据的组合;
    4、 流程类测试设计:路径分析法;
    绘制流程图-使用路径分析法(语句覆盖、分支覆盖、全覆盖、最小线性无关覆盖(有两条出边是必要条件,为判定数+1))得到测试条件-使用等价类或边界值等技术确定测试条件-其它需要考虑的;
    5、 参数类测试设计:输入输出分析法
    使用“输入-输出表”-100%覆盖“输入输出表”-其它需要考虑的;
    6、 数据类测试设计:等价类和边界值分析法
    使用“等价类分析表”-使用“边界值”来为“等价类分析表”确定测试数据-其它需要考虑的;
    7、 组合类测试设计:正交分析法
    使用“因子表”-使用“正交分析法”来生成测试用例-其它需要考虑的
    8、 控制用例粒度:测试点的 组合和拆分
    控制用例粒度,是测试设计中非常重要的一项工作。
    第一:我们希望整个团队测试用例的总数维持在一个比较合理的范围内,同时达到测试验证产品的效果,需要我们控制测试用例的 源头(测试点),不要过粗或者过细。
    第二:不同的用例粒度,可能会发现产品 不同层次的问题(细粒度用例可能更容易发现功能设计和实现方面问题,粗粒度用例可能更容易从系统角度去发现问题),所以我们不同的测试阶段,对测试点进行拆分和组合,不同层次去测试产品,发现问题。
    还有一种控制测试用例粒度的方法,就是 策略覆盖,执行的过程中需要考虑内容的重要性和测试执行的便利性。
    9、 错误推断
    错误推断法是一种基于 经验的测试设计方法。用到四步测试设计中第四步,作为经验 补充的测试用例,是一个比较推荐的方法。错误推断法中的经验,主要源于对产品缺陷的 分析。定期组织分析活动,分享经验,拓展思路。
    4.5 探索式测试
    探索式测试非常注重测试思维。
    1、探索式测试的 基本思想:CPIE模型;收集C-划分优先级P-分析调研I-实验E;与传统测试相比,探索式测试弱化了流程,强调实践,边学边测,持续改进;优势是快速测试,高效发现产品缺陷,缺点是容易将焦点集中在缺陷发现而偏离对需求的验证,对基本测试覆盖不足,测试点不易复用,不易积累;
    2、 选择合适的探索式测试方法:第一步,对产品的特性进行 分区;第二步,根据不同分区选择适合的探索式测试方法;
    历史区测试法:老代码,包含修复已知缺陷的代码,多一些时间测试曾经有很多缺陷的代码是特别重要的;包含恶邻测试法(缺陷横行的代码段)、博物馆测试法(老的可执行文件和遗留代码)、上一版本测试法(运行先前版本支持的所有场景和测试用例);
    商业区测试法:销售特性,产品的重要功能和特性,测试的重点测试对象;包含指南针测试法(手册、场景及产品需求)、卖点测试法(吸引用户的特征)、地标测试法(寻找测试点,明确测试项)、极限测试法(向软件提出很多难以回答的问题)、快递测试法(专注于数据)、深夜测试法(不操作时,查看自处理情况)、遍历测试法(最短路径访问对象);
    娱乐区测试法:针对辅助特性,不那么重要的特性;
    配角测试法(特定特征,紧邻主要功能)、深巷测试法(最不吸引人的特性,或最流行、最不流行混着测)、通宵测试法(长时间运行)
    破旧区测试法:问题高发特性,测试思想就是继续“落井下石”;
    破坏测试法(缺陷横行的代码段)、反叛测试法(输入最不可能的数据)、强迫症测试法(强迫一遍又一遍接受同样的数据);
    旅馆区测试法:平台或维护特性,被忽视或者少描述的次要及辅助功能;
    取消测试法(启动相关操作,然后停止,查看处理反应)、懒汉测试法(自行处理空字段及默认值);
    旅游区测试法:针对的是噱头特性,关注如何快速访问文件的各个功能,目的是到此一游;
    收藏家测试法(通过测试收集软件的输出,将那些可以到达的地方都到达一遍)、长路径测试法(访问离应用程序某个开始点尽可能远的特性)、超模测试法(关心表面的东西,只测试界面)、测一送一测试法(同时处理多个功能时,能否正常)
    其他区测试法:无法归类的区域,如产品的可测试性、可维护性等;
    内部测试法(需要进行某项功能测试之前完成,收集那些部分对确认测试结果、定位问题有用的内部输出)、变动区测试法(分析当前版本与之前版本内容的变化,针对变化内容进行测试)
    3、 开展探索式测试:
    3.1、确定探索式测试任务:确认任务范围,三种思路(全局场景探索、特性漫游探索、局部功能点探索);确定范围后,确定测试方法;
    3.2、设计探索地图并执行探索式测试:根据被测对象特点,使用测试方法分析得到测试点,然后执行测试,并记录结果;使用探索式测试是能够直接用测试点来进行产品测试的,也是其速度快、效果高的优势所在;测试过程中可以灵活实时调整测试策略;
    3.3、探索式测试总结:哪些方法可以更有效发现产品问题;本次探索测试中的教训;
    4.6 自动化测试
    用好已有的自动化、根据产品测试需求向自动化团队提出合适的自动化需求;
    1、需要知道的一些自动化测试真相
    自动化并不廉价,相反,自动化很贵(时间人力技术成本);自动化脚本往往没有想象中那么可靠(意外发现的缺陷,自动化可能都不会发现;自动化本身可能不可靠);自动化测试不是单靠自测就能搞定的事情(需求要确定清楚,UI或命令行也需要尽早确定,测试用例也要尽快写出来);
    2、如何评估自动化的收益
    自动化测试的实施成本(前期开发成本+后期维护成本);自动化测试的运行次数(优先选择真正需要多次执行的测试用例);自动化测试实施成本比;
    3、自动化测试工具介绍
    单元测试工具、UI测试工具、性能测试工具;
    第5章 软件测试架构师的软能力修炼
    除了硬能力之外,也需要一些软能力。
    5.1 沟通和协商
    产品测试中的沟通原则:1、尽早沟通(帮助我们预防分歧);2、既要对事,也要对人(对人强调的是理解沟通对象,换位思考);
    通过沟通来获得对产品测试有用的信息:1、以测试的视角来读需求、设计文档,来准备沟通的问题(测试的视角,是否可测?怎么测试?怎样才算验证通过?);2、以需求工程师或开发的视角来问问题(沟通是相互启发的过程);3、总结、跟踪和确认;
    和测试团队成员沟通:主动进行反复的沟通(简介-讲解-举例-总结);和领导或投资决策者沟通(更关心:产品测试结果和产品的质量评估结论;重要BUG;重要风险;进度);
    5.2 写出漂亮的测试用例
    测试用例 模板:测试用例编号、用例标题、预置条件、测试数据、测试步骤、预期结果;合理控制用例的粒度;
    测试用例标题要是一个 完整的句子:状语,主语,谓语,宾语,补语(可选);
    条件而不是参数来描述测试用例标题:参数更适合在测试用例模板中的测试数据部分体现;
    如果一个用例中包含 多个参数,用例中应该是每个参数的取值;
    不要在测试用例中 引用别的测试 用例
    避免测试用例中 包含过多的 用户接口细节:用例执行者是专业人士,用例不必写的面面俱到;
    明确测试步骤和预期结果的 对应关系:增加简单的标记(如check[])来明确对应关系;
    避免在测试步骤中使用 笼统的词:避免反复、长时间、大量等描述,应该明确;

    第三部分 修炼:软件测试架构师的核心技能

    第6章 如何才能制定好测试策略
    制定测试策略是软件测试架构师最核心的技能。
    6.1 理解测试策略
    1、什么是测试策略?通俗说,就是测啥咋测;具体说,有测试对象范围、测试目标、测试重点难点、测试深度广度、如何安排测试、如何评价测试;
    2、测试策略等于测试方针?测试方针是产品测试中的通用要求、原则或底线;遵循的测试方针+项目实际情况=测试策略;
    3、测试策略等于测试计划?测试计划属于测试管理的范畴,测试策略属于测试技术的范畴;
    4、测试策略等于测试方案?测试方案主要解决的是特性在测试设计和测试执行方面的问题;测试方案需要遵循测试策略;
    6.2 四步测试策略制定法
    1、明确产品 质量目标:我们的测试目标就是让产品在发布的时候能够满足事先约定的质量目标(详见6.3节);围绕产品质量目标进行刚刚好的测试;将目标-行为-评估形成闭环(详见第8章);
    2、进行 风险分析:提前识别项目中可能存在阻塞测试的风险,然后基于风险调整测试策略;基于风险来加强和降低测试投入;
    3、 适配产品 开发流程:测试策略的结构;根据研发流程来安排测试活动;
    4、进行 测试分层:通过测试分层,能够将大的目标分到不同层次中阶段完成,合理的测试分层,能够让测试目标SMART化;
    5、 四步测试策略制定法中的测试技术;
    6.3 产品质量评估模型
    产品质量评估模型将用在测试目标的确定和评估上,它是整个测试策略的基础。
    优秀的产品质量过程评估模型的特征:多维度(覆盖各个维度,全面分析和考虑);定量和定性(指标和分析结合);过程+结果(还需分析评估);
    软件产品质量评估模型:测试覆盖度分析(需求覆盖度评估、路径覆盖度分析);测试过程分析(测试用例分析、测试方法分析、测试投入分析);缺陷分析(缺陷密度分析、缺陷修复情况分析、缺陷趋势分析、缺陷年龄分析、缺陷触发因素分析);
    6.4 测试覆盖度评估
    需求覆盖度评估:“已经测试验证的产品需求数”与“产品需求规格总数”的比值;两种方法:1、直接在需求表中确认测试情况;2、建立测试用例和需求的对应关系(注意需求变化的部分,设计遗漏可能会影响需求覆盖评估;本方法最好有工具支持);
    路径覆盖度分析:“已经测试到的语句的数量”与“程序中可执行语句的数量”的比值;三步分析法,1、确定路径覆盖策略;2、使用路径分析法设计测试用例;3、跟踪测试用例执行情况;
    6.5 测试过程评估
    分析的对象是测试用例、测试方法和测试投入;
    测试 用例评估:测试用例执行率;测试用例执行通过率(首次执行通过率、累积执行通过率);测试用例和非测试用例发现缺陷比;
    测试 方法分析:只按照测试策略来确定要使用的测试方法--分析测试设计是否和测试策略中的测试方法符合--分析测试执行时的测试方法是否符合测试策略--通过缺陷分析来确定测试策略是否需要调整;
    测试 投入分析;
    6.6 缺陷分析
    缺陷 密度:每千行代码发现的缺陷数;缺陷密度可以预测产品中有多少缺陷,帮助我们评估当前以及发现的缺陷总数是否足够多;
    缺陷 修复率:指产品“已经修复的缺陷总数”与“已经发现的缺陷总数”的比值;缺陷修复率能够帮助我们确定当前产品发现的缺陷是否被有效修复,为当前的产品质量是否达到测试质量目标提供最直接的判断依据;为保证重要缺陷优先修复,我们按照不同的缺陷严重程度确定缺陷修复;
    缺陷 趋势分析:指随着时间的进行,测试发现的缺陷趋势和开发解决缺陷的趋势;能够帮助我们判断当前系统是否还能容易地发现缺陷,进而帮我们确定是否可以退出测试;1、绘制缺陷趋势图(累积发现的缺陷数、新发现的缺陷数、累积解决的缺陷数、当前解决的缺陷数);2、缺陷趋势曲线的“凹凸性”和“拐点”(理想的趋势曲线;趋势曲线拐点出现的过早;趋势曲线拐点未出现);3、缺陷是否收敛(两个条件:趋势曲线变为凸函数;累积发现和累积解决两曲线越来越靠近);缺陷年龄分析:软件产生或引入缺陷的时间(继承或遗留、需求阶段、设计阶段、编码引入、新需求或变更引入、缺陷修复引入);三步走展开年龄分析活动;第一步:确定缺陷的缺陷年龄;第二步:统计各类缺陷年龄的数量,绘制分体图;第三步:进行缺陷年龄分析(理想的年龄分析图;没有在特定的测试层次发现该层的缺陷;继承或历史遗留引入缺陷过多;新需求或变更引入的缺陷过多;缺陷修改引入缺陷过多);
    缺陷触发因素分析:对测试中使用的测试方法进行分析;三步走:确定缺陷的测试方法和测试类型;统计出各种测试方法发现的缺陷数目,绘制缺陷触发因素分析图(有些方法没有发现缺陷或者发现的少;有些方法发现的特别多;);
    组合使用各种缺陷分析技术:进行缺陷分析,并不满足只对产品质量的某一个方面进行评估,需要我们组合使用这些缺陷分析技术;
    6.7 风险分析技术
    涉及的技术主要有风险识别,风险评估,风险应对和老功能分析;
    1、风险 分析:风险分析的对象是测试策略;
    风险识别:三步走;第一步,分析该项测试活动需要关注哪些内容;第二步,分析上述内容都能够进行保质保量顺利进行的条件;第三步,逐一分析这些条件是否能够满足;
    风险评估:确定风险的优先级;风险优先级正交表、需求类风险、设计类风险、流程类风险、历史类风险;
    2、风险 应对:回避风险、转移风险、减轻风险、接受风险;
    3、 老功能分析:差异性分析(老功能在新版本和老版本上的差异,找差异是新版本中做好老功能测试的金钥匙);历史测试情况分析(确认老功能在新版本和老版本中的质量要求是否一致;进行测试方法分析;进行缺陷分析;对组织和人进行分析);
    6.8 分层测试技术
    V模型:单元测试、集成测试、系统测试、验收测试;
    设计测试分层:1、某通信公司测试分层;单元测试、MST(模块级)-BBIT(单元/模块接口)测试、SDV(系统设计)-SIT(系统集成)-SVT(吸引验证)测试、验收测试;2、某公司敏捷测试分层;单元测试、功能测试、非功能测试、探索测试;
    第7章 测试策略实战攻略
    测试策略实战,运用第6章思路和方法;
    7.1 开始
    收集了解项目信息:项目范围、人力投入、历史情况、产品背景、用户市场等;
    7.2 初次使用“四步测试策略制定法”
    1、产品质量等级(第1级完全商用;第2级受限商用;第3级测试;第4级不能使用);
    2、确定项目中各个特性的质量等级(逐一确定项目包含特性的产品质量等级);
    3、对项目整体进行风险分析(项目整体角度进行分析);
    4、确定测试策略的结构(总体策略、阶段策略、执行策略);
    5、初步确定测试分层;
    6、回顾(四步走;质量分析;风险分析;总体、阶段、执行策略;单元、集成、系统、验收);
    7.3 制定总体测试策略
    1、分解产品 质量目标:根据质量等级来分解产品的质量目标;为每个测试分层确定测试目标;
    2、使用 老功能分析法来对特性进行分类:全新特性;老特性变化;老特性加强;老特性无变化;
    3、基于 质量和风险来确定测试深度和测试广度(深度指使用的测试方法,广度指测试的范围):使用产品质量评估模型初步确认测试深度;考虑用老功能分析更新测试深度;基于老功能分析来初步确定测试广度;
    4、确定测试 优先级:质量等级越高,优先级越高;相同质量等级下,全新特性比老特性优先级高;改动越多的老特性,优先级越高;根据优先级等级,制定测试投入策略;
    5、确定测试 总体框架:三个层次,分别是策略层(类似大脑,负责指挥)、活动层(类似身体,负责执行)、保证层(类似五官,负责保证);
    6、回顾:总体测试策略输出的就是 两张表(总体测试策略分析表,测试投入策略表)和 一幅图(测试总体框架);
    7.4 制定阶段测试策略
    阶段测试策略向上能够承接总体测试策略,向下能够指导后面的测试执行;
    1、测试 设计策略:按照测试深度来进行测试设计,然后执行测试用例,达到执行的目的;
    1.1、使用“测试分析设计表”来保证测试设计符合测试策略(包含3个表,分别是测试分析准备表、测试类型分析表(列为需求,行为测试类型)、功能交互分析表);
    1.2、四步测试设计法和测试广度:参见4.4,输出测试用例;
    1.3、测试用例等级:测试用例分级会为后面进行的分层测试、回归测试、验收测试和自动化测试在如何选择用例方面提供方便;
    2、 集成测试策略:俄罗斯方块心项目的集成开发;集成测试的对象和测试目标(新合入功能是否正确;功能集成后系统功能正确性;原来的系统功能没有被合入的功能破坏);入口准则--何时开始(用例输出且评审完毕;测试资源到位;测试环境就位);测试用例选择(功能:级别1;新功能集成:级别2和部分级别3;确认原系统:级别1);出口准则(集成功能开放、集成完成;测试用例执行完成;缺陷分析符合预期;达到集成测试质量目标);
    3、 系统测试策略:系统测试的对象和测试目标(系统角度验证测试功能的正确性;系统角度验证各种非功能质量的正确性);入口准则--何时开展(集成测试出口、测试准备到位);测试用例选择(功能测试:级别1和部分级别2;非功能:级别3和级别4);测试执行顺序(考虑以下:有些测试方法本来就需要满足一定条件;先进行复杂的,再进行简单的;组合多种测试方法);出口准则(达到目标);
    4、 验收测试策略:Alpha测试(谁来执行(测试人员模拟用户进行测试,了解用户的人及测试组员交叉测试是不错选择)、测试策略(用户学习产品、产品资料、安装部署、升级、移除、上下游设备、业务、故障、管理配置、日志报表等运维功能));Beat测试,用户参加的测试;入口准则--何时开始(系统测试出口,Alpha测试人员及方案已经确认,Beat测试用户已经确定);出口准则--何时推出,发布产品(达到总体策略中产品质量目标);
    5、回顾:确定了测试设计策略;确定了各个测试阶段的测试策略;
    第8章 版本测试策略和产品质量评估
    项目开始进入测试执行阶段,测试架构师也要进入执行测试策略的工作中了;
    8.1 开始
    测试阶段的工作,主要是围绕:制定版本测试策略,跟踪测试执行,质量评估;
    8.2 第一个版本测试策略
    1、测试范围以及和计划相比的偏差:实际提交的功能和设计不符时,如果相关功能对测试人员而言不可测,则不接收测试;反之,接收测试;
    2、本版本的测试目标:以测试对象--测试方法--测试结果这样的方式来描述测试目标,好处是强调了基本测试要求,比数字指标容易理解和执行;
    3、需要重点关注的内容:首先,对提交的功能,提出团队重点关注内容;其次,确定测试的优先级表;
    4、测试用例的选择:根据测试用例等级,选择测试用例就简单多了;
    5、测试执行顺序:质量情况好,可以考虑更多的测试方法组合起来执行;刚提交的功能,质量不好或不明时,不建议组合测试;
    6、试探性的测试策略--需要大家分工合作的地方:全局因素工作量大,可以进行试探测试;一些全局性配置,也可以使用这样的策略;
    7、接收测试策略:开发将版本交由测试人员时,测试人员先进行一次测试,确认版本没有阻塞性问题;如果阻塞可以规避,建议继续测试;
    8、回顾:测试范围及计划偏差、测试目标、重点内容、用例选择、执行顺序、试探性测试、接收测试;
    8.3 跟踪测试执行
    跟踪的目的有三个:确保测试团队按照测试策略来执行;实时关注缺陷,通过缺陷分析评估策略是否适合,是否需要调整;关注项目风险,基于风险调整策略;
    1、跟踪测试 用例执行情况:
    1.1、测试团队的测试执行顺序是否和测试策略相符(测试团队是否按照特性优先级顺序来执行测试用例;测试团队是否按照测试策略中的测试方法、测试顺序来进行测试;);
    1.2、被阻塞的测试用例(测试人力不足、测试时间不够、测试环境不具备、其他缺陷导致);
    2、 每日跟踪缺陷:缺陷的趋势是否正常、是否存在引入缺陷修改引入的缺陷、本版本必须解决的缺陷、本版本需要解决的缺陷;
    2.1、哪些缺陷必须在本版本中解决:标准只有一个,就是会不会对后续的测试造成阻塞;
    2.2、哪些缺陷需要在本版本中解决:我们希望在本版本中修复的缺陷;优先解决的缺陷类型:
    缺陷的改动越大,越需要尽早解决;缺陷涉及需求、方案、涉及,需尽早解决;优先解决严重程度为致命和严重的缺陷;
    2.3、缺陷趋势是否正常:预估拐点会在哪个版本出现;判断当前版本的缺陷趋势是否正常;
    2.4、是否存在缺陷修改引入缺陷的问题;
    3、 调整测试策略:
    发现测试情况与测试策略不符时,需要调整测试策略;如下调整思路:
    被阻塞的测试用例是属于几个功能,还是很多功能;存在阻塞的功能,原计划不在本版本中执行的用例,是否可以调整到本版本;没有阻塞的功能,原计划不在本版本执行的用例,是否可以调整到本版本中测试;
    在缺陷跟踪的时候,发现趋势不符合预期;如果拐点出现的太早,当前测试方法已经不能有效发现缺陷,需要分析原因,调整策略;如果一直未出现拐点,当前测试还能有效发现缺陷,根据项目情况进行调整;
    8.4 版本质量评估
    1、使用软件产品质量评估模型来进行质量评估:
    1.1、在版本质量评估中记录需求和实现的偏差:由开发人员提供的实际提交的功能和需求的偏差;在测试过程发现的实际功能和需求的偏差(与此有关的BUG列表;开发人员、测试人员和SE需求澄清进展、结论及后续进展);
    1.2、在版本质量评估中进行测试过程评估:测试用例通过率(首次执行通过率、累积执行通过率);测试用例在多个版本中的测试结果(出现反复,可能存在隐患,需要根因分析);
    1.3、在版本质量评估中进行缺陷分析;
    2、版本质量评估中的缺陷分析;
    2.1、版本缺陷密度评估;
    2.2、版本缺陷年龄分析;
    2.3、版本缺陷触发因素分析;
    3、调整测试策略:评估发现可能会影响最终发布的质量问题,需要采取相应的措施;
    4、建立特性版本质量档案:至少包括当前测试覆盖度方面的记录、测试过程的分析和记录、缺陷分析;
    8.5 后面的版本测试策略
    进入下一个循环;
    1、 回归测试策略:是一种确认性质的测试;测试目标有缺陷回归、功能回归、阶段回归;
    1.1、缺陷验证策略:确认缺陷被开发人员正确修复了;
    1.2、功能回归策略:确认老功能不会因为新合入的功能而失效;新功能回归测试、老功能回归测试;
    1.3、阶段回归策略:确认产品当前的质量达到该阶段的质量目标;集成测试阶段回归测试、系统测试阶段回归测试、验收测试阶段回归测试;
    2、 探索式测试策略:将它与传统测试结合起来;
    2.1、将探索式测试和传统测试结合起来:先进行传统测试,再进行探索测试;
    2.2、探索式测试方法的选择策略:集成测试时,先使用商业区测试法和娱乐区测试法,再使用历史区测试法和破旧区测试法;系统测试时,先使用历史区测试法和破旧区测试法,再使用商业区测试法和娱乐区测试法,最后使用旅馆区测试法和旅游区测试法;
    2.3、探索式测试策略在版本策略中:确认范围;根据当前阶段确认主要的探索式测试方法;输出探索式测试任务;
    3、 自动化测试策略:主要的还是放在回归测试,如功能回归和BUG回归;需要我们先对需要多次执行的测试用例进行自动化、优先自动化简单的可靠的功能;
    3.1、确定自动化脚本编写的优先级:优先级高的优先实现;优先级一样的,优先实现简单的可靠性高的;
    3.2、自动化开发和测试如何与测试项目配合;
    3.3、关于自动化率;
    3.4、鼓励通过脚本来解决测试中的实际问题;
    4、回顾:形成了版本测试策略关注的所有内容;
    8.6 阶段质量评估(包括发布质量评估)
    每个阶段即将完成时,进行一轮整体性评估,判断是否满足出口标准;
    1、阶段质量评估项目:
    1.1、确认总体测试策略中的质量目标是否完成:发现质量红线未达到;一般质量目标未达到;
    1.2、质量的重要目标(质量红线);
    1.3、对未达到的一般性质量目标制定应对措施:非测试用例发现缺陷的原因分析;组合缺陷分析;
    1.4、遗留缺陷分析;
    2、非测试用例发现缺陷的原因分析:原因分析可以在整个测试团队进行;
    3、组合缺陷分析:一般性的质量目标问题,需要组合分析,系统角度整体评估问题影响;
    4、遗留缺陷分析:版本发布时不准备修复的缺陷;
    4.1、缺陷对用户的影响程度;
    4.2、缺陷发生的概率:用户环境中发生的概率;
    4.3、缺陷风险评估和规避措施;
    4.4、不能遗留的缺陷:致命缺陷、没有规避措施的严重缺陷不应该遗留;
    4.5、缺陷遗留列表:作为讨论和发布的材料;
    5、临近发布时的缺陷修复策略:缺陷遗留标准可能有差异;发布临近,严控缺陷修复的数量;
    6、非必然重现BUG的处理:需要跟踪和处理;
    7、总结:发布阶段,质量评估并给出评估结论是一项重要的工作;保证产品能够按时按质按量发布;贯穿测试项目始终的活动;
    展开全文
    zimingzim 2018-04-30 14:07:50
  • 我之前一直在思考,产品和测试到底是什么...最近在看了这本书之后,关于这块有了更深入的理解和方法论,对于测试架构师来说,出了产品测试技术之外,还需要更深入的了解产品的价值,要围绕着如何让产品成功去做测...

    我之前一直在思考,产品和测试到底是什么关系,前两年我们企业处在野蛮式的增长的时候,那时候为了进度放弃了很多的测试要求,甚至没有测试,我当时就很困惑,虽然那时候我还没有带测试团队,测试人员更加困惑了,降低测试要求其实对于测试人员来说是很痛苦的。

    最近在看了这本书之后,关于这块有了更深入的理解和方法论,对于测试架构师来说,出了产品测试技术之外,还需要更深入的了解产品的价值,要围绕着如何让产品成功去做测试策略,学会取舍,而不能只站在测试技术的角度去做策略。只有产品成功了,产品测试才有资格去谈是否成功。失败的产品,测试得再好,又有什么用呢?

    因此,测试需要把好最后一关,但是测试架构师需要学会取舍之道。

    展开全文
    wgh1015398431 2019-12-06 21:23:40
  • harry_helei 2021-08-19 16:17:04
  • lupa1521 2019-06-18 09:32:03
  • baidu_36943075 2019-07-17 19:12:54
  • hetao940527 2021-09-13 08:59:56
  • zimingzim 2018-04-27 21:52:18
  • xiaofang2015 2018-06-27 14:35:56
  • weixin_30455023 2013-10-16 20:35:00
  • 1.65MB m0_52957036 2020-07-22 08:02:14
  • harry_helei 2021-08-18 15:06:46
  • weixin_34210740 2017-04-17 22:59:00
  • weixin_45813589 2021-07-04 15:23:14
  • harry_helei 2021-08-24 09:18:03
  • wgh1015398431 2019-12-06 20:10:33
  • 890KB m0_52957036 2020-09-02 08:04:16
  • 王勇 2019-12-25 11:31:14
  • wgh1015398431 2019-12-06 20:01:17
  • sundaytian 2018-07-11 16:57:28
  • yy448671246 2019-07-22 11:42:00
  • harry_helei 2021-08-23 10:29:39
  • qq_23306363 2020-02-18 22:00:51
  • harry_helei 2021-08-25 09:00:43
  • qq_23306363 2020-02-23 20:21:18

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,712
精华内容 3,484
关键字:

架构师修炼之道