2

我想通过快速连续调用数千次来对 Web 服务方法进行压力测试。该方法有一个字符串参数,我将在每次调用时有所不同。

我打算编写一个 Powershell 脚本来循环并多次调用此方法。

有一个更好的方法吗?

4

5 回答 5

3

如果您一个接一个地运行呼叫 - 它不会对您有太大帮助,因为它不会向您展示服务在许多同时连接的重负载下的行为方式。

使用一些多线程解决方案(我不知道powershell是否有这个)。

这里列出了一些开源测试工具。只需将您的 Web 服务设置为也接受 GET 请求,而不仅仅是 SOAP(默认),这样您就可以形成 url。

于 2008-11-17T23:46:02.860 回答
1

对于这些情况,我会使用JMeter。您需要先试用它,但它非常灵活,它会在不同的线程中运行请求,它会以图形方式显示结果,它还允许您编写作业脚本。

我还建议不要在与服务器相同的机器上启动它,如果可能的话,在不同的机器上启动两个或多个实例来模拟负载。

于 2008-11-18T07:13:16.063 回答
0

就个人而言,我会使用类似openSTA的东西。

这允许记录与网站的会话,然后通过相对简单的脚本语言进行回放。

您还可以轻松地测试 Web 服务并编写自己的脚本。

它允许您以任何您想要的方式将脚本放在测试中,并配置迭代次数、每次迭代中的用户数、引入每个新用户的加速时间以及每次迭代之间的延迟。将来也可以安排测试。

它是开源和免费的。

它会生成许多报告,这些报告可以保存到电子表格中。然后,我们使用数据透视表轻松分析和绘制结果。

于 2008-11-17T23:49:34.867 回答
0

这真的取决于是否有其他要求。例如日志记录、历史记录等。

如果您只需要快速和肮脏,那么您很好。

如果您需要更健壮的东西,那么您可以考虑使用您选择的语言自定义构建测试工具,或者使用 Mercury、MS Team Tester、nUnit 等。

于 2008-11-17T23:59:22.647 回答
0

对于那些偶然发现并且不想使用已经提到的第 3 方选项的人。正如公认的答案所提到的,多线程解决方案是最好的,这可以在 PowerShell 中实现:

ForEach -Parallel ($item in $collection) {  }

https://docs.microsoft.com/en-us/powershell/module/psworkflow/about/about_foreach-parallel

虽然线程数可​​以限制为 5:powershell 的并行 foreach 是否最多使用 5 个线程?

于 2018-12-21T03:21:45.990 回答