使用数据库输入数据而不是 CSV Jmeter
Using Database a an input of data instead of CSV Jmeter
我目前正在使用 CSV 文件对 jmeter 测试进行数据驱动。 ("CSV Data Set Config")
有没有一种方法可以使用 SQL 或 oracle 数据库来输入 jmeter 脚本的数据,而不是使用 CSV?
示例:使用用户名和密码(测试数据)连接到数据库,并在 Jmeter 脚本中使用它进行登录。 (这是一个非常简单的示例,但我将从数据库中获取应用程序不同部分的数据并将其用作输入 - 这就是我正在努力工作的)
因为我有很多数据并且在应用程序的后端使用不同的数据库。
欢迎提出任何其他建议。
Jmeter版本:3.0
Application:Web 基于应用程序
不考虑这条道路有很多很好的理由。对于大多数考虑过此选项的人来说,路径是使用与被测应用程序相同的数据库。这引入了生产中不存在的查询负载,并且由于查询可能未优化并由索引支持,因此您很可能仅通过要求数百或数千个额外代理查询数据库来扭曲被测应用程序申请。
任何成熟度的大多数性能测试工具都会在测试开始时将数据文件拉入 RAM,以避免与 hundreds/thousands 线程的驱动器读头争用相关的失真效应,所有线程都试图从文件,可能位于文件的不同区域。如果您有一个带有小型 SSD 缓存的驱动器并且数据文件足够小以适合缓存或整个 SSD,则可以缓解其中一些问题。您仍然会招致等待 ring 0 事件以进行读取的中断开销。出于同样的原因,建议在测试期间尽量减少日志写入。
虽然每次都必须访问一个参数值的磁盘非常昂贵,但网络的成本要高出几个数量级。只是值得深思。如果您必须走这条路,请考虑一个未安装在与您的被测应用程序相同的基础设施上的队列解决方案。 RabbitMQ 是我更喜欢的一种,因为它具有用于查询的本机 Web 界面。哎呀,您甚至可以使用来自 Amazon、Cloud Azure、IBM Public 云和其他云的队列解决方案,因为即使每月进行大量测试,您也可能永远不会接近非免费层。如果您需要重用数据,那么在迭代开始时将数据从队列中弹出,并在迭代结束时将其推回同一个队列,这将确保在重用顺序中插入某种程度的随机性,因为虚拟用户采取的略有不同次 运行。如果您正在查看唯一数据,那么您可以在对队列进行 n 次尝试并且找不到更多可用于处理的唯一数据后终止。
JMeter 提供 JDBC Connection Configuration,您可以在其中设置数据库主机名、端口、凭据等以及以下测试元素以执行 SQL 查询:
您还需要为 MS SQL Server or for Oracle and add it to JMeter Classpath 下载 JDBC 驱动程序。
有关详细信息,请参阅 The Real Secret to Building a Database Test Plan With JMeter 文章。
我目前正在使用 CSV 文件对 jmeter 测试进行数据驱动。 ("CSV Data Set Config")
有没有一种方法可以使用 SQL 或 oracle 数据库来输入 jmeter 脚本的数据,而不是使用 CSV?
示例:使用用户名和密码(测试数据)连接到数据库,并在 Jmeter 脚本中使用它进行登录。 (这是一个非常简单的示例,但我将从数据库中获取应用程序不同部分的数据并将其用作输入 - 这就是我正在努力工作的)
因为我有很多数据并且在应用程序的后端使用不同的数据库。
欢迎提出任何其他建议。
Jmeter版本:3.0 Application:Web 基于应用程序
不考虑这条道路有很多很好的理由。对于大多数考虑过此选项的人来说,路径是使用与被测应用程序相同的数据库。这引入了生产中不存在的查询负载,并且由于查询可能未优化并由索引支持,因此您很可能仅通过要求数百或数千个额外代理查询数据库来扭曲被测应用程序申请。
任何成熟度的大多数性能测试工具都会在测试开始时将数据文件拉入 RAM,以避免与 hundreds/thousands 线程的驱动器读头争用相关的失真效应,所有线程都试图从文件,可能位于文件的不同区域。如果您有一个带有小型 SSD 缓存的驱动器并且数据文件足够小以适合缓存或整个 SSD,则可以缓解其中一些问题。您仍然会招致等待 ring 0 事件以进行读取的中断开销。出于同样的原因,建议在测试期间尽量减少日志写入。
虽然每次都必须访问一个参数值的磁盘非常昂贵,但网络的成本要高出几个数量级。只是值得深思。如果您必须走这条路,请考虑一个未安装在与您的被测应用程序相同的基础设施上的队列解决方案。 RabbitMQ 是我更喜欢的一种,因为它具有用于查询的本机 Web 界面。哎呀,您甚至可以使用来自 Amazon、Cloud Azure、IBM Public 云和其他云的队列解决方案,因为即使每月进行大量测试,您也可能永远不会接近非免费层。如果您需要重用数据,那么在迭代开始时将数据从队列中弹出,并在迭代结束时将其推回同一个队列,这将确保在重用顺序中插入某种程度的随机性,因为虚拟用户采取的略有不同次 运行。如果您正在查看唯一数据,那么您可以在对队列进行 n 次尝试并且找不到更多可用于处理的唯一数据后终止。
JMeter 提供 JDBC Connection Configuration,您可以在其中设置数据库主机名、端口、凭据等以及以下测试元素以执行 SQL 查询:
您还需要为 MS SQL Server or for Oracle and add it to JMeter Classpath 下载 JDBC 驱动程序。
有关详细信息,请参阅 The Real Secret to Building a Database Test Plan With JMeter 文章。