logo Parasoft 行业资讯(一) 我也要发布文档

如何使用状态虚拟化来诱使产品经理专注于重要的事情



对于最终用户,他们并不关心您网站上发生的后端疯狂。用户最关心的是完成任务,无论他们要完成网页上的任务的顺序是什么。可以模拟这种行为的虚拟服务将允许进行更早的端到端测试,更好地覆盖所有业务逻辑要求以及向产品经理进行有效的产品演示。

在我们不那么迷人的冲刺评论中,一名产品经理对我们团队的演示感到沮丧,因为我们只能单独显示新实施的功能/服务,而不能显示端到端的工作流程。这样做的原因仅是因为尚未实现足够的功能来跨不同服务链接数据。对于特定的用户故事,产品经理不希望看到难题的各个部分,而是希望将各个部分整合在一起:业务逻辑。

因此,这是一家制造软件测试工具的公司,我们使用其中一种工具向我们的产品经理提供了他想要的东西。从那时起,我们在许多演示和整个工作流程中都利用了服务虚拟化(不知道这是什么?了解有关服务虚拟化的更多信息)。服务虚拟化使我们能够使用虚拟服务来表示不可用的服务,这些服务仍由其他以不同的sprint节奏工作的团队在开发中。它使我们能够站起来表现出现实的依赖行为或完全虚构的行为的“智能存根”,以满足我们的需求。通过模拟演示中不可用的部分,我们可以提供产品管理演示,以显示整个工作流程以获取我们所需的反馈,而不会陷入范围之外。


使用数据存储库CRUD工具进行服务虚拟化


虚拟化单个服务调用非常容易,但是确保这些单个调用作为整个系统的一部分进行相应的操作又是另一回事。当其中一些服务需要在两次调用之间维护持久性数据时,该主题会变得更加有趣。当涉及持久性数据时,对于虚拟服务来说,跨不同状态管理数据并真正模拟真实服务的行为以更准确地表示应用程序背后的业务逻辑至关重要。我们称此为“状态虚拟化”,您可以在我们的博客上阅读有关它的全部内容,以通过状态和状态转换测试为服务虚拟化增添生命。这是数据存储库CRUD工具出现的地方。

Parasoft Virtualize(我们的服务虚拟化解决方案)具有一项称为数据存储库CRUD工具的功能。创建了数据存储库CRUD(创建,读取,更新,删除)工具来处理通常与需要状态转换的Web服务相关的数据持久性问题。

考虑传统的购物车体验。假设购物车系统由3种网络服务组成:库存服务,购物车服务和付款服务。这些服务中的每一个都有自己的数据集,但是它们的记录共享一个元素或属性(库存ID,购物车ID,交易ID),需要遵循这些元素或属性才能进行下游服务。除共享元素外,购物车中的物品记录,它们的数量以及总的计算价格还需要在整个购物体验中进行维护,以完成结帐过程。

最小的解决方案是虚拟化固定方案,在该方案中,用户搜索静态商品,将商品添加到购物车,最后完成结帐。但是,我们知道在线购物可能会更加复杂。当真实服务与虚拟服务交换时,该行为对于与之交互的所有其他服务应该是无缝且透明的。因此,我们不能认为这是唯一针对虚拟服务运行的方案。

用户可能会突然感到不满或购物疲劳,决定添加其他商品,更新原始商品或将其全部删除。人类的行为是无法预测的。数据存储库CRUD工具允许我们通过动态创建和修改记录并在用户操作之间进行维护来模拟这种不可预测性。这使我们能够轻松完成在虚拟服务上引发的任何事件序列。该工具将轻松处理任何算术或其他逻辑。

除了我们的sprint演示,今年我有幸协助了两个单独的项目,这些项目证明了Data Repository CRUD工具的功能极为宝贵。让我一窥你。

在性能测试过程中稳定动态环境数据

与多个第三方服务集成的应用程序需要性能测试。开发团队已经拥有一两个静态记录,他们可以用来验证应用程序在整个测试过程中的表现是否符合预期。但是,为了使性能测试有效,在测试中执行的数据和操作将需要具有高可变性的随机数据,以正确模拟实际场景。各个数据集(包括第三方服务)之间的状态需要保持一致。对于开发团队来说,将新的数据库记录注入到每个依赖的第三方服务中就已经足够简单了,但是不幸的是,访问沙箱环境的成本很高,并且有很多潜在的麻烦。

该团队能够使用服务虚拟化和数据存储库CRUD工具成功实施其性能测试。在运行时虚拟化服务中不存在的任何记录都将由该工具以“全部捕获”配置以其初始状态创建。然后,虚拟服务将使用新创建的记录来成功响应该请求,并在测试的整个生命周期内对其进行修改。该设置令人惊讶地轻松,并为性能测试工具生成的每个唯一用户保证了真实可靠的端到端流程。

将实时数据注入被测系统

第二种情况不寻常,但是虚拟化当然很有趣。该案涉及测试与国有车辆登记系统配合使用的应用程序。每当将新的VIN(车辆识别号)添加到应用程序时,它都会向注册系统发送异步调用,以请求车辆的完整信息。如果系统中不存在该VIN,它将以未注册的形式返回。不幸的是,注册系统有一项强制性政策,要求一个人(是的,活着的,呼吸的人)手动插入新的车辆信息。如果在一定数量的请求后未注册所请求VIN的信息,系统将做出不同的响应。

对于异步服务,此一般行为是常见的。从本质上讲,这相当于一个孩子问“我们到了吗?”在旅途中——除非他们真的很近,否则通常会忽略一个问题。

一旦该人手动注册了信息,系统将以确认有效载荷进行响应。这里的目标是模拟车辆注册系统,以独立测试应用程序。面临的挑战是确定如何配置虚拟服务以在不同时间对相同请求做出不同响应。为实现此目的,我们使用了数据存储库CRUD工具来统计同一请求的调用次数。在达到特定计数值之后,CRUD工具将更新记录状态,以使虚拟资产做出不同的响应。 CRUD工具还配置为在预期的时间窗口内随机为任何请求的VIN创建新记录,以模拟手动注册过程。最初看起来很困难的事情可以通过正确的工具轻松完成。


总结


事实是,当涉及到最终用户或产品经理时,在简单的网页操作期间发生的后端疯狂是可以忽略的。用户最主要的担心是,无论他们要在网页上完成什么工作,无论到达那一步需要采取什么步骤,都将成功完成。可以模拟此行为的虚拟服务将允许进行更早的端到端测试,改善对所有业务逻辑要求的覆盖范围以及有效的产品演示。通过对Parasoft Virtualize CRUD工具用户界面和配置设计的最新增强,现在可以更轻松地处理复杂的场景并尽早提供涉众,产品经理和测试人员想要的真实功能。