前言:由於第二個線程用到第一個線程的響應結果作為請求參數,如果第二個線程跑到第一個線程之前,就會有參數取不到的情況,所以對測試計划的設置做了修改,保證線程按順序執行。
1、沒有處理線程執行順序時,多個線程里的請求是一起執行的,不分先后。(未勾選獨立線程運行結果)
2、在測試計划里勾選獨立運行每個線程組。(測試計划處勾選獨立運行每個線程組)
3、勾選完后再次執行,發現線程按照正常順序執行。(勾選獨立運行線程后的結果)
在Jmeter進行並發測試時,經常會出現請求沒有按照順序執行,如下圖(進行登錄,需要先設置登錄公共信息、再獲取驗證碼等)
從結果樹中可以看到執行順序並沒有按照1-2-3-4,1-2-3-4 去執行
為什么會出現這種情況呢?那是因為多線程競爭的原因。多線程執行並發操作,肯定是誰跑得快誰就先執行,線程才不會傻乎乎的的排隊。
jmeter自帶了一個事物鎖控制器。
官方把它定義為線程鎖控制器(Critical Section Controller)
意思就是這個鎖下面的請求,在相同的時間點只會有一個線程去執行它,也就意味着這個鎖下面的事物在相同的時間點會給每個線程分配一個,不會產生競爭。
設置了線程鎖控制器(Critical Section Controller)后,再次看結果樹
此時就按照順序執行了