使用 Jmeter 进行负载测试时,如果希望多个线程利用同一个登录 session,发起多个并发请求的场景,要求使登录和注销在整个测试过中只执行一次。应该怎么实现? 只跑一次控制器 只跑一次控制器( Once Only Controller)不能实现这个要求。 根据 官方说明文档 描述,只跑一次控制器的作用是在 每个线程(用户)内 ,保证受控的元件只运行一次。所以,如果通过增加线程组内的线程数量,发起多个请求时,在每个线程内仍然会有一次登录过程。 运行起来应该是这样的: Thread 1: —— Login —— Request —— Request —— Logoff —— Thread 2: —— Login —— Request —— Request —— Logoff —— Thread 3: —— Login —— Request —— Request —— Logoff —— Thread 4: —— Login —— Request —— Request —— Logoff—— … 很多时候,这种反复登录是没必要的,如果让登录和注销都只执行一次,那么不能用"只跑一次控制器",而应该使用 Setup 线程组 和 TearDown 线程组。 Setup 线程组 和 TearDown 线程组 如果要在整个测试过程只跑一次登录和注销过程,就需要用到 Setup 线程组 和 TearDown 线程组,测试计划如下图: Test Plan ├─HTTP Cookie Manager ├─User Defined Variables ├─HTTP Request Defaults ├─HTTP Header Manager ├─setUp Thread Group │ └─ Setting UP ├─Load Thread Group │ └─ Request └─tearDown Thread Group └─ Tearing Down 运行起来应该是这样的: Setup Thread: —— Login —— Load Thread 1: —— Request —— Request —— Request —— Load Thread 2: —— Request —— Request —— Request —— Load Thread 3: —— Request —— Request —— Request —— Load Thread 4: —— Request —— Request —— Request —— Teardown Thread: —— Logoff ——