有什么好的自动化Web负载测试工具推荐吗?

6
有哪些好的自动化工具可用于负载测试(压力测试)Web应用程序,而不使用记录和重放HTTP网络数据包?
我知道市场上有许多记录和重放HTTP网络数据包的负载测试工具。但是由于以下原因,它们不适合我的目的:
- 在我们的应用程序中,HTTP数据包格式经常更改(例如,当我们优化AJAX调用时)。我们不希望仅因为HTTP数据包格式略有变化就需要调整所有测试脚本。 - 我们的测试团队不需要了解我们应用程序的任何内部信息就可以编写其测试脚本。然而,重放HTTP数据包的工具要求团队了解HTTP请求和响应的格式,以便他们可以调整重放的HTTP数据包的细节(例如用户名)。
我正在寻找的自动化负载测试工具应该能够让测试团队编写“黑盒”测试脚本,例如:
- 调用URL为http://...的网页。 - 首先,在文本字段XXX中输入XXX。 - 然后,按下按钮XXX。 - 等待从Web服务器接收到响应。 - 验证文本字段XXX现在包含文本XXX。
该工具应能模拟多达数千个用户,并且应与使用ASP.NET和AJAX的Web应用程序兼容。

1
我已经投票支持推荐Watin和PushToTest的答案,因为这些工具不使用“HTTP记录和回放”方法。不幸的是,我只能将其中一个标记为答案。 - user128300
5个回答

2

我发现JMeter非常有用,它还具有记录功能,可以记录使用情况,因此您不必手动指定每个GET/POST,而是只需“单击”一次使用情况,然后让JMeter重复执行。
http://jmeter.apache.org/


不幸的是,这个工具也属于HTTP记录+重放类别,而我明确想要避免这种情况。 - user128300

1

如果你没有MSDN,许可证可能会很昂贵,但是Visual Studio 2010 Ultimate版本拥有一套出色的负载和压力测试工具,可以完成你所描述的任务。你可以在这里免费试用90天。


我已经检查过了,Visual Studio负载测试使用HTTP记录和回复的方法,而我想避免使用这种方法。 - user128300

0

有几种方法可供选择;然而,我曾经遇到过需要自己编写负载生成工具的情况。

就您的测试脚本而言,它包括以下内容:

  • 向 http://表单输入页面 发送 GET 请求(仅检查是否返回 200 响应)
  • 向 http://表单提交页面 发送预生成的文本 XXX 的键/值对的 POST 请求,并对响应执行正则表达式检查

除非您的网页是复杂的 AJAX,否则没有必要“模拟按钮按下”——这由 POST 请求处理。

考虑到您的测试只包含一个两步骤过程,应该有几个自动化负载包可以完成此任务。

我以前使用 httperf 对大型网站进行负载测试:它可以模拟由多个请求组成的会话,并且可以同时模拟大量用户(即会话)。例如,如果您的网站从主页生成会话 cookie,则可以将其作为第一个请求,然后 httperf 将在完成提供的请求列表之前使用该 cookie 进行后续请求。


1
实际上,我想避免在HTTP层面发送GET请求/POST请求(请参见我的问题)。 - user128300
你的页面是一个复杂的 AJAX 页面。你应该知道,没有编程语言可以模仿 JavaScript 浏览器。你最好的选择是安装多台计算机,运行许多实例的你喜爱的浏览器,并通过自定义编写的脚本与浏览器通信。当然,这是一项巨大的工作,所以你会发现大多数务实的系统管理员使用更简化的负载测试方法。 - PP.
实际上,在亚马逊弹性计算云中每个用户运行1000台PC是我们已经考虑过的事情。价格对我们来说还可以,但我们更喜欢内部解决方案。模拟JavaScript浏览器的负载测试工具正是我正在寻找的。我认为实现这样一个工具不可能很难,因为该工具基本上只需要支持JavaScript(例如使用Microsoft的免费脚本引擎)并理解DOM。在这样的负载测试工具中,所有复杂的部分,如CSS或渲染,都不是必需的。 - user128300

0

PushToTest.com的TestMaker可以运行记录的脚本,如Selenium以及许多不同的语言,如HTML、Java、Ruby、Groovy、.Net、VB、PHP等。它具有通用的报告基础设施,您可以在测试实验室或使用云测试环境(如EC2)中创建负载虚拟测试实验室。

他们每月提供免费的网络研讨会,介绍如何使用开源测试工具,下一个是下周二。

http://www.pushtotest.com


1
你在SO上的所有五个答案都推荐使用TestMaker/PushToTest。为了公正起见,如果你与该产品有关联,你可能需要包含免责声明。 - rob

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接