1. 概率驗(yàn)證:
抽獎概率主要包括2個(gè)方面:
- 獎品概率:后臺設(shè)置獎品的獲獎概率,驗(yàn)證抽獎獲得的獎品是否符合概率分布雪情;
- 獎品概率浮動:當(dāng)非默認(rèn)獎品C的庫存變?yōu)?時(shí),默認(rèn)獎品的獲獎概率隨之增加(增加值為非默認(rèn)獎品C的獲獎概率)你辣;
基于以上2點(diǎn)巡通,我們設(shè)計(jì)獎品及概率分布如下表:
獎品列表 | 獲獎概率 | 庫存 | 是否默認(rèn) |
---|---|---|---|
獎品A | 40% | 10000 | 是 |
獎品B | 30% | 10000 | 否 |
獎品C | 30% | 0 | 否 |
其他 | 0% | 10000 | 否 |
測試的樣本數(shù)目為1000次抽獎,需要得到的結(jié)果為:抽中獎品A的概率約為70%(即40%+30%)舍哄,抽中獎品B的概率約為30%宴凉,抽中其他獎品的概率為0。
基于以上的設(shè)計(jì)表悬,使用Jmeter工具模擬用戶抽獎弥锄,結(jié)果符合預(yù)期,如下表:
注:我們在使用Jmeter時(shí)使用了斷言的方式蟆沫,即抽中獎品A返回true籽暇,其他false,同時(shí)饭庞,我們也通過檢查結(jié)果樹確認(rèn)返回false的獎品均為獎品B戒悠。所以上表的錯(cuò)誤率30.10%代表抽中獎品B的概率,69.90%表示抽中獎品A的概率舟山。
2. 是否超賣驗(yàn)證
超賣可能出現(xiàn)的場景:當(dāng)獎品數(shù)為1個(gè)時(shí)绸狐,再次多個(gè)用戶請求抽獎,存在>1個(gè)用戶抽到獎品累盗。針對這種測試場景寒矿,確定測試方案如下:
將獎品庫存設(shè)置為1,1000并發(fā)進(jìn)行請求若债,驗(yàn)證只有1個(gè)用戶抽獎成功符相,其他用戶返回活動已下線。
根據(jù)上述方案拆座,測試結(jié)果:無超賣現(xiàn)象主巍。
3. 接口壓測
本次主要針對2個(gè)涉及到性能的接口進(jìn)行壓測:柚幣抽獎 & 獲得額外獎品。壓測結(jié)果如下:
接口名稱 | 并發(fā)量 | TPS | 平均響應(yīng)時(shí)間(ms) |
---|---|---|---|
柚幣抽獎 | 48 | 18.7 | 2286 |
額外獎品 | 48 | 176.7 | 243 |
通過以上數(shù)據(jù)可知挪凑,柚幣抽獎接口性能較低孕索,低于預(yù)期,即柚幣商城首頁接口(tae_coin)的接口性能(TPS 約為60)躏碳,上線風(fēng)險(xiǎn)較高搞旭。
下面針對柚幣抽獎接口涉及到的接口做具體分析:
3.1 柚幣中心接口
首先,先對柚幣中心的查柚幣、扣柚幣肄渗、加柚幣進(jìn)行壓測镇眷,該部分壓測請廈門@翁秀妹@周澤潤進(jìn)行了協(xié)助。@翁秀妹在內(nèi)網(wǎng)環(huán)境下翎嫡,得出這3個(gè)接口的壓測結(jié)果如下:
接口名稱 | 并發(fā)量 | TPS | 平均響應(yīng)時(shí)間(ms) | CPU占用率 | 平均負(fù)載 |
---|---|---|---|---|---|
查柚幣 | 48 | 228 | 308 | 6% | 1 |
扣柚幣 | 48 | 126 | 559 | 18% | 3 |
加柚幣 | 48 | 447 | 102 | 56% | 24 |
因?yàn)殡娚踢@邊是通過公網(wǎng)與柚幣中心進(jìn)行交互欠动,所以,我們又針對公網(wǎng)環(huán)境對上述3個(gè)接口進(jìn)行了壓測(48并發(fā)惑申、5min)具伍,因柚幣中心的服務(wù)器無法監(jiān)控,我們僅給出接口對應(yīng)的TPS和平均響應(yīng)時(shí)間圈驼,如下表:
接口名稱 | 并發(fā)量 | TPS | 平均響應(yīng)時(shí)間(ms) |
---|---|---|---|
查柚幣 | 48 | 36 | 1194 |
扣柚幣 | 48 | 41.8 | 1030 |
加柚幣 | 48 | 343.3 | 124 |
Jmeter數(shù)據(jù)如下:
查柚幣
加柚幣
扣柚幣:
由上面數(shù)據(jù)可知人芽,目前柚幣中心接口經(jīng)過改造后,扣柚幣绩脆、查柚幣接口在走外網(wǎng)的情況下TPS較低萤厅、平均響應(yīng)時(shí)間較長。
然后靴迫,我們針對柚幣抽獎惕味、額外獎品接口進(jìn)行壓測,其中矢劲,柚幣抽獎接口涉及到柚幣中心的查柚幣赦拘、扣柚幣、加柚幣接口芬沉,額外獎品如配置為柚幣商品躺同,則涉及到柚幣中心的加柚幣接口。這里為了驗(yàn)證電商獨(dú)立業(yè)務(wù)代碼丸逸,暫給額外獎品配置為非柚幣商品蹋艺。
3.2 柚幣抽獎接口
壓測方案:
并發(fā)數(shù)為48,穩(wěn)壓5min黄刚,利用332個(gè)不同用戶不斷地去抽獎捎谨,獲得該接口的TPS和平均響應(yīng)時(shí)間,同時(shí)監(jiān)控服務(wù)器性能憔维。
壓測結(jié)果:
接口名稱 | 并發(fā)量 | TPS | 平均響應(yīng)時(shí)間(ms) | CPU占用率(應(yīng)用服務(wù)器) | CPU占用率(數(shù)據(jù)庫) |
---|---|---|---|---|---|
額外獎品 | 48 | 18.7 | 2286 | 12% | 1% |
Jmeter數(shù)據(jù)統(tǒng)計(jì):
通過上面數(shù)據(jù)及代碼日志涛救,可知柚幣抽獎的主要耗時(shí)集中在curl請求柚幣中心的扣柚幣接口上面,所以造成該接口耗時(shí)較長业扒,其中查柚幣已在柚幣首頁時(shí)進(jìn)行了緩存優(yōu)化检吆,所以柚幣抽獎接口不會調(diào)用查柚幣接口。
代碼log日志——記錄功能模塊耗時(shí)
3.3 額外獎品接口
壓測方案:
并發(fā)數(shù)為48程储,穩(wěn)壓5min蹭沛,利用332個(gè)不同用戶不斷地去領(lǐng)取額外獎品臂寝,獲得該接口的TPS和平均響應(yīng)時(shí)間,同時(shí)監(jiān)控服務(wù)器性能摊灭。
壓測結(jié)果:
接口名稱 | 并發(fā)量 | TPS | 平均響應(yīng)時(shí)間(ms) | CPU占用率(應(yīng)用服務(wù)器) | CPU占用率(數(shù)據(jù)庫) |
---|---|---|---|---|---|
額外獎品 | 48 | 176.7 | 243 | 80% | 5% |
Jmeter數(shù)據(jù)統(tǒng)計(jì)