持续测试的障碍(三):如何克服测试环境不可用,受系统依赖性的限制的问题
持续测试是一个过程,使团队能够在软件开发中建立质量,并加速交付高质量的客户体验。通过持续测试,团队使用自动化测试获得关于代码健康的即时反馈。
持续测试使企业能够评估商业风险。最近的行业调查显示,用于跟踪项目进展和成功的首要指标:
- 高测试覆盖率
- 增加缺陷修复
- 减少了生产中的缺陷
- 在开发过程中建立质量
如何实现速度和质量的结合?答案是:持续测试。但它确实有其挑战。本文就说说第三个挑战或者说障碍——测试环境不可用,不可控,受系统依赖性的限制。
障碍三:测试环境不可用,不可控,受系统依赖性的限制
测试环境是阻止组织将自动化测试转化为持续测试的障碍的关键所在。在试图使测试随时随地运行时,组织面临三种类型的挑战,并处理应用程序的外部依赖性。这对于微服务架构来说尤其如此。由于设计的本质,依赖关系的数量爆炸性地增长。
测试环境的挑战
测试环境是阻止组织将自动化测试转化为持续测试的障碍的关键所在。在试图使测试随时随地运行时,组织面临三种类型的挑战,并处理应用程序的外部依赖性。这对于微服务架构来说尤其如此。由于设计的本质,依赖关系的数量爆炸性地增长。
等待访问共享系统,如主机或由第三方提供的外部依赖。可用性可能是有时间限制和成本的。这也是一个挑战,如果外部的依赖性有很多人在同时工作,导致数据碰撞造成的测试不稳定。
延迟访问造成的瓶颈。这是由于并行开发的性质和现代流程的典型。例如,多个团队合作向价值流交付新功能,如相互依赖的微服务。测试不能在一个微服务上进行,因为另一个微服务还没有可用。
不可控的测试数据。虽然微服务相对容易部署和隔离测试,但它们对数据或性能特性的依赖性限制了它们被彻底测试的能力。例如,对共享生产数据库中的数据的依赖会限制测试服务的能力。
如何消除障碍,控制测试环境
开始模拟这些依赖关系,使用服务虚拟化解决方案让团队完全控制。Parasoft Virtualize模拟那些不受你控制或不可用的服务。它提供的工作流程可以:
- 使用户能够访问完整和真实的测试环境。
- 稳定测试环境。
- 获得其他无法访问的依赖性。
- 管理复杂的业务逻辑、测试数据和性能特征,这些都是虚拟服务在它们所代表的真实环境中表现得与真实服务一样的要求。
服务虚拟化消除了瓶颈,下面是方法:
记录和模拟:捕获、建模和提供实时系统的模拟。
使用Parasoft SOAtest的记录能力,就有可能在其环境中捕获应用程序的行为。Parasoft Virtualize对外部依赖关系的行为进行建模,使得删除和模拟依赖关系的行为成为可能,动态地在运行中切换出真实与虚拟。使这些服务和依赖关系在虚拟中可用和稳定,加速了测试过程并实现了连续测试。
交付一个原型:基于合同描述或有效载荷例子的行为模型。
服务虚拟化使原型开发基于从SOAtest中的API交互记录和分析得出的契约描述。
在测试另一个相邻的服务时,可以以良好的保真度模拟依赖性服务,以创建满足其在系统中作用的原型版本。这消除了并行开发中固有的进度限制--即使服务没有完成,它们也可以被虚拟化,用于测试其他服务。
合成私人测试数据
测试企业应用程序的另一个障碍是测试数据。许多组织使用真实数据,但这充满了隐私问题。纯粹的合成数据往往不够真实,所以需要一个折中的方法来测试。通过去除个人可识别信息(PII)来合成真实数据,可以提供现实的和安全使用的数据。测试数据管理需要与服务虚拟化结合起来,以提供一个现实的、高度可用的测试环境,不会导致任何隐私的损害。