使用数据库作为数据输入而不是CSV Jmeter

使用数据库作为数据输入而不是CSV Jmeter,jmeter,performance-testing,jmeter-plugins,Jmeter,Performance Testing,Jmeter Plugins,我目前正在使用CSV文件来驱动jmeter测试。(“CSV数据集配置”) 有没有一种方法可以使用SQL或oracle DB来输入jmeter脚本的数据,而不是使用CSV 示例:使用用户名和密码(测试数据)连接到db,并在Jmeter脚本中使用该数据登录。(这是一个非常简单的示例,但我将从数据库中获取应用程序不同部分的数据,并将其用作输入—这正是我试图实现的目标) 因为我有很多数据,在应用程序的后端使用不同的数据库 欢迎提出任何其他建议 Jmeter版本:3.0 应用:基于Web的应用有很多很好的

我目前正在使用CSV文件来驱动jmeter测试。(“CSV数据集配置”)

有没有一种方法可以使用SQL或oracle DB来输入jmeter脚本的数据,而不是使用CSV

示例:使用用户名和密码(测试数据)连接到db,并在Jmeter脚本中使用该数据登录。(这是一个非常简单的示例,但我将从数据库中获取应用程序不同部分的数据,并将其用作输入—这正是我试图实现的目标)

因为我有很多数据,在应用程序的后端使用不同的数据库

欢迎提出任何其他建议

Jmeter版本:3.0
应用:基于Web的应用

有很多很好的理由不考虑这条路径。对于大多数考虑过此选项的人来说,路径是使用与被测应用程序相同的数据库。这会引入生产中不存在的查询负载,并且由于查询可能是非优化的,并且由索引支持,因此,仅通过请求数百或数千个附加代理查询应用程序的数据库,就很可能会扭曲被测应用程序

任何成熟度的大多数性能测试工具都会在测试开始时将数据文件拉入RAM,以避免与数百/数千个线程的驱动器读取头争用相关的失真效应,这些线程都试图从文件中读取数据,可能位于文件的不同区域。如果您有一个带有小型SSD缓存的驱动器,并且数据文件足够小,可以放入缓存,或者总共有一个SSD,则可以缓解其中的一些问题。对于读取,您仍然会产生等待响铃0事件的中断开销。出于同样的原因,建议在测试期间尽量减少日志写入

虽然每次都要点击磁盘来获取参数值的代价很高,但网络的代价要高出几个数量级。值得思考。如果你必须走这条路线,请考虑一个队列解决方案没有安装在相同的基础设施作为你的应用程序在测试中。RabbitMQ是我比较喜欢的一种,因为它是查询的本机web界面。见鬼,您甚至可以使用来自Amazon、Cloud Azure、IBM Public Cloud和其他公司的队列解决方案,因为即使每月进行大量测试,您也可能永远不会接近非免费层。如果需要重用数据,那么在迭代开始时将数据从队列中弹出,并在迭代结束时将其推回到同一队列中,将确保在重用顺序中插入某种程度的随机性,因为虚拟用户的运行时间略有不同。如果您查看的是唯一数据,则在对队列进行n次尝试后,您可以终止该队列,并发现不再有可供处理的唯一数据。

JMeter提供了可以设置数据库主机名、端口、凭据等以及以下测试元素以执行SQL查询的位置:

您还需要为或下载JDBC驱动程序,并将其添加到


有关更多信息,请参阅文章。

您所述内容的可能重复实际上可能是一个问题。然而,我相信这种方法在其他情况下也很有用,例如:使用DB获取的数据创建HTTP请求有效负载,针对给定的服务触发,等等。