自动化数据库负载测试

Posted

技术标签:

【中文标题】自动化数据库负载测试【英文标题】:Automate Database Load Testing 【发布时间】:2014-05-30 18:13:56 【问题描述】:

我为 JMeter 编写插件来。插件的主要思想是在提供最少的信息(连接字符串、用户数量、吞吐量、被测试表的模式等)时创建。我知道这种随机测试与用户的实际行为不匹配,但目的是在几分钟内启动测试并获取数据库工作的统计信息,例如选择或 DML 查询响应时间。

可以自动测试数据库的哪些方面?我怎样才能自动测试这些方面?例如表、索引、触发器、函数...... 我可以通过这种方式得到什么统计数据? 有没有类似的软件? 你有什么主意吗? :)

首先,我从数据库中获取所有表的元数据,并从数据库中的现有数据创建查询(DML 和 1 个表的所有可能选择)并将它们放入队列中。然后采样器从队列中获取查询并执行。

【问题讨论】:

我一开始用Oracle数据库测试 这是一个非常广泛的问题,可能需要一本书来回答。你能缩小范围吗? 是的,这是个难题。我正在寻找算法(知道可以自动测试什么以及如何测试)。我为 JMeter 制作了一个插件,它为 DB 中的特定模式生成查询(它使用表中的数据来创建所有可能的查询)。我还配置了一个 JMeter 项目来执行此查询并收集统计信息(仅在用户端)。这个 JMeter 项目使用随机查询生成数据库加载。我认为运行这个项目一段时间会自动测试表和索引(我还为每个查询收集 CPU|Memory|I/O 的统计数据,并通过 DBMS 使用服务器资源)。 我还考虑自动测试触发器的性能。 【参考方案1】:

有几个问题可以帮助您了解您首先要去的地方。

1) 您希望测试的具体指标是什么? 2)这是用于比较不同的数据库服务器/最终产品,还是用于特定数据库来衡量您的索引设置的好坏? 3) 是否会创建多个并发连接来测试记录锁定等?

【讨论】:

1) 在我看来,这样的自动化测试应该使用尽可能多的指标以及在这样的测试中有意义的指标。我想首先使用响应时间、平均响应时间、错误率、吞吐量、内存和 CPU 利用率。 2) 它是针对特定数据库来衡量您的索引设置的好坏 3) 是的。我想同时和单独加载带有选择/更新/插入/删除的数据库【参考方案2】:

我认为你应该从Building a Database Test Plan等官方文档开始。

一旦您对 JDBC Connection Configuration 的详细信息感到满意,在 JMeter 类路径(通常是 /lib 文件夹)中有 ojdbc6.jar 并且将能够执行示例查询,例如 从对偶中选择 sysdate;

您可以开始查看 Using JDBC Sampler in JMeter 2.6 指南以获取高级信息。

【讨论】:

thk :) 我对自动化的想法更感兴趣。我最近为 JMeter 编写了一个自动生成数据库随机负载的插件。现在我考虑让算法更复杂,以生成多表连接的选择,一次为不同数量的行生成更新。

以上是关于自动化数据库负载测试的主要内容,如果未能解决你的问题,请参考以下文章

负载和尖峰测试之间的区别

性能测试,负载测试,压力测试有啥区别

全网火爆,Jmeter性能场景设计 - 压力负载测试性能场景+分析性能指标

对 .NET 桌面客户端进行负载测试

性能测试- 性能测试指标:

性能测试峰值