如何测试java DBMS应用程序的性能

时间:2013-02-11 06:23:40

标签: java database junit jenkins performance-testing

以下是我的情景:

我有一个java应用程序,它从数据库D1的表T1中读取数据,处理它并将其放入另一个数据库D2的另一个表T2中。这是实时发生的,即,当在表T1中插入或更新记录时,应用程序将挑选数据,处理数据并将其推送到目标表。我希望使用测试(最好是JUnit)和/或性能框架来监控这个应用程序的性能。在我的测试用例中,我希望有以下内容

  • 在数据库D1的表T1上以固定间隔插入并更新固定数量的固定时间记录。
  • 在固定时间之后,检查数据库D2的T2中存在的记录数或查找是否存在特定记录。

我想要创建的测试应该是

  • 数据库不可知
  • 提供可显示趋势的结果,并可使用Jenkins等CI工具进行配置

所以,我的问题是,测试这种情况的最佳方法是什么?有没有可用的工具可以帮助我实现这个目标?

1 个答案:

答案 0 :(得分:1)

数据库不可知

为了实现这一点,我建议使用最简单的SQL和一些低级JDBC抽象层:

DBUtils

  

Commons DbUtils库是一小组专门设计的类   更容易使用JDBC。 JDBC资源清理代码是平凡的,错误   倾向于工作,所以这些类抽象出所有的清理任务   你的代码让你知道你真正想用JDBC做什么   第一位:查询和更新数据。

MyBatis

  

MyBatis是一个支持自定义的第一类持久性框架   SQL,存储过程和高级映射。 MyBatis消除了   几乎所有的JDBC代码和手动设置参数和   检索结果。 MyBatis可以使用简单的XML或Annotations   配置和映射原语,Map接口和Java POJO(Plain   旧Java对象)到数据库记录。

两者都可以帮到你。通过对细节的高度重视,您可以提供足够灵活的解决方案,并根据需要测试多个数据库。

提供可显示趋势的结果,并可使用Jenkins等CI工具进行配置

定义多个KPIs并确保您可以定期获取所有值。例如,您可以测量吞吐量(每秒记录数)。定期导出数据(例如CSV或属性)并使用PlotPlugin进行可视化:

enter image description here

您还可以查看相关问题:How do I plot benchmark data in a Jenkins matrix project

正确测试

请确保您的测试策略定义明确,不会遗漏任何内容:

  1. Load testing
  2. Stress testing