【问题标题】:Gatling Error when running multiple users - 'httpRequest-2' failed to execute: No attribute named 'access_token' is defined运行多个用户时出现 Gatling 错误 - “httpRequest-2”未能执行:未定义名为“access_token”的属性
【发布时间】:2021-08-09 14:05:01
【问题描述】:

我是 Gatling 新手,一直在尝试设置一个测试,让我的用户登录,获取访问令牌,然后使用该令牌执行一些简单的获取请求。拥有 1-2 个用户可以正常工作,但是一旦我开始增加用户数量,我就会开始收到此错误的垃圾邮件:

[ERROR] i.g.h.a.HttpRequestAction - 'httpRequest-2' failed to execute: No attribute named 'access_token' is defined

我认为这可能与我保存和使用访问令牌的方式有关?

class GatlingTest extends Simulation {

    val httpProtocol = http
        .baseUrl("https://myurl.com/api/v1")
        .inferHtmlResources(BlackList(""".*\.js""", """.*\.css""", """.*\.gif""", """.*\.jpeg""", """.*\.jpg""", """.*\.ico""", """.*\.woff""", """.*\.woff2""", """.*\.(t|o)tf""", """.*\.png""", """.*detectportal\.firefox\.com.*"""), WhiteList())
        .acceptLanguageHeader("en-GB,en;q=0.5")
        .upgradeInsecureRequestsHeader("1")


    object GetUserData {

        val userData = exec(http("Get_User_Data")
            .get("/user")
            .header("Authorization", "Bearer ${access_token}"))
            .pause(1)
    }

    object GetUserInfo {

        val userInfo = exec(http("Get_User_Info")
            .get("/userInfo")
            .header("Authorization", "Bearer ${access_token}")
            .header("Accept", "application/json"))
            .pause(1)

    }

    object Login {
        val sentHeaders = Map("api_key" -> "nnxzv336wt2374h6zw5x24qd", "Content-Type" -> "application/x-www-form-urlencoded", "Accept" -> "application/json")

        val login = exec(http("Login_User")
            .post("/login")
            .basicAuth("username", "password")
            .headers(sentHeaders)
            .body(StringBody("grant_type=password&username=username@username.local&password=12345"))
            .check(jsonPath("$.access_token").saveAs("access_token"))


        )
    }

    val user = scenario("User").exec(Login.login).exec(GetUserData.userData, GetUserInfo.userInfo)

    setUp(
        user.inject(
            rampUsers(5).during(2.seconds),
        ).protocols(httpProtocol)
    )
}

我已将授权承载添加到获取请求中,就像我提到的那样它确实有效,但是一旦涉及 3 个以上的用户,我就会收到错误。

【问题讨论】:

    标签: scala load-testing gatling stress-testing


    【解决方案1】:

    这意味着login 请求失败,因此用户无法在此处捕获access_token

    【讨论】:

    • 奇怪的是,只有一小部分请求返回 403
    • 您在您的身份验证系统中发现了一个错误
    • 是的,看起来是这样,我可以运行一小部分用户,随着时间的推移,所有请求都正常。一旦我开始在一段时间内吸引 20 多个用户,我似乎总是在登录时得到一些 403
    • 但是,有时候我所有的登录请求都是ok的,一些get请求还是会返回403。
    • 加特林只是这里的信使。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多