测试架构师需要关注和不需要关注的事情——测试架构师修炼之道(06)

发表于:2022-2-16 09:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:刘琛梅    来源:51Testing软件测试网原创

分享:
  突破:向测试架构师的目标迈进
  测试工程师是产品的第一个用户,通过测试,对产品质量进行评估,为决策者提供参考。不要小觑测试工程师的工作,因为测试结论不仅会影响产品的命运(是继续研发下去、发布,还是终止项目),还会影响整个团队的士气,总也测不完的缺陷和总也改不完的缺陷,对任何一个团队来说都不是一件愉快的事情,所以软件测试并不是一项简单的技术工作,而是一门需要结合产品、管理、心理学和经济学的技艺。Glenford J. Myers 在经典著作《软件测试的艺术》中将软件测试称为一门“艺术”,也许只有“艺术”这个词才能真正形容软件测试。
  对一个艺术团体来说,有位出色的团长固然重要,但技艺精湛的“台柱子”更是不可或缺的,他就像团队的“灵魂”一样,用对艺术深刻的理解、创新,赋予团队特有的生命力。既然软件测试也是一门艺术,那么在软件测试中,谁(指角色)是这个团队的灵魂呢?
  第 2 章介绍测试工程师有哪些职业发展方向时谈到了测试架构师。测试架构师是产品测试专家,只懂测试或者只懂产品都无法成为卓越的测试架构师。测试架构师要能够对不同的组织、产品、研发模式做出最适合当前状况的选择并进行刚刚好的测试。“最合适”和“刚刚好”本身就有很强的选择和辩证意味。
  举例来说,平台型产品(不会直接发布给用户)和要发布给用户的产品的测试策略是不一样的;快速开发的产品和战略型产品的测试策略是不一样的;继承型产品和全新开发的产品的测试策略也是不一样的。我们需要根据产品的特点,去选择最合适的测试方式,以“刚刚好”满足发布的要求。“最合适”意味着还有更合适,永远都有可提升的空间,测试团队应该不断改进,持续改进。
  写到这里,关于“谁是团队灵魂”的答案已经跃然于纸上了:“测试架构师”是测试团队的灵魂。
  那么大家需要如何去做,才能一步步向测试架构师的目标迈进呢?第二部分将和大家深入探讨测试架构师需要关注的主要内容和必备的关键技术能力。

  第 3 章 测试架构师应该做和不应该做的事情
  测试架构师是产品测试专家,是测试团队的灵魂人物,也是测试工程师在软件测试技术上的一个重要发展方向。那么测试架构师在产品测试中具体要做什么?哪些是他们需要关心的事情?本章将给大家提供一份详细的测试架构师工作指南。

  3.1 测试架构师需要关注和不需要关注的事情
  对产品测试来说,无论开发模式是瀑布型、敏捷式还是 DevOps,测试活动都可以概括为“测试需求分析”“测试分析和设计”“测试执行”和“测试质量评估”这几个部分。无论在哪种开发模式下,产品测试都不应该是产品开发末端的活动,而应该是“端到端”的:在产品的需求阶段,测试者就需要投入精力。
  和“好的产品是设计出来的”一样,测试分析不仅能够帮助测试者更好地认识产品,还能反过来帮助开发者确认需求,确认产品在非功能属性(如性能、可靠性、易用性等)方面的设计是否可行。测试的意义,不仅在于通过测试发现缺陷,为产品发布提供信心,还在于缺陷预防,切实提升产品质量。
  作为测试团队的技术领头人,测试架构师在整个端到端的测试过程中需要重点关注哪些事情呢?接下来我们就为大家一一描述。

  3.1.1 在需求分析阶段
  需求是测试的源头。测试架构师在需求阶段的重点工作包括:
  ·理解需求。
  ·制定一份总体测试策略,以此来确定测什么和怎么测。
  测试架构师应该在项目启动时就参与进来,和产品人员、系统架构师一起理解用户的需求。但问题是,如何才算“理解需求”呢?是不是只要参与每一场需求的讨论会,熟读每一条需求规格就够了呢?要想真正对需求有透彻理解,理解所测产品的商业目标、核心价值和用户的使用场景是第一步,也是测试策略的源头。

  1. 理解产品的商业目标和核心价值
  Dave Hendricksen 在他的著作《软件架构师的 12 项修炼》中提出:“系统架构师在考虑软件架构的真正价值时,不能只关注系统构造的技术,更要对客户价值和商务价值—你能帮助客户真正解决怎样的问题、你怎样帮助公司赚钱—有深刻的认识。”原因在于,即便产品使用的是最先进的开发技术,只要不能满足用户的需求,就没有价值,这样的产品就是无用的产品,不能称为成功的产品。这一点对于测试架构师来说同样适用:测试架构师在制定测试策略时,也需要基于特性的价值来分类,来设置优先级、测试的重点,以及不同的测试深度和广度,以此来保证测试资源的最优分配和投入方案。
  如何理解产品的商业目标和价值呢? Dave Hendricksen 用一个气泡图形象地概括了商务知识和软件架构的交错关系,如图 3-1 所示。
