【问题标题】:load test specific pages负载测试特定页面
【发布时间】:2026-02-19 01:50:02
【问题描述】:

我已阅读有关负载测试以及可用于在 Web 应用程序上实现它的工具的信息。 我正在使用 apache ab。让它成为任何其他工具,但我的问题是如何在不实际登录 Web 应用程序的情况下加载测试特定页面?

当真正要测试的是" ab时,如何简单地使用"ab -k -n 500 -c 10 http://abc.xyz.com/"知道每个页面的响应时间-k -n 500 -c 10 http://abc.xyz.com/index.html"只有登录才能访问?

【问题讨论】:

    标签: apache2 load-testing stress-testing


    【解决方案1】:

    您应该首先手动获取授权 cookie(例如使用curl),然后将其添加到标题中。我们在大多数负载测试任务中使用Yandex.Tank。这是您的案例的 load.ini 示例:

    [phantom]
    address = abc.xyz.com
    rps_schedule = line (1, 120, 15) const (120, 10m)
    header_http = 1.1
    headers = [Host: abc.xyz.com]
      [Connection: close]
      [Cookie:<here goes auth cookie>]
    uris=/index.html
    

    我认为你也可以用 ab 或 jmeter 做类似的事情。

    【讨论】:

      【解决方案2】:

      让它成为任何其他工具,但我的问题是如何在不实际登录 Web 应用程序的情况下加载测试特定页面?

      简短的回答是:不,你不能。如果可以,那么应用程序就会有很大的安全漏洞,对吧?

      您需要登录,获取授权令牌/会话 ID(可能是 cookie)并在以后的请求中发送。

      【讨论】:

        【解决方案3】:

        如果您想使用大量并发虚拟客户端进行测试,每个客户端都进行登录和一系列操作,您可能需要尝试一些可以模拟真实用户的性能测试工具。在NetGend 测试平台上,以下示例脚本将通过填写 html 表单并执行一些操作来模拟用户。 (NetGend 使用 javascript 语法)

        quickForm("http://www.example.com/login?", ["jsmith", "abc123"]);
        //do action after login
        //get a list of productIDS
        prodId = randElement(productIDS);
        action(http,"http://www.example.com/view?product=${prodId}");
        

        NetGend 测试平台不仅使与网站的交互变得更容易,它还可以模拟大量客户端 - 例如,您可以使用包含 50,000 个用户/密码组合的 csv 文件来提供它。

        如果您有时间,您可能想在许多测试场景中查看许多 blogs

        【讨论】: