【问题标题】:Using wrk to test a sequence of requests使用 wrk 测试一系列请求
【发布时间】:2022-10-21 11:13:05
【问题描述】:

我目前正在尝试对允许使用 wrk 进行简单用户登录、注销和其他功能的 Web 应用程序进行压力测试,但我真的很难正确编写允许我将多个请求链接在一起的脚本。

例如,我想编写一个脚本,随机使传入线程执行以下操作之一:

1.

  • 登录
  • 注销
  • 登录
  • 做功能A
  • 注销
  • 登录
  • 执行功能 B
  • 注销

该应用程序使用基于表单的身份验证并维护会话。目前,我什至无法弄清楚如何对应用程序理解的 /login 路由进行正确的发布请求,以便 wrk 线程正确地将用户名和密码填写到应用程序中的表单中。该应用程序在浏览器中正常工作,但我一直坚持尝试在 wrk 脚本中进行这项工作。目前我已经尝试过类似的东西:

function request_0 ()
    headers = {}
    headers["Content-Type"] = "multipart/form-data"
    local body  = '{"username": "user0", "password": "pass0"}'
    return wrk.format("POST", "/login", headers, body)
end

function request_1 ()
    headers = {}
    headers["Content-Type"] = "multipart/form-data"
    local body  = '{"username": "user1", "password": "pass1"}'
    return wrk.format("POST", "/login", headers, body)
end

requests = {}
requests[0] = request_0
requests[1] = request_1

request = function()
    return requests[math.random(0,1)]()
end

至少模拟多个可能的传入请求,但我的应用程序没有注册给定的用户名或密码。如果有人可以就请求的正确语法、如何将多个请求链接在一起以及如何处理身份验证提供帮助,我们将不胜感激。

【问题讨论】:

    标签: performance rest http wrk


    【解决方案1】:

    我对 Lua 几乎一无所知,但对于链式 + 身份验证,请将此视为一个简单的示例:https://github.com/wg/wrk/blob/master/scripts/auth.lua

    此外,对于body,请尝试将 JSON 括在双方括号而不是单引号中......像这样: [[{"key": "value"}]]

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 2020-07-04
      • 2016-01-28
      • 2016-09-23
      • 2014-04-24
      • 1970-01-01
      相关资源
      最近更新 更多