API和服务虚拟化的好处

原创|实施案例|编辑:张莹心|2021-09-29 10:31:35.660|阅读 46 次

概述:API和应用服务的虚拟化支持稳健和更早的测试,这是应用现代化的一个重要部分。

# 31款JAVA开发必备控件和工具 # 开发软/控件产品年终优惠

API和应用服务的虚拟化支持稳健和更早的测试,这是应用现代化的一个重要部分。

如果你正在开发连接到多个微服务、软件即服务(SaaS)API、遗留系统和其他第三方服务的应用程序,创建一个强大的测试环境可能很棘手。例如,假设你正在验证的一个API是你的团队开发的一个微服务。在这种情况下,你可能有devops能力,包括持续集成和持续交付(CI/CD),基础设施即代码,以及创建测试数据集的工具,以便为这个服务提供测试环境。然而,即使有这些能力,当团队开发许多云原生应用程序和微服务时,旋转多个测试服务也会变得昂贵。

如果是第三方API、SaaS或数据流,你可能不得不依赖该服务的测试基础设施和能力。虽然这些测试环境应该支持生产系统的功能,但它们可能没有完整的数据集,而且将它们置于负载之下以支持性能测试可能会违反服务条款或费用昂贵。

什么是API?应用编程接口解释 

服务和API虚拟化平台旨在通过创建和模拟API和服务端点来解决这些复杂问题。服务虚拟化平台作为测试下游应用和复合服务的端点,而不是启动测试环境,它对连接应用或服务的请求和事务做出响应。

如果你只处理几个API,API模拟可能是模拟端点的一个足够好的做法,像Mockito、JMock或WireMock这样的工具是Java的选择。但一旦你有许多开发团队,不断增长的API,或复杂的测试数据集,就需要像服务虚拟化这样更可扩展的方法。此外,如果你正在测试处理信用卡、连接到账单支付服务或执行其他复杂交易的应用程序,那么服务虚拟化平台可以针对更广泛的用户体验和错误场景进行验证。

金融服务领域的云计算工程师Anna Ramadoss对如何使用服务虚拟化平台问题时,她说:"服务虚拟化,一旦成为团队的主流,就会淡化主系统和附属系统之间的界限。更新是立竿见影的,而且交付的时间线也变快了。其结果是一个精心设计的系统,对市场的更新更快。它还可以减少基础设施需求和成本"。

服务虚拟化如何实现左移测试

许多组织都希望将他们的测试工作转移到左边,以便更快地发现和解决问题。但是,当测试环境对依赖性服务不可用时,会发生什么?

开发人员自然要规避他们工程努力的障碍和阻碍。在开发应用程序时,开发人员应该等待API的测试基础设施和能力,还是他们更有可能将这种测试推到开发过程的后期?更有问题的是,开发人员是否会对一个API的行为做出假设,然后被迫在开发过程的后期解决缺陷,或者更糟糕的是,在生产中发现这些缺陷?

推荐的白皮书

  • 建立一个服务虚拟化平台并要求将服务虚拟化作为开发标准有很多好处,特别是对于需要针对许多API进行广泛测试的团队来说。以下是使用服务虚拟化平台来帮助左移测试的几个优势。
  • 服务虚拟化是开发单元测试和建立微服务持续测试的自然延伸。作为开发过程的一部分,开发人员或质量保证工程师应在服务虚拟化平台中配置端点,模拟API的响应。所有的开发人员在构建下游应用和服务时都可以使用这些端点。
  • 服务虚拟化层通过暴露所有支持版本的端点,简化了针对API多个版本的测试。当针对新的API版本进行测试时,开发者可以创建测试,将最新版本的响应与旧版本的响应进行比较。这种A/B测试对于验证新发布的机器学习模型和预测分析的下游影响特别有用。
  • 服务虚拟化可以与测试数据集捆绑在一起,用于验证交易。一旦开发人员完成一个测试场景,他们可以刷新终端回到原始测试数据集,并根据需要重复测试。
  • 在云上运行时,服务虚拟化平台可以根据测试量增加和减少容量。因此,基础设施可以扩展到处理许多开发人员同时运行的测试或更强大的性能测试。
  • 通过解决常见的测试基础设施挑战,团队可以利用服务虚拟化平台的能力,在开发过程的早期建立新的测试场景。
