1

这是我的场景:

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

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

我希望创建的测试应该是

  • 与数据库无关
  • 提供可以显示趋势的结果,并且可以使用 Jenkins 等 CI 工具进行配置

所以,我的问题是,测试这种场景的最佳方法是什么?是否有任何可用的工具可以帮助我实现这一目标?

4

1 回答 1

1

与数据库无关

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

DBUtils

Commons DbUtils 库是一小组旨在使使用 JDBC 更容易的类。JDBC 资源清理代码是普通的、容易出错的工作,因此这些类从您的代码中抽象出所有清理任务,让您首先完成您真正想要使用 JDBC 执行的操作:查询和更新数据。

MyBatis

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

两者都会为您解决问题。通过对细节的高度关注,您将设法提供足够灵活的解决方案并根据需要测试尽可能多的数据库。

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

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

在此处输入图像描述

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

适当的测试

请确保您的测试策略定义明确,并且您不会错过任何内容:

  1. 负载测试
  2. 压力测试
于 2013-02-17T23:07:00.647 回答