1. 程式人生 > 實用技巧 >記錄一次併發測試的bug

記錄一次併發測試的bug

大概具體業務邏輯:建立訂單時,通過手機號查詢使用者,如果找到了直接建立訂單,未找到使用者就去註冊新使用者。

問題:業務員發現使用者列表有多條相同手機號的使用者?

產生問題的原因:由於網路異常等原因,使用者發起了多次請求併發生成的

下面是我通過jmeter復現bug產生的原因
1)理論上通過手機號碼註冊新使用者時,會去使用者表裡面查詢該使用者是否存在,如果存在就會提示該使用者已存在。如下所示:

2)建立執行緒組,給3個執行緒數

2)由於該介面需要先登陸才能發起請求,所以要新增header資訊頭

3)新增http請求,並相應填寫請求頭和請求引數

4)新增集合點(synchronized timer)

* [Number of Simulated Users to Group by]: 5”表示併發量是5。也就是說,Jmeter會等到5個執行緒都執行到此處時,這五個執行緒才開始執行後面的操作,先到達的執行緒將會在此等候。
* [Timeout in milliseconds]:超時時間,即多少毫秒後同時釋放已集結的的執行緒,傳送測試請求,如果設定為0,Timer將等待執行緒數達到了"Number of Simultaneous Users to Group"中設定的值才釋放。
如果大於0,那麼如果超過Timeout in milliseconds中設定的最大等待時間(毫秒為單位)後還沒達到"Number of Simultaneous Users to Group"中設定的值,Timer將不再等待,釋放已到達的執行緒

5)新增檢視結果樹

如圖所示,發起的三個請求,響應結果都成功了
6)然後我們去資料庫檢視生產了手機號碼相同的三條資料

7)開發解決方案是:在資料庫給手機號碼欄位添加了索引