performance-testing - Gatling(性能测试):how to perform task in background every x-minutes

标签 performance-testing gatling

我想知道如何使用 Gatling 每 x 分钟在后台执行一项任务。

背景:
我想在我们的后端写几个场景。在这种情况下,我们的后端将被另一个后端调用。一个常见的场景:

  • 客户端(后端)到服务器身份验证(可选)
  • 客户端请求 X
  • 客户请求 Y
  • 客户端请求 Z

  • 我想要一个执行请求“X、Y 和 Z”的场景。

    问题:后端(客户端)到后端(服务器)的身份验证是使用 accessTokens 执行的。这个 accesToken 将在整个模拟中过期几次,但是我不想在每个场景中都进行这种身份验证。 (因为那可能不是瓶颈)。例如: token 每 10 分钟过期一次,一个场景需要 5 秒,总模拟时间为 2 小时。

    问题:我如何创建一个模拟,每 10 分钟刷新一次后台的访问 token 。在实际场景中,后端(客户端)将只有一个后台进程,每 10 分钟更新一次 accesToken(在内存中或共享状态中)。再说一遍:我不想重新验证每个场景(调用 X、调用 Y、调用 Z)。

    最佳答案

    如果它适合将循环视为场景的一部分,那么您应该能够通过使用持续时间/截止日期和条件执行来实现您想要的。

    例如

    import scala.concurrent.duration._
    
    val executionTime = 2 hours
    val authTimeout = 10 minutes 
    val safetyMargin = 30 seconds
    
    val authenticate : ChainBuilder = exec(login)
      .exec(session => session.set("timeout", authTimeout.fromNow))
    
    scn = scenario("scenarioXYZ")
      .exec(authenticate)      
      .during(executionTime) {
        doIf(session => {session.get("timeout").as[Deadline].timeleft <= safteyMargin}) {
          exec(authenticate)
        }
        .exec(requestX)
        .exec(requestY)
        .exec(requestZ)
      }
    }
    

    所以登录(设置您的 token )并设置 token 到期的截止日期

    然后循环至您需要的时间,并且在每次循环中,如果身份验证的剩余数量少于指定的数量,则再次进行身份验证并设置新的预期到期时间

    关于performance-testing - Gatling(性能测试):how to perform task in background every x-minutes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48975160/

    相关文章:

    datetime - 在加特林测试中使用当前日期

    scala - ssl - 自签名证书获取链时出错

    windows - 在我的负载测试期间,一个 Windows 客户端可以模拟多少个线程/用户?

    java - 如何为我的测试指定特定的速率?

    javascript - 在浏览器中缩放文本的更快方法? (帮助解释测试)

    csv - 如何使用JMeter编辑CSV文件意味着覆盖CSV中的数据?

    scala - 在 Gattle 中构建动态检查

    http - 如何在gatling中检索响应 header 并多次执行http调用?

    session-variables - 我如何在多个加特林场景中共享身份验证 token ?

    java - Java Flight Recorder 结果中的垃圾收集统计信息