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

时间:2017-11-29 12:09:23

标签: jmeter performance-testing jmeter-plugins

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

有没有办法可以使用SQL或oracle DB输入jmeter脚本的数据而不是使用CSV?

示例:使用用户名和密码(测试数据)连接到db,并在Jmeter脚本中使用它来登录。 (这是一个非常简单的例子,但我会从数据库中获取应用程序不同部分的数据并将其用作输入 - 这就是我想要的工作)

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

欢迎任何其他建议。

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

2 个答案:

答案 0 :(得分:1)

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

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

虽然每次为参数值打击磁盘都很昂贵,但网络的价格要高出几个数量级。只是值得深思。如果您必须走这条路线,请考虑未与您的测试应用程序安装在同一基础架构上的队列解决方案。 RabbitMQ是我喜欢的,因为它的本地Web界面用于查询。哎呀,您甚至可以使用来自亚马逊,云Azure,IBM公共云和其他人的队列解决方案,因为即使每月进行大量测试,您也可能永远不会接近非免费等级。如果您需要重用数据,那么在迭代开始时从队列中弹出数据并在迭代结束时将其推回到同一队列将确保在重用顺序中插入一定程度的随机性,因为虚拟用户略有不同运行的时间。如果您正在查看唯一数据,那么您可以在对队列进行 n 次尝试后终止,并找不到可用于处理的唯一数据。

答案 1 :(得分:0)

JMeter提供JDBC Connection Configuration,您可以在其中设置数据库主机名,端口,凭据等以及以下测试元素来执行SQL查询:

您还需要下载MS SQL ServerOracle的JDBC驱动程序,并将其添加到JMeter Classpath

有关详细信息,请参阅The Real Secret to Building a Database Test Plan With JMeter文章。