平台供应商建议其他使用情况。例如,SmartBear建议开发团队使用服务虚拟化来加强安全测试,按消息类型自动处理不同的测试场景,并支持迭代设计。Parasoft建议使用服务虚拟化来测试畸形的数据响应,模拟高延迟,或验证对较大有效载荷的响应。Broadcom服务虚拟化(正式名称为CA DevTest)建议开发团队将测试链入多步骤事务,并持续验证业务工作流程。

Ramadoss建议开发团队确定他们的测试要求,看看API虚拟化是否足够,或者是否需要更普遍的服务验证。例如,她说:"服务虚拟化扩展到基于TCP的协议,以支持来自TransUnion、Equifax和Experian等信用局的服务"。其他可能需要的协议包括数据库(JDBC)、中间件(JMS、Rabbit MQ和其他)和大型机协议(CICS和其他)。

Broadcom公司的devops首席技术官Shamim Ahmed在谈及devops组织如何在虚拟服务环境中使用服务虚拟化时,他说:"随着越来越多的组织的软件系统向组件架构发展,我们看到越来越多的趋势是采用微服务进行开发,采用容器化进行部署。为了支持这一趋势,虚拟服务可以被打包并部署在容器中,按需实例化,并在不再需要时退役。"

服务虚拟化的工作原理

平台有不同的能力来创建服务端点,以下是常见的方法:

  • 在网络服务描述语言(WSDL)、网络应用描述语言(WADL)或OpenAPI规范(OAS)(Swagger)中链接或上传API的定义
  • 使用浏览器插件或网络服务器代理来记录事务
  • 手动创建服务定义,这在下游开发人员想要在 API 准备好之前进行测试时很有用

在创建端点后,平台一般都能连接到测试数据源,上传测试数据,或自动生成测试数据。生成测试数据在验证表单或文件上传和处理复杂交易时非常有用。这也是一种更安全的方式来创建个人身份信息(PII)的模拟数据集,如姓名、社会安全号码或信用卡号码。

一旦有了服务端点,服务虚拟化平台就会提供开发工具包、IDE插件和CI/CD工具插件作为对接和利用它们的不同方式。以频繁部署为目标的开发团队可以通过拥有更多可用的API端点和增加测试数据集的广度来改善持续测试实践。

使用服务虚拟化平台和成熟的持续测试实践的敏捷开发团队应考虑几个最佳实践,如创建负面测试案例和培训技术人员。一些加速测试周期的最佳实践包括定义基础设施要求,确保虚拟化服务的安全,并定期更新系统。领导者还应该寻求切实的商业利益,如更快地将新的应用程序投入生产并降低成本。

随着越来越多的企业对云计算应用进行现代化改造,开发微服务,并与许多SaaS平台集成,服务虚拟化是支持强大和持续测试的关键平台能力。


关于SmartBear

SmartBear,我们专注于您永远不变的一个优先事项:质量!我们知道一遍又一遍地交付高质量的软件很复杂。因此,我们的工具旨在简化您的流程,同时与您使用的和将要使用的所有工具无缝协作。无论是SwaggerCucumberReadyAPIZephyrTestComplete还是更多,我们的工具都易于尝试、易于购买且易于集成。超过22000个组织的700万开发人员、测试人员和操作工程师正在使用我们的软件,其中包括Adobe,JetBlue和Microsoft等世界知名的创新者。无论您要去哪里,我们都会帮助您到达那里。在SmartBear上了解更多信息,或咨询在线客服以获取更多独家资料。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
在线咨询
联系我们
TOP
在线客服系统
live chat