2026/4/18 15:36:34
网站建设
项目流程
免费网站app哪个最好,怎样给网站加外链,怎样注册免费网站,用vs做网站如何连接数据库Gatling性能测试的tryMax、exitBlockOnFail和exitHereIfFailed是三个用来控制虚拟用户执行流程的函数#xff0c;在处理预期可能失败的操作时比较重要。区别是错误处理和失败后的流程走向。
Gatling DSL描述的是虚拟用户的行为链#xff0c;这些机制是在行为链上设定的流程控…Gatling性能测试的tryMax、exitBlockOnFail和exitHereIfFailed是三个用来控制虚拟用户执行流程的函数在处理预期可能失败的操作时比较重要。区别是错误处理和失败后的流程走向。Gatling DSL描述的是虚拟用户的行为链这些机制是在行为链上设定的流程控制规则。tryMax重试机制。为一段可能失败的操作提供“多次尝试”的机会。块级作用域。控制其包裹的整个代码块。如果块内所有尝试都失败则继续执行tryMax之后的链式步骤。处理不稳定但可恢复的操作如获取一个可能过期的Token、重试一个偶发失败的支付请求。 只能对链式元素如HTTP请求、动作生效。不能直接包装纯Scala控制流代码如if判断。exitBlockOnFail快速失败和退出。将一段代码块声明为“重点区块”其内的首个失败会立即跳出该区块。 块级作用域。控制其包裹的整个代码块。一旦失败立即退出该代码块并继续执行exitBlockOnFail之后的步骤。保护前置重点步骤。如登录失败后后续的查询、下单等操作无需也不应再执行。常和tryMax结合使用实现“重试直到成功否则提前退出重点流程”。exitHereIfFailed立即结束用户。检查至此虚拟用户是不是已失败如果失败则立即优雅地结束该虚拟用户实例。点状检查。它是一个检查点影响的是整个虚拟用户的存续。如果检查点之前存在未处理的失败则结束该用户会话不再执行后续任何步骤。在业务流程的重点节点进行最后检查避免无意义的后续操作浪费资源。如重要购物车加载失败后直接结束用户而不是继续“模拟”结账。检查的是用户状态而不是前一步骤的简单结果。一般和tryMax和exitBlockOnFail组合用于处理经过重试后仍无法恢复的致命失败。组合使用tryMax的重试思路// 尝试最多3次来执行这个HTTP请求链 tryMax(3) { // 重试块开始 exec(http(Get Token) .get(/api/token) .check(jsonPath($.token).saveAs(authToken))) } // 重试块结束 // 不管重试成功和否虚拟用户都会继续执行到这里重点每次重试都会完整执行块内所有步骤。某次尝试成功就立即跳出tryMax块继续执行后续步骤。文章来源卓码软件测评精彩推荐点击蓝字即可▲软件负载测试▲API自动化测试▲软件测试▲第三方软件测试▲软件性能测试▲软件测试机构exitBlockOnFail的区块保护exitBlockOnFail { // 重点区块开始任何失败都将导致退出本区块 exec(login) // 登录 .exec(loadDashboard) // 加载仪表板 } // 重点区块结束 // 只有在重点区块完全成功的情况下才会执行到这里的“浏览商品”步骤 exec(browseProducts)这是要么全做要么到此为止的思路。保证了后续步骤如browseProducts的执行。exitHereIfFailed的检查exitHereIfFailed本身不执行任何操作只做状态检查。功能是和错误处理机制结合的。val scn scenario(My Scenario) .exec(login) .exitBlockOnFail { exec(addToCart) .exec(checkout) } // 检查点如果之前exitBlockOnFail块因失败而退出则用户在此结束 .exitHereIfFailed // 只有重点购物流程完全成功的用户才会继续执行支付步骤 .exec(makePayment)在这个组合中exitBlockOnFail负责在失败时跳过checkout而exitHereIfFailed就保证跳过checkout的用户不会去执行makePayment。