企业级持续测试实施指南(上)
很多企业都希望能够彻底改变软件交付的方式,因此采用了敏捷开发模式,目前软件开发周期比以前确实缩短了很多。然而,人们对敏捷开发的总体效果仍然不满意。到底是什么影响我们无法在不牺牲产品质量的情况下快速发布软件?在许多情况下,这是测试带来的瓶颈。
过时的软件测试实践可以导致敏捷开发停滞不前。企业为了在市场中保持领先地位,必须不断地思考、更新软件测试的方式。
即使软件开发速度比以前更快,交付周期比以前更短,软件测试实践由于自身比较复杂,可能在很大程度上并没有敏捷起来。到目前为止,通过自动化测试很多公司确实实现了显著的效率提升。但是,要跟上当前软件交付的节奏,只有自动化测试还不够,人们需要拥抱持续测试。
持续测试的范畴远远超出了自动化测试,它额外包含以下几个方面:
有效的测试策略,测试范围是基于潜在的业务风险来定义的。
与软件交付的生命周期和DevOps工具链的无缝集成,创建一个持续反馈回路。
保护用户体验的安全防线。
可预测的测试环境,用于快速、稳定的执行测试并获得可靠的结果。
软件系统端到端的洞察力,通过快速、全面的决策提高软件开发的敏捷性。
目前的软件开发周期并不包括以上这些要素,因此,我们在人员、流程、技术三个方面为软件测试提出了新的设计,帮助企业在各个层面进行转型。持续测试框架(CTF)的目的是提供一个标准化的框架,作为蓝图指导企业发展持续测试。它阐述了软件测试向持续测试转型所需要的角色、流程、技能和工具。
CTF定义了如何在三个层次协调人员、流程和技术的实施,这三个层次分别是:团队、项目,和组织。它描述了不同层次的测试阶段(如单元测试),以及跨越这三个层次的一些共同实践(如自动化测试)。
根据企业规模不同,每项测试活动(单元测试、系统测试、系统集成测试、端到端测试、用户验收测试、生产环境中的测试)可能会在三个层次之间移动。但无论在哪里进行,这三个层次都能确保你建立产品质量的反馈回路,并且在整个开发生命周期中对所有干系人都是透明的。
除了这三个层次,CTF还定义了组织要素,如共享团队(在所有三个层次上运作)和流程(可以帮助实施持续测试)。CTF还规定了哪些能力对组织成功实施持续测试至关重要。
人员:在团队、项目和企业这三个层次分别有自己的持续测试框架,需要互相配合建立总体的持续测试框架。你需要依靠你的团队,在提高效率和自主性的同时保证产品质量。 流程:持续测试作为软件交付流水线的一部分,需要运行自动化测试,才能快速收集面向业务风险的反馈。为此,你的组织需要针对持续测试定义一致、准确的度量,并制定一个促进测试并让测试的优先级提高的策略。 技术:当你在组织中建立持续测试框架(CTF)时,你需要定义和设计贯穿整个软件交付生命周期的功能测试和非功能测试。这些能力让你能够应对各种挑战,例如性能测试。这些能力还会促进跨团队合作,以提高软件交付的速度和质量。
>>在团队层面实施持续测试
拥抱自动化测试的最佳实践。避免一种 "底线 "心态,即唯一的优先事项是尽快实现测试自动化。
搭建正确的测试环境。如果测试环境没有搭建好并且没有进行持续的维护,测试就会失败,测试结果的可信度就会丧失。
在测试中考虑服务虚拟化。虚拟化被测系统依赖的接口,确保测试能够独立运行,并保持对测试环境的完全控制。
准备好测试数据。定义和实施测试数据管理策略,避免在测试执行过程中出现不必要的延误。
将尽可能多的环节实现自动化。理想的情况是将所有的活动实现自动化,从代码合入到测试结果的分发。
努力消除假阳性测试误报。通过适当的测试数据管理、服务虚拟化和有弹性的测试设计来减少误报。(假阳性误报:测试结果误报为失败)
在测试过程中加入探索性测试。这有助于更快地发现软件缺陷,特别是在渐进式测试中。
>>在项目层面实施持续测试
组建团队
实施持续测试
评估进展
如同在项目层面所做的那样,企业级的测试架构师和自动化工程师在企业层面协调所有项目的测试活动。测试架构师专注于整体策略,并负责合作、赋能、指导、内部宣导,以及协调端到端测试。自动化工程师负责工具的整合并在企业范围内落地解决方案,以提高整体研发效能。
在企业层面同样需要制定一个策略,用于指导测试用例的编写,测试环境的搭建,并确定每轮测试的触发频率。探索性测试在发现不可预见的缺陷方面起着重要作用。持续交付和持续部署可能是企业层面需要实现的目标。可以通过整合工具和系统,以及自动化测试作为通往下一个阶段的门户,在每一步的旅程中提供反馈。
CTF描述了团队、项目和企业层面的不同过程和人员角色,除此之外,还有一些跨层面的活动,由共享团队(Shared Team)负责和管理。
实践社区
实践社区(Community of practice)是一个虚拟的群体,可以由企业中与测试有关的任何人员组成,。这个群体代表了一个组织中负责持续测试工作的骨干。他们分享策略、经验教训和最佳实践,并且协作定义新的工具和流程。这个社区将那些在软件质量方面有共同目标的人聚集在一起。
企业赋能团队的功能是一个瘦身版的卓越测试中心。这个团队包括来自企业层面的架构师和工程师,他们负责在整个组织内制定团队的测试策略,收集和推广企业内的最佳实践,定义和管理相关运营模式,为新的团队赋能,通过实践社区协调测试工具和基础设施方面的决策,并代表QA参与企业的战略讨论。
系统团队是项目和企业层面的一个团队,负责协调系统集成测试和端到端测试。这个团队由测试人员组成,他们与不同的测试团队一起定义和组织系统集成测试,然后在多个团队、应用程序或业务流程中执行。
The Continuous Testing Framework: Continuous testing for enterprises (https://www.tricentis.com/wp-content/uploads/2021/09/Tricentis-white-paper_Continuous-testing-framework.pdf) 2020年软件测试趋势报道:彻底实现持续测试(上) 2020年软件测试趋势报道:彻底实现持续测试(中) 2020年软件测试趋势报道:彻底实现持续测试(下)