抽獎活動的中獎事件是個隨機事件,用大量的手動測試來檢驗中獎概率的正確性顯然不可取,除了手工對中獎流程,后續(xù)處理的校驗外,可以和開發(fā)配合,使用接口來測試中獎的概率是否符合預期的設計要求。
1.思路:
?。?)開發(fā)提供中獎的接口,get該接口(此處需要向開發(fā)詳細了解),每次隨機返回以下四個結果:
0--表示未抽中
1--表示抽中1等獎
2--表示抽中2等獎
3--表示抽中3等獎
(2)使用for循環(huán),多次請求該接口,并使用testNG框架中自帶的設置多次執(zhí)行方法和處理多線程的方法,使多個方法并發(fā)運行,縮短執(zhí)行時間,來模擬大數(shù)據(jù)量下的中獎事件。
?。?)對(2)中的中獎事件進行數(shù)據(jù)處理,獲取各類中獎事件的概率。
2.代碼
用例代碼LotteryTestCase.java 如下:





3.結果
在testNG.xml中設置用例的路徑,執(zhí)行即可。綜上可看,請求接口1000次,每個方法執(zhí)行100次請求,執(zhí)行10個該方法,每個方法的結果如下:
[TestNG] Running:
D:\krplus-api-test\testcase\testcase\Lottery\tesNG.XML
-------中獎次數(shù)--------
中獎失敗的次數(shù)為16
中一等獎的次數(shù)為2
中二等獎的次數(shù)為9
中三等獎的次數(shù)為73
-------中獎概率--------
中獎失敗的概率為0.16
中一等獎的概率為0.02
中二等獎的概率為0.09
中三等獎的概率為0.73
之后和設計中的概率進行對比即可!
在實踐過程中的確發(fā)現(xiàn)通過這種接口測試可以發(fā)現(xiàn)概率和接口方面的問題:
1.第一次中獎時,即使運行1000次,一等獎中獎次數(shù)也是0,后來是因為開發(fā)重寫代碼不完整所致
2.運行時拋異常,運行單個接口發(fā)現(xiàn)有問題,如下:
