【问题标题】:Any suggestions for good automated web load testing tool?对好的自动化 Web 负载测试工具有什么建议吗?
【发布时间】:2010-06-04 07:00:52
【问题描述】:

有哪些好的自动化工具用于负载测试(压力测试)Web 应用程序,使用 HTTP 网络数据包的记录和重放?

我知道市场上有许多负载测试工具可以记录和重放 HTTP 网络数据包。但这些不适合我的目的,因为:

  • HTTP 数据包格式在我们的应用程序中经常变化(例如,当 我们优化 AJAX 调用)。我们不想仅仅因为 HTTP数据包格式略有变化。

  • 我们的测试团队不需要了解有关我们应用程序的任何内部信息 编写他们的测试脚本。然而,重放 HTTP 数据包的工具需要 团队了解 HTTP 请求和响应的格式,以便他们 可以调整重放的 HTTP 数据包的详细信息(例如用户名)。

我正在寻找的自动化负载测试工具应该能够让测试团队编写“黑盒”测试脚本如:

  • 在 URL http://... 处调用网页。
  • 首先,在文本字段XXX中输入XXX
  • 然后,按下按钮XXX
  • 等到收到来自网络服务器的响应。
  • 验证文本字段 XXX 现在包含文本 XXX

该工具应该能够模拟多达 1000 个用户,并且应该与使用 ASP.NET 和 AJAX 的 Web 应用程序兼容。

【问题讨论】:

  • 我对推荐 Watin 和 PushToTest 的答案投了赞成票,因为这些工具不使用“HTTP 记录和回复”方法。不幸的是,我只能将两者之一标记为答案。

标签: asp.net ajax load-testing stress-testing


【解决方案1】:

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

【讨论】:

  • 不幸的是,这个工具也属于 HTTP 记录+重播类别,我明确希望避免。
【解决方案2】:

许可证可能会很昂贵(如果您没有 MSDN),但 Visual Studio 2010 终极版有一套很棒的负载和压力测试工具,可以按照您的描述进行操作。 You can try it out for free for 90 days here.

【讨论】:

  • 我已经检查过了;然而,Visual Studio 负载测试使用 HTTP 记录和回复方法,我想避免这种方法。
【解决方案3】:

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

他们每月都会提供免费的关于使用开源测试工具的网络研讨会,下周二还有一次。

http://www.pushtotest.com

【讨论】:

  • 您在 SO 上的所有五个答案都推荐 TestMaker/PushToTest。为了全面披露,如果您与产品相关联,您可能需要包含免责声明。
【解决方案4】:

有几种方法;然而,我遇到过一些情况,我不得不推出自己的负载生成实用程序。

就您的测试脚本而言,它涉及:

  • 向 http://表单入口页面发送 GET 请求(仅检查是否给出 200 响应)
  • 向 http://表单提交页面发送 POST 请求,其中包含为文本 XXX 预先生成的键/值对,并对响应执行正则表达式检查

除非您的网页是复杂的 AJAX,否则无需“模拟按钮按下” - 这由 POST 请求处理。

鉴于您的测试仅包含两步过程,因此应该有几个自动加载包可以做到这一点。

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

【讨论】:

  • 实际上,我想避免在 HTTP 级别发送 GET/POST(请参阅我的问题)。
  • 您的页面是一个复杂的 AJAX 页面。您应该知道没有可以模拟 javascript 浏览器的编程语言。您最好的选择是安装多台计算机,运行大量您喜欢的浏览器实例,这些实例由与您喜欢的浏览器通信的自定义编写脚本控制。当然,这是一项巨大的工作,因此您会发现大多数务实的系统管理员使用更简化的方法进行负载测试。
  • 实际上,在亚马逊的 Elastic Compute Cloud 中为每位用户运行 1000 台 PC 是我们已经考虑过的一件事。价格对我们来说还可以,但我们更喜欢内部解决方案。一个模拟 JavaScript 浏览器的负载测试工具正是我想要的。我认为实现这样一个工具并没有那么难,因为该工具基本上只需要支持 JavaScript(例如使用微软的免费脚本引擎)并理解 DOM。这样的负载测试工具不需要所有复杂的部分,例如 CSS 或渲染。
【解决方案5】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2011-07-30
    • 2010-09-09
    • 2010-09-08
    • 2023-03-02
    • 2012-07-05
    • 1970-01-01
    相关资源
    最近更新 更多