查看原文
其他

企业级持续测试实施指南(上)

Tricentis 软件质量报道 2022-06-03


【译者按:本文出自Tricentis公司的白皮书:企业级持续测试框架(The Continuous Testing Framework, Continuous testing for enterprises),在人员、流程和技术三个方面提出了一个标准化的框架,为企业进行持续测试转型提供指导。】

很多企业都希望能够彻底改变软件交付的方式,因此采用了敏捷开发模式,目前软件开发周期比以前确实缩短了很多。然而,人们对敏捷开发的总体效果仍然不满意。到底是什么影响我们无法在不牺牲产品质量的情况下快速发布软件?在许多情况下,这是测试带来的瓶颈。

过时的软件测试实践可以导致敏捷开发停滞不前。企业为了在市场中保持领先地位,必须不断地思考、更新软件测试的方式。

即使软件开发速度比以前更快,交付周期比以前更短,软件测试实践由于自身比较复杂,可能在很大程度上并没有敏捷起来。到目前为止,通过自动化测试很多公司确实实现了显著的效率提升。但是,要跟上当前软件交付的节奏,只有自动化测试还不够,人们需要拥抱持续测试。

持续测试的范畴远远超出了自动化测试,它额外包含以下几个方面:

  • 有效的测试策略,测试范围是基于潜在的业务风险来定义的。

  • 与软件交付的生命周期和DevOps工具链的无缝集成,创建一个持续反馈回路。

  • 保护用户体验的安全防线。

  • 可预测的测试环境,用于快速、稳定的执行测试并获得可靠的结果。

  • 软件系统端到端的洞察力,通过快速、全面的决策提高软件开发的敏捷性。


目前的软件开发周期并不包括以上这些要素,因此,我们在人员、流程、技术三个方面为软件测试提出了新的设计,帮助企业在各个层面进行转型。持续测试框架(CTF)的目的是提供一个标准化的框架,作为蓝图指导企业发展持续测试。它阐述了软件测试向持续测试转型所需要的角色、流程、技能和工具。


CTF定义了如何在三个层次协调人员、流程和技术的实施,这三个层次分别是:团队、项目,和组织。它描述了不同层次的测试阶段(如单元测试),以及跨越这三个层次的一些共同实践(如自动化测试)。

根据企业规模不同,每项测试活动(单元测试、系统测试、系统集成测试、端到端测试、用户验收测试、生产环境中的测试)可能会在三个层次之间移动。但无论在哪里进行,这三个层次都能确保你建立产品质量的反馈回路,并且在整个开发生命周期中对所有干系人都是透明的。


除了这三个层次,CTF还定义了组织要素,如共享团队(在所有三个层次上运作)和流程(可以帮助实施持续测试)。CTF还规定了哪些能力对组织成功实施持续测试至关重要。


持续测试框架的三个方面

CTF的真正基础来自人们对持续测试的认知。在采用CTF之前,问问自己为什么你的组织要进行这样的转型?如果你在做这件事时已经考虑到具体的业务成果,那么取得的结果可能不会令人失望。接下来,你需要确保你采用正确的人员、正确的流程,以及正确的技术实现这些业务成果。
CTF框架的构成包含三个主要支柱,或称三个方面:
  • 人员:在团队、项目和企业这三个层次分别有自己的持续测试框架,需要互相配合建立总体的持续测试框架。你需要依靠你的团队,在提高效率和自主性的同时保证产品质量。
  •  流程:持续测试作为软件交付流水线的一部分,需要运行自动化测试,才能快速收集面向业务风险的反馈。为此,你的组织需要针对持续测试定义一致、准确的度量,并制定一个促进测试并让测试的优先级提高的策略。
  • 技术:当你在组织中建立持续测试框架(CTF)时,你需要定义和设计贯穿整个软件交付生命周期的功能测试和非功能测试。这些能力让你能够应对各种挑战,例如性能测试。这些能力还会促进跨团队合作,以提高软件交付的速度和质量。
 
人员


>>在团队层面实施持续测试

在一个团队中工作的测试人员负责对新功能和现有功能进行单元测试和系统测试,以确保其正常运行,通过完全自动化的持续集成流水线获得快速、可靠的反馈。

组建团队 
团队中需要不同的角色:产品负责人、开发人员、运营人员、测试分析师和自动化测试专家,他们需要协同工作来保证团队的成功。开发人员和运营人员管理整个软件的交付,而测试分析师和自动化测试专家负责探索性测试和测试自动化。产品负责人定义需求清单并确定优先级。

实施持续测试
一旦团队组建起来,你就可以通过实施自动化测试策略和技术来提高效率并降低业务风险。实施过程中请记住下面这些原则:
  • 拥抱自动化测试的最佳实践。避免一种 "底线 "心态,即唯一的优先事项是尽快实现测试自动化。

  • 搭建正确的测试环境。如果测试环境没有搭建好并且没有进行持续的维护,测试就会失败,测试结果的可信度就会丧失。

  • 在测试中考虑服务虚拟化。虚拟化被测系统依赖的接口,确保测试能够独立运行,并保持对测试环境的完全控制。

  • 准备好测试数据。定义和实施测试数据管理策略,避免在测试执行过程中出现不必要的延误。

  • 将尽可能多的环节实现自动化。理想的情况是将所有的活动实现自动化,从代码合入到测试结果的分发。

  • 努力消除假阳性测试误报。通过适当的测试数据管理、服务虚拟化和有弹性的测试设计来减少误报。(假阳性误报:测试结果误报为失败)

  • 在测试过程中加入探索性测试。这有助于更快地发现软件缺陷,特别是在渐进式测试中。


