分享

使用Redis Dataset JMeter插件即时控制您的测试数据

 软件测试test 2020-10-16

   试想一下,你有一个应用程序,你要性能测试,以及应用程序需要同时检测被消耗数据。如果您有这种需要(并且您熟悉JMeter),那么您可能会使用CSV数据集config。CSV数据集配置具有一些出色的功能,可让您控制测试将如何使用数据的大多数方面。

     但是,CSV数据集配置的一个主要缺点是,一旦测试开始,如果要更新正在使用的数据,则需要有权访问JMeter正在使用的文件。否则,您将锁定可用于测试的数据。对于在本地计算机上运行的测试,这不应该成为问题,您只需将CSV文件与新数据一起保存(或删除不需要的数据),JMeter只要有更改就可以反映该更改。仍然打开该文件。

     当您使用BlazeMeter扩展测试范围时,就会出现问题。在这种情况下,将CSV文件用于数据将意味着在云中运行的每个测试实例将拥有其自己的数据副本,这使得对数据进行更改成为问题。我们想要的是一个更像Virtual Table Server(VTS)的流程,在这里我们将使用位于中央的数据源。这是我们要使用Redis数据集插件解决的问题。

    请注意,要遵循这种情况,您需要拥有一个BlazeMeter帐户,一个运行BlazeMeter的云引擎可以到达的Redis服务器以及在JMeter中安装Redis数据集插件(您可以从插件中获取它)经理!)。

01
设置我们的Redis列表

   我的Redis服务器托管在云中,但是您也可以将其安装在本地计算机上。我们要做的第一件事是使用redis-cli命令为LPUSH或RPUSH添加一些值到Redis列表(取决于您是否希望将其添加到列表的开头或结尾),如下 所示:

  LPUSH列表键value1 value2 value3

     关于Redis的一件好事是,如果列表的键不存在,它将使用此命令创建。具体来说,在撰写本文之前,我在名为“ jmeter”的列表中添加了三行,其中每个条目代表两个变量,可以由我们的JMeter测试使用,以逗号分隔,如下所示:

   LPUSH jmeter值11,值12值21,值22值31,值32

     现在,我要使用SSH(安全Shell)进入我的Redis服务器并开始使用该列表。我们可以使用LRANGE命令检查现有列表中的值。在这里我们使用

量程jmeter 0 -1

     指定我们要查看列表中的所有条目,从索引0(第一个)到-1(最后一个)。

02
配置JMeter

   因此,我们可以看到所有元素都已添加,并且每个元素都具有所需的格式。接下来,我们将配置JMeter以利用此数据集。

   启动JMeter,添加线程组,然后添加Redis数据集配置元素。在查看Redis数据集配置时,您将看到一些我们需要指定的字段才能使它起作用。首先检查连接配置:

    我们需要指定托管Redis的服务器的IP地址(或主机名),Redis使用的端口以及用于Redis身份验证的密码。请注意,如果您在本地运行Redis,则当我们将此测试引入BlazeMeter时,无法使用localhost(或127.0.0.1),在这种情况下,您将需要可远程访问Redis服务器的公共IP地址。

另一个重要信息是如何使用数据。

     我们需要指定在Redis中用于标识列表的键,并使用“变量名”字段来确定如何在脚本中引用变量(请注意,这些变量应以逗号分隔)。由于我们在Redis服务器上用逗号分隔了值,因此我们可以将Delimiter保留为其默认值。我们还需要选择数据源类型。

     在这一点上,值得注意的是,我们可以使用Redis Set或Redis List。我选择使用列表,因为它最适合我们,就像使用CSV数据集配置一样。使用Set和List的区别在于List具有特定的顺序,并且可以具有重复的值,而Set将以随机顺序检索,而添加到Set的重复值将被忽略。

    接下来,我将在测试中添加一个虚拟采样器以说明该用例,而无需创建任何实际负载。

     这样我们就可以看到更改发生的时间,我将“虚拟采样器”的名称设置为“虚拟:$ {first}和$ {second}”,标签将告诉我们从Redis读取了什么值。服务器。在本地进行此测试以确保我们的测试可以连接到Redis之后,让我们将该测试上传到BlazeMeter。

03
在BlazeMeter上扩展我们的测试

    请注意,与使用CSV数据集配置不同,我们不需要包含任何其他文件,因为我们将远程获取数据。

在运行此测试时,我们看到显示的标签中填充了来自Redis服务器的数据。

我们去添加一个值到我们的Redis列表中

RPUSH jmeter值41,值42

    花几分钟时间,然后在测试运行时,JMeter将与您的Redis Server取得联系,以获取其应使用的下一组值。当报告数据在BlazeMeter中更新时,我们将看到一个新标签。

     向后工作,以查看何时将这些数据引入测试中,我们可以将其隔离,并看到标签“ Dummy:value41和value42”在整个测试过程中的一部分开始显示,同时对应于Redis的更改服务器。测试使用的是云中的一个引擎还是跨数百个引擎都没关系,我们以一种更新所有测试中使用的所有数据的方式构建了它(但请确保Redis Server可以处理负载) !)。

     您是否曾经进行过测试并且对自己进行了思考:“好吧,我希望我能在开始之前为此添加更多数据”,而只需要放弃测试运行并重新开始进行您真正想要的测试?您是否曾经运行过“日志重播”性能测试,该测试正在从CSV读取URL,并且突然希望您的所有虚拟用户都专注于点击一个URL?您是否曾经花时间设置一个大型测试事件,却意识到一旦运行,您的1000个数据条目中就有一个是错误的,并且总是会导致错误?

测试时可以使用多种方式访问位于中心的可调整数据源,这些只是其中的几种。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多