使用服务虚拟化超越测试数据障碍

软件开发人员和测试人员每天面临的主要挑战之一是无法获取真实数据。很多时候,作为开发人员,您正在与下游服务进行交互,并且必须使用该环境中可用的任何数据,因为获取针对您的方案的实际可用数据的过程非常耗时。通常,您找不到所需的数据,并且必须从生产中获取数据,这带来了一系列新的挑战。

使用服务虚拟化超越测试数据障碍

数据是成本问题

软件开发人员和测试人员每天面临的主要挑战之一是无法获取真实数据。很多时候,作为开发人员,您正在与下游服务进行交互,并且必须使用该环境中可用的任何数据,因为获取针对您的方案的实际可用数据的过程非常耗时。通常,您找不到所需的数据,并且必须从生产中获取数据,这带来了一系列新的挑战。

更复杂的是,不能从生产中使用个人数据,因为这会增加组织被盗,丢失或暴露的风险。以雅虎最近的一次泄密事件为例,那里有5亿个电子邮件帐户被泄密,或者约680亿的LinkedIn用户最近遭到数据泄露。这些漏洞发生在安全性很高的生产级别。开发区域中使用的生产数据并不少见,安全性往往较低。以这种方式进行运营会对组织的品牌声誉造成重大风险。因此,必须清除或屏蔽敏感数据,这是一个耗时的过程,需要数据专家。


使用服务虚拟化解决数据成本

无论如何,数据是一个成本问题,因为它会使您减速。通过使用服务虚拟化,您不仅可以控制从属应用程序的行为和功能以稳定测试环境,而且还可以完全控制那些从属应用程序的数据源并提供当天需要的任何数据。此时,规则发生了变化,因为您现在不仅可以控制数据,还可以控制逻辑。您可以创建符合您希望的行为的服务,而不是严格遵循其正常行为模式。

在先前的博客中,我讨论了具有相同基本原理的缺陷虚拟化。但是我们在这里谈论的是服务逻辑。该博客将迈出下一步,并讨论数据控制。首先,让我们集中讨论测试人员和开发人员每天面临的当前数据挑战。

开发人员生命中典型的数据日

使用服务虚拟化超越测试数据障碍

在应用程序开发过程的开始,测试所需的数据通常很简单,因为该服务的全部功能尚未实现。随着开发继续增加功能,测试成熟度增加,数据复杂性也增加。

例如,让我们使用我以前的博客文章中的示例假设我是一家航空公司,正在开发机票页面上的功能。我需要验证用户是否可以获取他们的航班机票,并且取决于未来航班的飞行距离,用户将获得以下几种响应之一,随着时间的推移,响应会改变。在开发过程的开始,我可以简单地在未来3个月的飞行中生成一堆复杂的数据,这将使我能够进行目前需要的所有测试。但是当然问题是我只是在定时炸弹上点燃了保险丝。在三个月内,这些漂亮的数据将过期,而我可能已经忘记了它。突然我的所有测试都会在错误的时间开始失败,因为发布的版本即将发布,而我根本没有时间重新生成数据……听起来很熟悉吗/span>

开拓可持续发展之路

通过在开发过程的早期引入服务虚拟化,您可以为提供解决这些数据挑战的解决方案奠定基础。虚拟服务的数据可以从多个位置获取,但是从一开始,简单的虚拟服务就从固定数据开始。您创建这些“固定资产”或模拟来解决假设情景测试阶段并使事情变得非常简单。这里的想法是,“我只需要一个可以响应此特定有效负载的服务。”

随着虚拟服务的成熟,有必要将数据与服务分离,这样,如果您想在仿真中添加逻辑,则实际上不必打开虚拟服务即可操作数据。实际上,成熟的用户以某种方式创建虚拟服务,即数据源可以处理大部分逻辑。然后,他们可以将数据源交给测试人员或测试数据管理团队,以插入此服务将来可能需要的任何数据。向服务添加新功能就像向数据源添加一行一样简单。这样可以共享虚拟化工作,并且一个虚拟服务可以容纳多个团队。虚拟服务成为可以根据需要增长和变化的生物。

使用服务虚拟化超越测试数据障碍

这些数据从哪里来/h4>

一旦开发创建了最初的简单服务,测试团队就该接手了。测试团队将有更复杂的数据要求。这些数据从哪里来常,您从记录和回放中获取此数据。这通常是创建虚拟服务时的第一步。您记录应用程序和从属后端系统之间的事务,并使用此记录来创建虚拟服务。这使您可以创建一个非常有用的基准数据源,可以在需要时进行扩展。在我的航空公司示例中,这将使我们能够获得现实的航班号和目的地。数据将具有所有必要的复杂性,包括多航段和国际航班。数据源关联处理所有复杂的请求/响应关系,并且由于对“真实”数据的后续更改可以简单地重新记录并合并到现有的虚拟服务中,因此获取新数据变得无关紧要。

使用服务虚拟化超越测试数据障碍

我们记录的数据不是来自生产环境,这可以防止我们在较低环境中遭受数据泄露。此类数据面临的挑战是,由于它不是来自生产环境,因此它不是完整的或最新的。在这里,数据生成和操作成为服务虚拟化的强大功能。

不存在的数据可以用简单的生成数据进行补充,以完全满足我们的需求。在我的航空公司示例中,响应中的航班日期始终可以是今天的日期,但要偏移3个月。通过使用数据生成,此任务变得微不足道。

通过提供动态数据来管理任何“未定义的”请求/响应关系,我们可以继续处理和操纵数据。这些是静态数据集中永远不会存在的关系类型。在航空公司示例中,假设向下游组件发出请求时,它会提供用户的当前位置,并将其用作响应中的出发点。由于我们的测试用例会不断变化,因此真正的服务必须维护所有当前位置,以便可以在响应中提供它们。通过使用虚拟服务,您不需要维护所有位置,只需将用户的当前位置动态返回为出发城市即可。

最后,可以以静态方式提供否定数据,也可以将其插入数据源以简化否定或异常测试。例如,在我的航空公司示例中,这将是插入随机取消或延误的航班,以验证用户在离开机场之前已收到通知。

在下面的视频中,我描述了开发人员在处理数据时面临的一些典型挑战,并向您展示了如何以我认为是服务虚拟化的一些非常酷的方式克服这些挑战。

使用服务虚拟化超越测试数据障碍

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月1日
下一篇 2021年1月1日

相关推荐

发表回复

登录后才能评论