评估进展
你需要通过跟踪相关指标来评估持续测试转型的进展和成功:
通过发现的软件缺陷、缺陷遗漏、测试时长,和节省的工作量来评估成本、质量和投资回报率;
通过测试覆盖率、测试自动化率和假阳性率(测试结果误报为失败)帮助提高团队的效能。

完全自动化的持续集成流水线能够团队获得快速、可靠的反馈,从而实现最佳效能。


>>在项目层面实施持续测试

项目层面的测试重点是各系统之间的集成测试。在项目层面的角色在负责系统集成测试的同时,需要与各个团队紧密合作,创建和管理正确的流程以促进团队间的合作。同时,这些角色还致力于帮助团队进行持续测试的转型。

 

组建团队

需要在项目层面设立测试架构师和自动化测试工程师的角色,负责整个项目的持续测试活动,协调各团队的测试活动。测试架构师负责协调系统集成测试,促进团队间的合作,并与各个团队协作,让研发效能最大化。自动化测试工程师负责解决团队中可能遇到的技术障碍,提供实用的、可以跨团队重复使用的技术解决方案,提升研发质量和效率。

 

实施持续测试

在项目层面需要设立一个系统团队(System Team),负责执行跨团队的测试方案。系统团队根据潜在的业务风险来识别和规划系统集成测试。理想情况下,系统团队可以复用各个团队已有测试资产形成系统集成的自动测试用例,这样可以减少对测试用例的维护成本。在项目层面也需要实施探索性测试,补充自动化测试覆盖不到的测试。
为了成功实施测试自动化,需要定义一个连贯的策略:如何存储和重用测试数据、各团队中需要什么样的测试环境、什么时候需要测和间隔多长时间需要测一次。负责这项工作的就是企业赋能团队(Enterprise Enablement Team),这个团队中包括项目层面的测试架构师和自动化工程师,负责消除各团队可能遇到的技术障碍,开发跨团队复用的实用解决方案,提升研发效能

 

评估进展

某些软件缺陷本来可以更早地被发现。如果是这样,就把这些缺陷算作缺陷遗漏,反馈给各个团队,这样可以帮助他们改进流程,优化软件交付过程。在团队层面上需要跟踪一些指标,如自动化率、风险覆盖率、节省的工作量和测试用时。将这些指标结合起来,创建项目级别的仪表板,让项目的整体交付速度、质量状况,以及通过自动化节省的时间和工作量对项目中所有团队都是可见的。


>>在企业层面实施持续测试
在企业层面需要关注企业的整体测试策略,包括工具、测试预算、运营模式,以及质量文化的转变。企业层面的测试重点包括最普遍但风险最高的端到端业务测试,需要模拟终端用户的行为。这和在生产环境中需要进行的测试是相同的。

组建团队

如同在项目层面所做的那样,企业级的测试架构师和自动化工程师在企业层面协调所有项目的测试活动。测试架构师专注于整体策略,并负责合作、赋能、指导、内部宣导,以及协调端到端测试。自动化工程师负责工具的整合并在企业范围内落地解决方案,以提高整体研发效能。


实施持续测试

在企业层面同样需要制定一个策略,用于指导测试用例的编写,测试环境的搭建,并确定每轮测试的触发频率。探索性测试在发现不可预见的缺陷方面起着重要作用。持续交付和持续部署可能是企业层面需要实现的目标。可以通过整合工具和系统,以及自动化测试作为通往下一个阶段的门户,在每一步的旅程中提供反馈。


评估进展
在项目层面,你已经建立了一个仪表板实现了测试指标可视化。同样的,你也需要创建企业级的测试仪表板。但和项目中的仪表板不同的是,企业级仪表板不需要显示缺陷遗漏、交付周期和节省的工作量等具体指标,而应该展示、汇报业务成果,如提升的质量,提高的速度,降低的成本。

>>共享团队

CTF描述了团队、项目和企业层面的不同过程和人员角色,除此之外,还有一些跨层面的活动,由共享团队(Shared Team)负责和管理。

共享团队需要在企业内部不同的层面上运作。共享团队中的一些成员可能在团队、项目或企业层面的特定测试团队中担任角色,其他成员除了参与共享团队外,可能不参与测试工作。三种常见的共享团队类型是实践社区、企业赋能团队和系统团队


实践社区

实践社区(Community of practice)是一个虚拟的群体,可以由企业中与测试有关的任何人员组成,。这个群体代表了一个组织中负责持续测试工作的骨干。他们分享策略、经验教训和最佳实践,并且协作定义新的工具和流程。这个社区将那些在软件质量方面有共同目标的人聚集在一起。


企业赋能团队

企业赋能团队的功能是一个瘦身版的卓越测试中心。这个团队包括来自企业层面的架构师和工程师,他们负责在整个组织内制定团队的测试策略,收集和推广企业内的最佳实践,定义和管理相关运营模式,为新的团队赋能,通过实践社区协调测试工具和基础设施方面的决策,并代表QA参与企业的战略讨论。


系统团队

系统团队是项目和企业层面的一个团队,负责协调系统集成测试和端到端测试。这个团队由测试人员组成,他们与不同的测试团队一起定义和组织系统集成测试,然后在多个团队、应用程序或业务流程中执行。


参考文档

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存