背景:
頁面上單據審核操作,單據並發操作時會多筆成功提交,出現提交多個支付申請的問題
難點:
- 數據自動創建
- 接口請求需要登錄后執行
- 動態獲取審核單據的請求參數
- 最大限度模擬並發操作,降低請求間隔
解決思路:
- 使用數據拋送接口創建數據
- 使用jmeter頭和cookie管理器,保存登錄session
- 通過查詢類接口,獲取審核請求所需參數
- 線程組添加同步定時器,確保請求的同時性
具體實現:
- 使用數據拋送接口,來進行數據的創建,有以下注意點
- 隨機生成項目單據號,確保數據可創建成功
- 保存創建數據的項目單據號,方便之后查詢接口使用
2. 在實現登錄和提交操作時,進行了兩種場景模擬
場景a:
使用單用戶登錄,模擬同一用戶多瀏覽器登錄進行並發提交。起初將登錄和提交請求放到同一線程組中,但是發現在短時間內使用同一用戶進行單點登錄時,會有部分登錄報錯,故將登錄請求單獨放置在一個線程組中,提交請求放在另一線程組,之后將登錄線程組中cookie傳輸到請求線程組中(此種方式其實是模擬單用戶在同一瀏覽器多開並發)。
由於登錄和發送請求設置不同線程組,需要在線程組間傳遞cookie,具體為需要修改jmeter.properties文件,設置CookieManager.save.cookies=true,取出登錄后cookie參數,並傳遞到執行審核請求的線程組
整體結構:

聲明參數為全局變量:

拼接cookie信息:

設置同步計時器,確保單據並發提交:

場景b:
在真實場景中,單用戶並發操作的較少,同時操作同一單據的場景,更多的是多個不同用戶。模擬此種場景,要做到的是多線程時,每個線程使用不同的用戶登錄並進行操作。此處的實現方式,是獲取線程編號,然后為線程指定登錄賬號(如線程1讀取賬號1,線程2讀取賬號2),在這種不同用戶的場景下,就需要將登錄和提交請求放置在同一線程組中,順序執行操作即可
整體結構:


獲取線程ID並指定賬號:

