【问题标题】:Using Database a an input of data instead of CSV Jmeter使用数据库输入数据而不是 CSV Jmeter
【发布时间】:2017-11-29 12:09:23
【问题描述】:

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

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

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

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

欢迎提出其他建议。

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

【问题讨论】:

标签: jmeter performance-testing jmeter-plugins


【解决方案1】:

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

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

请参阅The Real Secret to Building a Database Test Plan With JMeter 文章了解更多信息。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 您所说的实际上可能是一个问题。然而我相信这种方法在其他情况下也很有用,例如:使用 DB 获取的数据来创建 HTTP 请求有效负载,针对给定的服务触发,以及类似的东西。
    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多