進行壓力測試時,線程數的修改可以模擬訪問人數,但部分壓力測試需要的條件比較嚴格,需要模擬多個用戶同時訪問一個或多個結果來進行測試;此時就需要通過定時器的組合來達成不同的測試場景。
一、首先,在線程組設置線程數等。其中Ramp-UP時間為線程之間的間隔時間,單位為ms;持續時間則表示線程整體的運行時間范圍,如果超出時間范圍,不論循環是否完成都會停止發送請求,而已經發送的請求會等待全部響應完成后結束線程。
如果只是單一的配置以上信息,那么整個線程會按照線程內的請求開始循環,持續10s之后停止進程 (下圖中沒有持續10秒是因為整個線程+循環的總時長在10秒之內已經完成了)
如果想要實現同一秒發送幾個請求或者幾秒鍾發送一個請求的效果的話,則需要添加定時器來輔助達成,比較常用的包括固定定時器以及常熟吞吐量定時器(Constant Throughput Timer)
1)固定定時器用來設置請求延時的,比如圖中設置時長為2000ms,則表示在每個線程中的每個請求之間間隔2s;
如圖中可看出test4 1-1 這個線程的時間間隔大概為2s,但是相同接口1-1中發送的時間與1-2中發送的時間並不一樣。如果對發送時間有嚴格要求的壓力測試可能就不能夠僅僅使用固定定時器來達到效果。
2)常熟吞吐量定時器則用來設置當前線程每分鍾發送的請求數量,即樣本量;如圖中設置的30/60=1/2 則表示單一線程內每2秒發送一個請求。
單獨使用此定時器可以實現兩個線程在同一秒內發送同一個請求
二、如果是使用外部循環變量且共享模式為“當前線程組”的情況,如果想要實現同一秒中發送多個請求,最好將線程數量與變量總數設置相同,比如有三個變量,但線程數為2,那么無論怎么調整定時器,也無法實現一秒內同時訪問三個請求
兩個線程: 三個線程:
補充:定時器的時間間隔為上一個請求的響應時間到下一個請求的發送時間,而不是上一個請求的發送時間到下一個請求的發送時間
結論:
1. 定時器都可以單獨使用,但為了滿足不同的測試要求和測試場景,不同的定時器組合起來可能效果更好
2. 固定定時器的時間間隔對於全部都是相應較快的接口測試時比較好用,但如果測試的接口本身響應時間較長,此時再增加固定的時間間隔可能會影響測試效果
3. 根據請求響應時間的不同,定時器在進程剛開始的時候效果比較顯著,隨着進程發展,響應時間的增長可能會無法保證一秒內發送幾個請求
4. 進行壓力測試時最好聚合報告、用表格查看結果和察看結果樹(只顯示錯誤日志)配合使用,聚合報告用來查看整體接口測試情況;用表格查看結果用來確認每個請求發送的時間間隔(適用於請求不是特別多的測試);察看結果樹用來確定錯誤請求,方便查詢服務器日志,加快問題定位。
5. 如果要使用第二種方式進行測試,盡量不要將測試腳本的結構設計的太復雜,否則在實現起來的時候會有些麻煩