線程組詳解

線程組元件是任何一個測試計劃的開始點。在一個測試計劃中的全部元件都必須在某個線程下。全部的任務都是基於線程組數據庫

image.png

 

1、setup thread group  

    一種特殊類型的ThreadGroup,用於在執行常規線程組以前執行一些必要的操做。在「setup thread group 」下的線程行爲與普通線程組徹底相同。不一樣的是執行順序:它會在普通線程組執行以前被觸發。併發

    應用場景舉例:oop

    A、測試數據庫操做功能時,用於執行打開數據庫鏈接的操做。測試

    B、測試用戶購物功能時,用於執行用戶的註冊、登陸等操做。spa

 

2、teardown thread group 

    一種特殊類型的ThreadGroup,用於在執行常規線程組完成後執行一些必要的操做。在「teardown thread group 」下的線程行爲與普通線程組徹底相同。不一樣的是執行順序:它會在普通線程組執行以後被觸發。線程

    應用場景舉例:cdn

    A、測試數據庫操做功能時,用於執行關閉數據庫鏈接的操做。blog

    B、測試用戶購物功能時,用於執行用戶的退出等操做。element

    注意:默認狀況下,若是測試按預期完成,則TearDown線程組將不會運行。若是你想要運行它,則須要從Test Plan界面中選中複選框「Run tearDown Thread Groups after shutdown of main threads」。get

 

3、thread group(線程組)

    這個就是咱們一般使用的線程。一個線程組能夠看作一個虛擬用戶組,線程組中的每一個線程均可以理解爲一個虛擬用戶。多個用戶同時去執行相同的一批次任務。每一個線程之間都是隔離的,互不影響的。一個線程的執行過程當中,操做的變量,不會影響其餘線程的變量值。

 

image.png

 

一、在取樣器錯誤後要執行的動做

  • 繼續:忽略錯誤,繼續執行操做(其餘取樣器不受影響,繼續執行)

      例如線程組中包含查詢設備和查詢服務商2個請求,若查詢設備請求失敗,查詢服務商請求會繼續執行。

  • Start Next Thread Loop:忽略錯誤,中止當前線程組並直接啓動下一個線程組;如設置循環次數非1,那麼遇到一個線程失敗,線程組當前循環終止,執行下一個循環。

     例一:線程組中包含查詢設備和查詢服務商2個請求且循環次數非1,若查詢設備請求失敗,查詢服務商請求將再也不執行,等下一次從新迭代,從查詢設備開始執行。

     例二:測試計劃中包含線程組1和線程組2,線程組1的循環次數是1,那麼線程組1執行出錯時,會直接啓動線程組2

  • 中止線程:中止當前線程,其餘線程不受影響
  • 中止測試:在全部當前正在執行的線程執行完畢後中止整個測試計劃
  • Stop Test Now:當即中止整個測試計劃

      如測試計劃設置了【獨立運行每一個線程組(例如在一個組運行結束後啓動另外一個)】

      則線程組1中的某個請求失敗了,線程組2中的請求不會被執行

二、線程屬性

  • 線程數:當前線程組的線程數量,能夠簡單的理解爲用戶數量。
  • Ramp-up Period (in seconds):達到上面指定線程數所花費的時間,單位爲秒。舉個例子:假設線程數爲100個,花費時間20s,那麼每秒啓動的線程數 = 線程數/時間,即100/20 = 5,也就是每隔1秒啓動5個線程。
  • 循環次數:設置的線程數循環的次數。勾選「永遠」選項,則線程組一直循環注意:若是勾選了永遠且調度器配置中設置了持續時間,則會在持續時間到達以後結束循環)。
  • Delay Thread creation until needed:當線程須要執行的時候,纔會被建立。若是不勾選此選項,全部線程在開始時就所有被建立。

      此選項和Ramp-up Period設置配合使用,若是勾選此項,則全部線程會在須要的時候啓動,即會在Ramp-up Period(in seconds)到時間後啓動全部線程,此項做用在於,若是說線程運行時間小於咱們設置的Ramp-up Period(in seconds),則會形成一種狀況就是在Ramp-up Period(in seconds)結束以前部分線程已經跑完了,這樣就會致使活動線程數小於咱們設置的線程數,也就意味着咱們設置的N個併發的場景並未徹底起效。可是若是勾選了此項,則線程會根據Ramp-up Period(in seconds)設置來建立,可是不會啓動,直到最後一個線程建立好後一塊兒啓動(這樣就會很好的模擬到咱們的N個併發數了)

    若是單個線程的運行時間長於咱們設置的Ramp-up Period(in seconds)時間,則此項也不用勾選。

    舉例說明:如過設置線程數爲10,Ramp-up Period(in seconds)時間爲100,則若是不勾選此項則這次測試會每隔10s建立並啓動一個線程,那麼100s後會有1-10個線程在運行;可是若是勾選此項,那麼線程組會每隔10s建立一個線程但並不啓動sample,而是會等待100s後全部10個線程都建立好以後同時啓動sample。

  • 調度器:勾選此選項,纔可修改下面的調度器配置。

      持續時間(秒):整個測試計劃持續的時間。(優先於後面的結束時間選項)。注意這個時間設置不要設置的比      Ramp-up Period(in seconds)小,若是勾選了循環次數中的永遠,那麼測試同樣會在此持續時間到達後結束。

      啓動延遲(秒):測試計劃啓動後,會被延遲啓動,時間爲選項填入的時間。(優先於後面的啓動時間選項)

      啓動時間:整個測試計劃將於此處填寫的時間點啓動

      結束時間:整個測試計劃將於此處填寫的時間點結束

 

     若是不想當即執行執行,能夠經過調度器控制測試執行的開始時間和結束時間

 

筆記:同一個線程組裏的多個請求,默認是從上到下執行;同一個測試計劃裏的線程組,沒有前後執行順序(隨機)(除非勾選了獨立運行每一個線程組)

相關文章
相關標籤/搜索