目錄
引言
最近遭遇了綁定手機號相關得壓測需求,有了手機號登錄得經驗和測試數據,這次算起來比較簡單。最重要得是難點就是要求開發配合調整配置已經在上一期內容:手機號驗證碼登錄性能測試中問題解決了,綁定手機號唯一得難點就是如何在單賬號綁定得過程中不斷切換手機號,而且保證最后賬號得綁定手機號還是一開始得14+uid
得模式。
業務邏輯:
請求發送驗證碼接口,發送成功(未綁定得手機號,用戶登錄狀態)可以獲取到登錄得一個參數traceNo
使用用戶登錄校驗令牌、traceNo
、短信驗證碼、手機號請求綁定手機號接口
基本得校驗規則如下:
手機號校驗,排除一些不存在得號段,11位數字類型(接口傳string
類型)
間隔(60s)內不允許發第二條短信,短信有效期同隔間
自然天不允許發10條以上得短信
驗證碼隨機和traceNo
必需從發送驗證碼接口獲得
解決方案:
限制條件已經做成可配置,可以隨時更改重啟服務即可
選中14號段,用戶手機號=14+uid
測試環境固定驗證碼
uid是9開頭得,所以單個用戶得綁定手機號在149
和148
之間切換,149
為初始狀態,這里并沒有使用每次換一個新手機號,第一是怕出現偶然重復,第二是數據維護不容易
測試方案:
將發送驗證碼和綁定手機號兩個接口放在一起壓測,需要準備一批測試用戶
單個線程綁定一個用戶,然后不停地發送驗證碼和綁定新手機號
增加基類屬性phone
和模塊類屬性lastTraceNo
來完成參數傳遞
壓測:
threadmark用來標記任務得,我在模塊方法里面返回了traceNo,表示唯一用戶登錄接口請求操作,方便開發追蹤日志。
/**?*?每個用戶先發短信然后綁定手機號,手機號分為148和149切換,后8位于uid后8位.最后會把測試數據固定在149號段?*/class?BindPhone?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?Bind(info,?times)????????}????????new?Concurrent(threads,?"學生留存1.2.3綁定手機號").start()????????thread.times?{????????????def?base?=?getBase(it)????????????def?info?=?new?UserInfo(base)????????????info.bindPhoneInit()????????}????????FanLibrary.testOver()????}????static?class?Bind?extends?ThreadLimitTimesCount<UserInfo>?{????????public?LoginTel(UserInfo?info,?int?times)?{????????????super(info,?times,?null)????????}????????@Override????????protected?void?doing()?throws?Exception?{????????????threadmark?=?t.bindPhone()????????}????}}
模塊類方法:
????/**?????*?獲取用戶信息?????*?????*?@return?????*/????public?JSONObject?getUserInfo()?{????????String?url?=?UserInfoApi.USERINFO;????????JSONObject?params?=?getParams();????????JSONObject?response?=?getPostResponse(url,?params);????????output(response);????????return?response;????}????/**?????*?綁定手機號?????*?????*?@return?????*/????public?JSONObject?bindPhone(String?phone)?{????????sendCodeOnline(phone);????????String?url?=?UserInfoApi.BIND_PHONE;????????JSONObject?params?=?getParams();????????params.put("phone",?phone);????????params.put("traceno",?lastTraceNo);????????params.put("code",?Common.TEL_CODE);????????JSONObject?response?=?getPostResponse(url,?params);????????output(response);????????return?response;????}????/**?????*?綁定手機號,壓測用?????*?????*?@return?????*/????public?String?bindPhone()?{????????phone?=?phone.startsWith("149")???148?+?phone.substring(3)?:?149?+?phone.substring(3);????????bindPhone(phone);????????return?lastTraceNo;????}????/**?????*?初始化手機號,默認id前兩位改成14?????*?????*?@return?????*/????public?JSONObject?bindPhoneInit()?{????????JSONObject?userInfo?=?getUserInfo();????????String?tel?=?userInfo.getJSONObject("data").getString("tel");????????if?(tel.startsWith("149"))?return?null;????????phone?=?149?+?phone.substring(3);????????sendCodeOnline(phone);????????String?url?=?UserInfoApi.BIND_PHONE;????????JSONObject?params?=?getParams();????????params.put("phone",?phone);????????params.put("traceno",?lastTraceNo);????????params.put("code",?Common.TEL_CODE);????????JSONObject?response?=?getPostResponse(url,?params);????????output(response);????????return?response;????}????/**?????*?發送綁定手機號信息?????*?????*?@param?phone?????*?@return?????*/????public?JSONObject?sendCodeOnline(String?phone)?{????????String?url?=?UserInfoApi.SEND_CODE_ONLINE;????????JSONObject?params?=?getParams();????????params.put("scene_type",?1);//1綁定手機????????params.put("phone",?phone);????????output(phone);????????JSONObject?response?=?getPostResponse(url,?params);????????output(response);????????if?(isRight(response))?{????????????lastTraceNo?=?response.getJSONObject("data").getString("traceno");????????}????????return?response;????}
以上就是python性能測試對手機號綁定進行壓測得詳細內容,更多關于python手機號綁定性能測試得資料請關注之家其它相關內容!
聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。