Want to see Parasoft in action? Sign up for our Monthly Demos! See Demos & Events >>

X
BLOG

什么是服务虚拟化?

什么是服务虚拟化? Reading Time: < 1 minute
什么是服务虚拟化?请继续阅读,了解如何使用服务虚拟化轻松访问阻碍开发和测试的组件。

服务虚拟化正在成为我们客户测试策略的关键组成部分,因此,我们往往会收到很多关于它的问题。以下是一些解释。

使用正确的服务虚拟化解决方案随时随地进行测试

服务虚拟化定义

简而言之,服务虚拟化使团队可以轻松访问阻碍开发和测试的受约束组件。这通常表现为环境约束,在此环境中需要技术上超出测试范围的组件以实现完整的端到端功能。

借助服务虚拟化,您可以通过模拟这些下游依赖项并使用模拟行为替换功能来消除这些约束。 如果操作正确,系统的行为就像实际组件可用一样。

因此,您可以通过提供对精确模拟测试环境的随时访问来消除调度约束。您还可以通过提供对不断演变、不可用或难以访问的依赖系统的快速访问来消除流程瓶颈。正如Wikipedia的服务虚拟化条目所述,这些依赖系统可能是:

  • 尚未完成的
  • 仍在不断发展
  • 由第三方或合作伙伴控制
  • 仅在性能有限或者时间不方便的情况下用于测试
  • 难以在测试环境中调配或配置
  • 需要具有不同测试数据设置和其他要求的不同团队同时访问
  • 用于负载和性能测试受到限制或成本高昂

Wikipedia的条目继续很好地描述了这一点:

它不是虚拟化整个系统,而是仅虚拟化对执行开发和测试任务至关重要的依赖行为的特定部分。这提供了足够的应用程序逻辑,以便开发人员或测试人员获得他们需要的东西,而无需等待实际服务完成并随时可用。

例如,不是虚拟化整个数据库(并执行所有关联的测试数据管理以及为每个测试会话设置数据库),而是监视应用程序如何与数据库交互,然后模拟相关的数据库行为(传递给数据库的SQL查询,返回的相应结果集等等)。

为什么服务虚拟化很重要?

为了快速保障质量,必须能够不受限制地访问可信赖且真实的测试环境。重要的是要认识到一个完整的测试环境包括被测应用程序 (AUT) 及其所有依赖组件,如 API、第三方服务、数据库、应用程序和其他端点。

服务虚拟化使开发测试团队能够访问完整的测试环境,包括所有关键的依赖系统组件,并以 分阶段测试环境无法实现的方式更改这些依赖组件的行为,从而使您能够更早、更快、更完整地进行测试。它还允许您隔离应用程序的不同层以进行调试和性能测试。

如何选择正确的服务虚拟化解决方案

访问完整的测试环境

随着当今快节奏的迭代开发周期,开发测试团队需要提前访问完整的测试环境,以便:

  • 完成每个用户情景后立即验证其功能
  • 在完成每个用户情景后立即验证其影响
  • 在流程早期执行更全面的测试
  • 即使另一个团队正在与当前迭代并行实现或改进依赖组件,也可以完成自己的开发测试任务

服务虚拟化可以提供对测试环境中缺少或受限制的任何依赖组件的访问:第三方服务、API、数据库、大型机、ESB 和使用常见消息传递协议进行通信的其他组件。服务虚拟化的主要候选组件包括以下两者的依赖组件:

  • 中度(或更多)难以访问以进行测试 – 例如,由于时间安排冲突,访问费用,许可过期等。
  • 适度(或复杂)的用于测试的配置

例如,内部服务可能很容易从分阶段的测试环境中访问并且易于配置。另一方面,复杂的消息队列在分阶段测试环境中可能更难运行起来,并且配置测试更具挑战性。在最极端的情况下,大型机或 ERP 系统将具有与开发测试访问相关的多个约束,以及对配置它以进行测试的能力的明显限制。利用服务虚拟化可确保按需访问测试环境。它消除了访问限制,并减少了与重复配置相关的成本。团队可以无限制地进行虚拟测试

更改从属组件的行为

服务虚拟化还使您能够控制依赖组件的行为。更改与 AUT 的每个依赖组件关联的网络或硬件的配置非常困难。面对阶段性测试环境,表现出比生产中更慢的性能也是很常见的。

使用服务虚拟化,您可以更好地控制依赖项的响应方式。这使您可以按需访问更广泛的依赖行为(就像飞行模拟器一样)。因此,您可以更快、更准确地评估候选版本的风险。

例如,可以模拟不同的依赖关系行为,以便:

  • 检查 AUT 如何响应依赖项中的性能变化。即使一个依赖项遇到高延迟,用户能否完成核心事务吗?低延迟方案是否会暴露并发问题?
  • 隔离被测组件,了解意外行为是源于依赖关系问题还是源于 AUT
  • 将整个测试环境设置为不同的状态,并在这些上下文中验证 AUT 的安全性
如何采用&规模服务虚拟化

更改从属元件的数据

虚拟服务不需要总是使用真实系统中的实际数据进行响应。实际上,从虚拟服务提供意外数据有很多好处。虚拟服务与其数据源分离,从而可以更灵活地生成适合不同团队需求的响应数据,例如:

  • 想要防止其应用程序中出现格式错误的响应或负面行为的开发团队可以生成提供负面行为的服务响应。
  • 想要验证服务如何处理非标称响应的测试团队可以在响应中返回非法字符。
  • 想要了解大型有效负载响应的影响的性能团队可以提供来自依赖组件的大于正常值的响应。

通过模拟这些类型情况下的不同服务数据,您可以在测试中获得更大的灵活性。

服务虚拟化的实际好处

当然,我们在这里只涉及到表面。在团队中部署服务虚拟化有很多好处。采用服务虚拟化的尖端测试实践的企业报告缺陷更少,测试覆盖率更高,测试执行率更高,测试时间大大减少

温馨提示:您可以在此处免费下载Parasoft的企业服务虚拟化解决方案:https://software.parasoft.com/virtualize/community-edition/

Written by

Jeff Peeples

Jeff Peeples是Parasoft的高级产品经理,领导SOAtest,Virtualize和CTP的功能平台方向。 Jeff在为企业行业(包括能源、金融技术和旅游/酒店)定义解决方案和开发路线图方面具有丰富的经验。

将最新的软件测试新闻和资源发送到您的电子邮箱。