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

X

使用服务虚拟化进行持续测试

当您需要时,应用程序调用的服务可能无法用于负载测试。服务虚拟化创建了稳定的虚拟服务来复制真实的事物。

什么是服务虚拟化?

服务虚拟化是可以模拟应用程序依赖关系的软件测试功能。它允许DevOps团队使用计算机生成的虚拟服务来代替真实的服务,这样他们就可以经常测试,尽早测试,在各种情况下降低成本。这包括分布式系统中缺失的关键部分:例如,当依赖组件不可访问时,扩展培训环境,以及构建合作伙伴入组场景。

将虚拟服务用于测试目的比将生产环境用于这些目的更具成本效益。使用端点模拟进行API测试消除了丢失数据的机会,避免使用实际程序运行所需的昂贵服务器,并允许公司放弃额外的许可证费用。这样可以实现快速、准确且不那么繁琐的测试程序。

将服务虚拟化集成到自动化测试实践中,以满足DevOps工作流的持续集成测试需求。

服务虚拟化的优势

为了实现敏捷和DevOps计划的好处,团队需要不受限制地即时访问他们的测试环境。通过在测试环境中应用服务虚拟化,组织可以减少或消除对不可用的、不稳定的或昂贵的依赖项(如第三方服务、数据库和大型机)的依赖。

随时获得访问权限

访问您的应用程序需要与之交互的依赖服务,以便进行准确和彻底的测试,即使它们在测试时不可用或不完整。

隔离服务依赖关系

当您无法访问相关服务时,其相关的相互依赖关系也是一个黑匣子。服务虚拟化研究实际行为,并在虚拟对等体中复制这种相互依赖关系,从而提供准确的响应。

确保测试稳定

不完整或不稳定的服务可能导致测试失败和延迟。虚拟的等效物更稳定,在测试时提供可靠的自动化和安心。

利用无脚本工具

测试人员不需要编写复杂的脚本。无脚本和无代码的工具甚至允许新手测试人员参与。在偶尔需要编写脚本的情况下,Parasoft支持多种编程语言。

准确地复制真实世界的行为

Parasoft的服务虚拟化研究应用程序对实时服务的实际调用,以便在虚拟版本中准确地建模请求和响应。还可以应用服务定义来获得更好的相关性。

有效地进行负面和边缘案例测试

很难使依赖服务故意表现得不好,但需要考虑这些极端情况才能进行准确的测试。Parasoft 确保虚拟服务满足各种测试条件,以便进行更彻底的测试。

使用服务虚拟化的方法

有几个领域可以利用服务虚拟化来提高生产力。

敏捷/并行开发

现代软件实践涉及多个运营团队分别处理环境的各个部分,然后通过API将它们结合在一起,形成最终产品。在等待访问应用程序的某个部分时,DevOps团队可以使用服务虚拟化来模拟那些缺失的部分,这样他们就可以继续他们的应用程序开发。

性能测试

使用服务虚拟化可以确保您的应用程序能够处理高需求响应时间所需的全部容量,如假日销售。维护实时性能环境的成本通常接近于公司的生产环境。通过使用服务虚拟化,公司可以模拟正在测试的API的依赖关系,从而大大降低性能测试的成本。

测试数据管理

企业拥有大量的数据,这些数据是它们与客户(比如银行)交互的主要组成部分。这些信息可能包括PII(个人身份信息),如社会安全号码。允许测试人员出于他们的目的访问真实的生产数据源是不合适的。服务虚拟化使测试团队能够综合地生成数据,例如,正确格式化的传真社会安全号码,然后他们可以使用这些号码测试功能。

员工培训

公司可以使用服务虚拟化来培训员工日常使用的应用程序。这就避免了培训人员必须在软件的实际生产版本中进行培训,这可能会绑定到多个复杂的应用程序,并防止他们修改或删除任何敏感数据。

合作伙伴

企业经常向客户或业务伙伴公开API,包括测试环境以促进轻松的集成。就像其他环境一样,为合作伙伴维护这些测试环境是有成本的。服务虚拟化是一种极好的技术,可以让合作伙伴以较低的成本访问您的API的沙盒环境。

服务虚拟化的最佳实践

注意所需的服务虚拟化。

无需创建您正在虚拟化的全部甚至大部分实际系统行为;您只需要实现必要的交易。并且不要试图模仿临时请求。如果您从有缺陷的输入中遇到一个错误的测试用例,您可以生成一个复制它的虚拟化事务。

识别您支持的测试用例。

只有在您了解了案例与虚拟服务的交互方式之后,您才能在虚拟服务中包含行为。您的测试计划应该准确地描述在虚拟化中包含哪些事务。允许测试计划驱动您将要虚拟化的事务。

测试正确的系统。

