如何使用 java 对 Web 服务进行负载测试?

Posted

技术标签:

【中文标题】如何使用 java 对 Web 服务进行负载测试?【英文标题】:How to do load test web services using java? 【发布时间】:2018-06-19 16:05:27 【问题描述】:

我正在尝试开发一个实用程序,用于对基于 Soap xml 和消息队列的 Web 服务进行负载测试。需要具有在特定时间间隔调用实用程序以测试服务的功能(有点像心跳检查)。到目前为止,我已经使用 Loadrunner、Silkperformer 和 SoapUI 进行手动测试。但是我如何从头开始制作这样的东西,以便我还可以在实用程序中自动调用我的自定义 Java 代码。我想在每次心跳后将结果导出到 excel 文件中。

我想到了可能的解决方案:-

在 java 中编写单元测试并使用像 AXIS 2 这样的库,使用计时器类。

但问题是 我如何从 java 实用程序生成负载 到服务(例如 100 个用户)。另外,对于基于 Web 的调用(soap xml 的请求和响应),我应该使用 loadrunner(lr) 或 soapUI 的 API 而不是 AXIS 2?

如果需要,请询问更多详细信息,因为我找不到一个很好的实现或答案,它会帮助很多人。

【问题讨论】:

【参考方案1】:

    定期调用它:

    Quartz Sheduler 将您的 Java 项目置于 CI 解决方案下,即Jenkins 使用内置的操作系统机制,如Windows Task Scheduler 或Crontab

    添加负载:

    ThreadPoolExecutor JMH 使用来自 Java 代码的“真实”负载测试工具,即Apache JMeter

    将结果写入 excel:Apache POI

【讨论】:

我应该使用哪些 API 来进行调用?来自 Loadrunner 或 soapUI 或只是一个开源 API 的东西。因为我还需要计算时间。由于系统时间记录的准确性较低,我避免为此编写自己的逻辑。 我个人会选择Apache HttpComponents。有些人坚持Rest Assured。 我怀疑它们是否支持 SOAP XML 或消息队列?【参考方案2】:

LoadRunner 中的 Java 模板虚拟用户

【讨论】:

以上是关于如何使用 java 对 Web 服务进行负载测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何对特定数量的请求/用户进行负载测试

如何使用JMeter进行性能和负载测试

Jmeter实现简单web负载测试

如何对基于 Webrtc 的 Web 应用程序进行负载测试 [关闭]

如何使用 JMeter 对 Websocket 进行负载测试?

Web服务中的负载测试