線程組按順序來執行,大概思路,
1.需要控制線程組內的操作在滿足某一條件才執行,那么就需要使用if或者while;
2.要使用if或者while都需要一個變量,而這個變量要在兩個或多個線程組內使用,那么if使用變量就需要是全局變量,while使用的變量就需要是局部變量;
(PS:在測試計划中有個選項“獨立運行每個線程組”的選項勾選上,並加上固定定時器。在線程組中設置延遲啟動秒數也可達到效果,有個缺點每次都要修改線程組的啟動、結束時間、不可控)
那么第一順序執行線程組的配件,最少需要有2個BeanShell Sampler和一個If Controller;
第二順序以及之后順序的線程組的配件,最少需要2個BeanShell Sampler、一個If Controller和一個While Controller;
第一順序執行線程組---------------------
首先使用BeanShell Sampler給全局變量賦予初始值${__setProperty(newswitch,1,)};;
然后使用If Controller作為操作的父類,條件為"${__P(newswitch,)}"=="1";
最后使用BeanShell Sampler(父類線程組)給全局變量賦值${__setProperty(newswitch,2,)};,下一個順序執行線程組的If Controller條件;
第二或N順序執行線程組---------------------
1.使用BeanShell Sampler(父類線程組),定義一個局部變量vars.put("whileswitch","1");
2.使用While Controller作為If Controller的父類,條件為${__javaScript("${__P(whileswitch,)}"!="0")} ;
3.使用If Controller作為操作的父類,條件為"${__P(newswitch,)}"=="2";(值根據第幾個順序而變化,第二個是2,第三個是3。。。)
4.在If Controller下建立子類BeanShell Sampler給局部變量賦值vars.put("whileswitch","0");,結束While Controller;給全局變量賦值${__setProperty(newswitch,3,)};,下一個順序執行線程組的If Controller條件,如果沒有下一個順序執行線程組給全局變量賦予初始值${__setProperty(newswitch,1,)};。