当前位置: 首页 > 科技观察

服务虚拟化如何改进应用程序测试_0

时间:2023-03-17 13:17:06 科技观察

ServiceVirtualization如何改进应用程序测试稳健的测试环境可能很棘手。例如,假设正在验证的API之一是由团队开发的微服务。在这种情况下,可能会有DevOps功能,包括持续集成和交付(CI/CD)、基础架构即代码,以及用于创建测试数据集以为服务启用测试环境的工具。然而,即使具有这些功能,当团队开发许多云原生应用程序和微服务时,启动多个测试服务的成本也会变得很高。对于第三方API、SaaS或数据流,您可能需要依赖该服务的测试基础架构和功能。尽管这些测试环境应该支持生产系统的功能,但它们可能没有完整的数据集,将它们置于负载下以支持性能测试可能会违反服务条款或成本过高。服务和API虚拟化平台旨在通过创建和模拟API和服务端点来解决这些复杂性。服务虚拟化平台不是一个旋转的测试环境,而是充当测试下游应用程序和组合服务的端点,并响应请求和事务以连接应用程序或服务。如果您只使用少量API,API模拟可能是模拟端点的良好实践,而Mockito、JMock或WireMock等工具是Java选项。但是一旦您拥有许多开发团队、不断增长的API或复杂的测试数据集,您就需要更具可扩展性的方法,例如服务虚拟化。此外,如果您正在测试处理信用卡、连接到账单支付服务或执行其他复杂交易的应用程序,服务虚拟化平台可以针对更广泛的用户体验和错误场景进行验证。我与金融服务领域的云工程师AnnaRamadoss就使用服务虚拟化平台进行了交谈。她说:“服务虚拟化一旦成为团队的主流,就会缩小主从系统之间的界限。更新是即时的,交付时间变得更快。其结果是一个设计良好的系统,它可以更有效地降低基础设施要求和成本。”服务虚拟化如何将测试转移到左侧许多组织希望转移他们的测试工作以更快地识别和解决问题。但是当测试环境对依赖服务不可用时会发生什么?开发人员自然会避免阻碍他们的工程工作的障碍。在开发应用程序时,开发人员应该等到测试API的基础架构和功能,还是更有可能将此类测试推迟到开发过程的后期?更麻烦的是,开发人员是否对API的行为做出假设,然后被迫在开发过程的后期或在生产中发现缺陷时解决缺陷?构建服务虚拟化平台并要求将服务虚拟化作为开发标准有很多好处,特别是对于需要针对许多API进行广泛测试的团队而言。以下是使用服务虚拟化平台帮助左移测试的一些优势:?服务虚拟化是开发单元测试和微服务持续测试的自然延伸。作为开发过程的一部分,开发人员或质量保证工程师应在模拟API响应的服务虚拟化平台中配置端点。所有开发人员在构建下游应用程序和服务时都可以使用这些端点。?服务虚拟化层通过公开所有受支持版本的端点简化了API多个版本的测试。在测试新的API版本时,开发人员可以创建测试来比较最新版本和旧版本的响应。这种类型的A/B测试对于验证机器学习模型和预测新版本分析的下游影响特别有用。?服务虚拟化可以与测试数据集捆绑在一起并用于验证交易。开发人员完成测试场景后,他们可以将端点刷新回原始测试数据集,并根据需要重复测试。?在云端运行时,服务虚拟化平台可以根据测试量增减容量。因此,基础架构可以扩展以处理许多开发人员同时运行的测试或更强大的性能测试。通过解决常见的测试基础架构挑战,团队可以使用服务虚拟化平台的功能在开发过程的早期建立新的测试场景。平台提供商建议其他用例。例如,SmartBear推荐开发团队使用服务虚拟化来增强安全测试,根据消息类型自动化不同的测试场景,支持迭代设计。Parasoft建议使用服务虚拟化来测试格式错误的数据响应、模拟高延迟或验证对更大负载的响应。BroadcomServiceVirtualization(正式名称为CADevTest)建议开发团队将测试链接到多步骤事务中,并持续验证业务工作流。Ramadoss建议开发团队确定他们的测试要求,看看API虚拟化是否足够,或者是否需要更一般的服务验证。例如,她说,“服务虚拟化扩展到基于TCP的协议,以支持来自TransUnion、Equifax和Experian等信贷机构的服务。”可能需要的其他协议包括数据库(JDBC)、中间件(JMS、RabbitMQ等)和大型机协议(CICS等)。我与Broadcom的DevOps首席技术官ShamimAhmed谈到了DevOps组织如何在虚拟服务环境中使用服务虚拟化。“随着越来越多的组织向其软件系统的组件架构发展,我们看到了微服务开发和容器化部署的增长趋势,”他说。为了支持这种趋势,虚拟服务可以打包部署在容器中,按需实例化,不再需要时停用。”ServiceVirtualization的工作原理平台具有创建服务端点的不同功能,以下是常见的方法:?描述为Web服务语言(WSDL)、Web应用程序描述语言(WADL)或OpenAPI规范(OAS)以链接或上传定义API?使用浏览器插件或网络服务器代理来记录事务?手动创建服务定义,供下游开发人员使用在准备好之前进行测试时很有用创建端点后,平台通常支持连接到测试数据源,上传测试数据,或自动生成测试数据。在验证表单或文档上传以及处理复杂事务时,生成测试数据很有用。这也是创建有关个人身份信息(PII)(例如姓名、社会安全号码或信用卡号码)的模拟数据集的更安全方法。一旦有了服务端点,服务虚拟化平台就会提供开发工具包、IDE插件和CI/CD工具插件作为接口和不同的使用方式。以频繁部署为目标的开发团队可以通过提供更多API端点和增加测试数据集的广度来改进持续测试实践。使用服务虚拟化平台和经过验证的持续测试实践的敏捷开发团队应该考虑几种最佳实践,例如创建负面测试用例和培训技术人员。加快测试周期的几个最佳实践,包括定义基础架构要求、保护虚拟化服务和定期更新系统。领导者还应该寻找切实的商业利益,例如更快地将新应用程序投入生产并降低成本。随着越来越多的组织对云应用程序进行现代化改造、开发微服务并与许多SaaS平台集成,服务虚拟化成为支持稳健和持续测试的关键平台功能。【翻译稿件,合作网站转载请注明原译者和出处.com】