python性能測試手機(jī)號驗(yàn)證碼登錄壓測示例詳解
引言
這兩天遭遇了手機(jī)號登錄相關(guān)的壓測需求,算是比較棘手的。主要原因有兩個,第一:之前從來沒有接手過這個項(xiàng)目,不熟悉各種規(guī)則;第二:數(shù)據(jù)量偏大,需要開發(fā)配合協(xié)調(diào)校驗(yàn)規(guī)則。
業(yè)務(wù)邏輯:
請求發(fā)送驗(yàn)證碼接口,發(fā)送成功(已綁定的手機(jī)號,且有效的用戶狀態(tài))可以獲取到登錄的一個參數(shù)traceNo
使用traceNo
、短信驗(yàn)證碼、手機(jī)號請求登錄接口
基本的校驗(yàn)規(guī)則如下:
手機(jī)號校驗(yàn),排除一些不存在的號段,11位數(shù)字類型(接口傳string
類型)
間隔(60s)內(nèi)不允許發(fā)第二條短信,短信有效期同隔間
自然天不允許發(fā)10條以上的短信
驗(yàn)證碼隨機(jī)和traceNo
必需從發(fā)送驗(yàn)證碼接口獲得
解決方案:
限制條件已經(jīng)做成可配置,可以隨時更改重啟服務(wù)即可
選中14號段,用戶手機(jī)號=14+uid
測試環(huán)境固定驗(yàn)證碼
測試方案:
將發(fā)送驗(yàn)證碼和短信登錄兩個接口放在一起壓測,需要準(zhǔn)備一批測試用戶
單個線程綁定一個用戶,然后不停地發(fā)送驗(yàn)證碼和使用驗(yàn)證碼登錄
增加基類屬性phone
和模塊類屬性lastTraceNo
來完成參數(shù)傳遞
壓測腳本:
threadmark用來標(biāo)記任務(wù)的,我在模塊方法里面返回了token,表示唯一用戶登錄接口請求操作,方便開發(fā)追蹤日志。
/** ?*?100個用戶通過發(fā)短信然后通過驗(yàn)證碼登錄 ?*/ class?LoginByTel?extends?OkayBase?{ ????public?static?void?main(String[]?args)?{ ????????def?argsUtil?=?new?ArgsUtil(args) ????????def?thread?=?argsUtil.getIntOrdefault(0,?100) ????????def?times?=?argsUtil.getIntOrdefault(1,?50) ????????ClientManage.init(10000,?5000,?0) ????????def?threads?=?[] ????????thread.times?{ ????????????def?base?=?getBase(it) ????????????def?info?=?new?UserInfo(base) ????????????threads?<<?new?LoginTel(info,?times) ????????} ????????new?Concurrent(threads,?"學(xué)生留存1.2.3手機(jī)驗(yàn)證碼登錄").start() ????????FanLibrary.testOver() ????} ????static?class?LoginTel?extends?ThreadLimitTimesCount<UserInfo>?{ ????????public?LoginTel(UserInfo?info,?int?times)?{ ????????????super(info,?times,?null) ????????} ????????@Override ????????protected?void?doing()?throws?Exception?{ ????????????threadmark?=?t.loginByTel() ????????} ????} }
模塊類方法:
????/** ?????*?手機(jī)號登錄 ?????*/ ????public?String?loginByTel()?{ ????????sendCodeOffline(2,?phone); ????????String?url?=?Profile.LOGIN; ????????JSONObject?params?=?getParams(); ????????params.put("login_mode",?2); ????????params.put("params",?getJson("code="?+?Profile.LOGIN_CODE,?"phone="?+?phone)); ????????JSONObject?response?=?getPostResponse(url,?params); ????????if?(isRight(response))?{ ????????????token?=?response.getJSONObject("data").getString("token"); ????????????super.token?=?token; ????????????logger.info("賬號?{}?登錄成功",?account); ????????}?else?{ ????????????output(response); ????????????logger.warn("賬號?{}?登錄失敗",?account); ????????????fail(); ????????} ????????return?token; ????}
以上就是python性能測試手機(jī)號驗(yàn)證碼登錄示例詳解的詳細(xì)內(nèi)容,更多關(guān)于python手機(jī)號驗(yàn)證碼登錄測試的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python+Django實(shí)現(xiàn)防止SQL注入的辦法
這篇文章主要介紹了python+Django實(shí)現(xiàn)防止SQL注入的辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10python實(shí)現(xiàn)基于樸素貝葉斯的垃圾分類算法
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)基于樸素貝葉斯的垃圾分類算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07Python線性點(diǎn)運(yùn)算數(shù)字圖像處理示例詳解
這篇文章主要為大家介紹了數(shù)字圖像處理基本運(yùn)算如何用Python詳細(xì)點(diǎn)運(yùn)算來處理數(shù)字圖像有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09python sort、sort_index方法代碼實(shí)例
這篇文章主要介紹了python sort、sort_index方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03使用Python webdriver圖書館搶座自動預(yù)約的正確方法
這篇文章主要介紹了使用Python webdriver圖書館搶座自動預(yù)約的正確方法,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03基于Python實(shí)現(xiàn)剪切板實(shí)時監(jiān)控方法解析
這篇文章主要介紹了基于Python實(shí)現(xiàn)剪切板實(shí)時監(jiān)控方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09如何通過Python的pyttsx3庫將文字轉(zhuǎn)為音頻
pyttsx3是一個開源的Python文本轉(zhuǎn)語音庫,可以將文本轉(zhuǎn)換為自然的人類語音,這篇文章主要介紹了如何通過Python的pyttsx3庫將文字轉(zhuǎn)為音頻,需要的朋友可以參考下2023-04-04Pycharm使用遠(yuǎn)程linux服務(wù)器conda/python環(huán)境在本地運(yùn)行的方法(圖解))
這篇文章主要介紹了Pycharm使用遠(yuǎn)程linux服務(wù)器conda/python環(huán)境在本地運(yùn)行的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12