3-1 Dave Hendricksen的气泡图

  认识我们所在的领域,了解我们的公司、客户及商务,这是我们能做出最合适的测试策略的前提和基础。下面这些问题可以帮助测试架构师获得答案。
  ·公司中的营销人员和销售人员如何细分客户?
  ·每个细分市场的关键价值主张是什么?
  ·公司试图增长哪些细分市场?如何增长?
  ·每个市场是谁做出购买决策的?
  ·每个细分市场的主要竞争对手是谁?
  ·公司对此产品的策略主张是什么?产品是如何融入这一战略的?
  测试架构师要能围绕下述内容展开测试活动。
  ·如何验证待测试的产品正确体现了市场价值?
  ·所做的测试策略是否和公司的财务、销售、营销目标一致?
  当测试架构师对这些内容进行深入思考,并通过沟通交流和决策者、系统架构师、市场人员等角色达成一致、统一的目标时,测试就能很自然地融入其中,成为公司的伙伴,而不是成为阻碍软件按时发布的“拦路虎”。这样测试也能更容易获得决策者和产品开发人的认可,测试的深度、广度会更透明,从而利于测试者更好地把握测试进度。这样也可通过压缩测试时间来换取项目进度。(很多时候都会存在压缩测试时间来保证项目进度的问题,出现这样的问题,很大一部分原因是决策者根本不认可测试的内容和方法,认为测试过度或者冗余过多,没有准确评估测试真正的工作量。)

  2. 梳理用户的使用场景
  梳理用户的使用场景是测试架构师需要重点关注的另外一项内容。
  所谓“用户的使用场景”,简单来说就是用户将会如何使用这个产品。用户场景将直接体现产品的价值。因此,在测试之前,了解你的用户至关重要。
  ·产品有多少种用户?这些用户的业务是什么?他们如何从你的产品中获得价值(比如通过你的产品赚钱或获得某种资源)?
  ·产品的竞争对手为用户提供了哪些有价值的解决方案?你们之间的差异是什么?
  ·产品所在领域有哪些基本的规范和要求?行业背景有哪些?用户的习惯是什么(如完成各种活动的顺序、对活动完成的判断标准和可能的重要决定等)?
  测试架构师还需要把梳理得到的用户使用场景归纳为测试场景,具体如下。
  ·针对不同类型的用户,分别确定这些用户的行为习惯和关注点。
  ·逐一分析这些用户会如何使用产品,根据分析结果建立产品的拓扑模型、配置模型、流量模型等,抽象出典型场景。
  ·确定各个典型场景下的输入和输出(包括正常输入和异常输入、攻击,还需要考虑模拟测试的时间长短等)。

  3. 输出产品总体测试策略
  产品总体测试策略是测试架构师的重要输出之一,它就好像测试的总纲,帮助整个测试团队明确测试的范围、目标,测试的重点和难点,测试的深度和广度,以及如何安排各种测试活动(及测试分层)。
  注意,测试重点和测试难点是完全不同的两个概念。测试重点是通过产品价值、质量目标、产品实现(新写代码、开源代码或是继承代码)、历史情况(主要针对继承类产品)和风险等多个因素确定测试的优先级;测试难点是从测试技术的角度对产品测试验证难易程度进行分析。
  测试深度和测试广度也是不同的。测试广度是从所能覆盖的测试类型的角度对产品测试进行的描述;而测试深度是从测试方法(如单运行测试、多运行测试、边界值或错误输入等)的角度对测试进行的描述。
  测试分层让我们把一个复杂的测试分成多个不同的阶段,每一个阶段都有自己的测试目标和出入口条件,我们可据此来安排测试活动,让测试过程变得有序、可控。
  除此之外,我们还可以使用缺陷趋势预判技术,得到当前的缺陷趋势预判图,通过量化评估的方式为我们后续调整测试策略提供依据。
  上述内容构成了测试的整体框架,如图 3-2 所示,对此更详细的描述可参见第 6 章和第 7 章。如果把测试需求分析、测试分析设计、测试执行、测试质量评估等测试活动比做珍珠,测试策略就是那根穿珍珠的线。

版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号