确保您构建的测试场景提供了正在测试的系统的验证,而不是服务虚拟化。模拟依赖组件的理想副本。同时,虚拟化应该足够智能,可以让客户完成工作流程。例如,当对银行进行UI测试时,虚拟服务无需验证账户余额,只需要正确描述取款或存款即可。

每个团队都应该开发自己的虚拟服务。

每个团队都有自己的需求,当他们创建自己的虚拟资产版本时,如果出现一些冗余,也不会造成任何损害。尝试创建多个团队必须使用的服务虚拟化只会生成另一个有限的服务。最佳实践是开发真实服务的团队也创建虚拟服务,因为他们拥有本地专业知识。

不要使用随机响应。

随机响应不会产生可重复的功能测试。如果需要改变从某个请求接收到的数据,最好的方法是为一组可比较的输入创建一个不变的响应集。相反,用随机输入改变流量传播。

避免数据过载。

匹配具有完全相同响应的多个事务需求意味着高维护。例如,只匹配帐号的最后一位数字。将多个唯一的帐号映射到单个事务解决了性能测试数据库缓存的问题。

确保您的应用程序能够处理失败。

大多数测试计划的正面测试覆盖场景较少,而负面的场景较多。这有助于开发人员发现异常。您可以更容易地识别狭窄测试用例中的故障情况,而不是系统范围的情况。

让使用者构建虚拟服务。

使用者了解他们所依赖的行为。在正常的SOA(面向服务的体系结构)环境中,服务所有者是不知道的。因此,与服务所有者的密切关系仍然至关重要,因为如前所述,本地专业知识可以支持更智能、更局扩展性的服务。

数据虚拟化示例

大多数企业将数据存储在许多不同的位置,从硬件到云端。该信息适用于多种应用程序和文件格式。服务虚拟化允许任何应用程序访问相关数据,不用考虑数据的格式、来源或位置。

在这种情况下,服务虚拟化是访问存储系统的应用程序和其中的数据之间的软件层。该层根据需要解释应用程序的查询或数据请求,并提供涵盖多个系统的结果。

注意:由于所有软件组件都依赖于测试数据的有效性,因此制造测试数据可能会比较困难。一旦测试数据被使用,它就不能再被重用,直到系统状态被恢复。使用服务虚拟化,虚拟测试数据可以基于一个小的示例和推断的约束来“增长”。可以根据需要重用和重新生成该数据。

Screen capture of Parasoft Virtualize in CTP

如何开始使用服务虚拟化

Screen capture of Parasoft Service Virtualization Deployments and Events notifications.

首先,最好与Parasoft的专业人士讨论如何将您的业务需求与Parasoft提供的服务虚拟化专业知识相匹配。在确定您的需求之后,我们将指派一个服务虚拟化团队来解决这些需求。该团队与您的公司合作,制定一个整体计划和最佳方法,其中包括测试用例,以便在问题发生之前获得解决问题所需的数据,这是服务虚拟化的主要优势之一。

想了解更多? 阅读我们的实用指南,找到您的团队理想的服务虚拟化起点,并确定适合您需求的最佳部署模型。

Parasoft如何提供帮助?

使用服务虚拟化让持续测试更容易、更快捷。Parasoft的服务虚拟化平台使开发人员或测试人员能够尽早将自动化测试融入软件开发,同时在需要时交付虚拟和稳定的服务。

轻松地从单个用户扩展到跨团队的完整DevOps部署。通过更早地构建集成和稳定依赖关系来减少软件开发和测试成本。

避免使用生产环境进行测试的成本。模拟在敏捷 DevOps 环境中无法访问或不稳定的服务。

常见问题

一些组织没有这样做,特别是如果他们没有在沉重的截止日期压力,或者他们已经获得了全面的测试环境。但是,拥有相互依赖的复杂系统的大公司可以实现主要的好处,例如:

  • 通过减少等待和配置时间以及消除访问费用来降低运营费用。
  • 减少资本开支,因为公司使用更少的硬件,更少的实验室资源和更少的许可证。
  • 降低风险,因为开发团队更早、更快、更彻底地进行测试。
  • 通过促进创新和加快上市时间来增加收入。

通过创建更完整的服务和API模拟,服务虚拟化超越了存根和模拟。存根只是不涉及整个程序的小型系统例程。模拟模仿实际代码,但不模拟整个程序。另一方面,服务虚拟化提供了端到端测试应用程序的能力。它还具有模拟真实行为、不使用真实数据和大量服务器空间的优点,同时还可以获得有助于避免故障和bug的全面信息。

服务虚拟化测试工具为所有具有包含通信和消息传递的正常或定制协议的系统提供真实的模拟响应。其中包括大型ERP,如SAP、大型机、数据库、移动网络、UI和第三方应用程序等。