在運營活動測試過程中,經常需要對秒殺活動或定時抽獎活動進行並發測試。那么怎樣快速便捷的模擬多用戶同時參與活動,抽取獎品,進行並發測試呢?尤其是,當獎品總數N<用戶總數M時,代碼是否會存在獎品多發給用戶,導致獎品剩余總數出現負數的嚴重bug?
下面介紹使用輕量級開源測試工具Jmeter進行並發測試的方法——巧用集合點。
以總產品數為3,模擬多用戶(5個用戶)同時進行抽獎並發測試為例,進行介紹。
思路:首先在運營后台配置產品總數為3,其次模擬多用戶登陸,最后通過設置集合點的方式,模擬多用戶同時進行抽獎並發測試。
下面進行詳細介紹。
一、模擬多用戶登錄
1、准備M個用戶登錄數據,將數據保存到data.txt文件中,如下所示:
2、將登陸接口參數化
通過添加CSV Data Set Config,將登陸接口參數化。如下圖所示:
設置好上述步驟后,再在登陸接口中引用手機號和密碼變量:${mobileNo},${passWord},如下圖所示:
二、在抽獎接口前設置集合點
性能測試中經常要進行多用戶並發測試,但真正的並發是不存在的,為更真實的模擬並發,可以在並發測試的接口前設置集合點。在本次示例中,當所有的虛擬用戶登陸之后,都相互等待,然后一起訪問抽獎接口。設置集合點的方法如下:
1、在剛剛創建的腳本中,右鍵點擊 線程組---->定時器---->Synchronizing Timer,如下圖所示:
2、將抽獎接口移至集合點下,並在集合點中設置多少個用戶同時訪問
本次示例中,設置為5個用戶並發訪問,如下圖所示:
注意,若設置5個用戶並發訪問時,需在線程組中設定,用於模擬多用戶同時測試的線程數為5個。如果線程數達不到集合點設置的數,JMeter會一直不動,一直在等待達到設定的集合數到來。
添加完成之后,線程組線程數設定,如下所示:
集合點用戶數設定如下圖:
以上步驟都設置完成后,執行結果,結果展示中,第一個用戶抽獎時間為:2016-12-15 08:19:30,如下圖:
第二個、第三個用戶抽獎時間都為:2016-12-15 08:19:30,如下圖所示:
至此,已達到多用戶同時抽獎並發測試的目的。
使用非gui操作
jmeter -n -t admin.jmx -l test.jtl -e -o test_report
-e -o output,指的是在out文件下生成html報告
進入out文件夾,就能看到我們生成的html報告了:

轉自:https://www.jianshu.com/p/088616023ecd
