首頁 > 軟體

python效能測試手機號驗證碼登入壓測範例詳解

2022-07-21 18:02:52

引言

這兩天遭遇了手機號登入相關的壓測需求,算是比較棘手的。主要原因有兩個,第一:之前從來沒有接手過這個專案,不熟悉各種規則;第二:資料量偏大,需要開發配合協調校驗規則。

業務邏輯:

請求傳送驗證碼介面,傳送成功(已係結的手機號,且有效的使用者狀態)可以獲取到登入的一個引數traceNo

使用traceNo、簡訊驗證碼、手機號請求登入介面

基本的校驗規則如下:

手機號校驗,排除一些不存在的號段,11位數位型別(介面傳string型別)

間隔(60s)內不允許發第二條簡訊,簡訊有效期同隔間

自然天不允許發10條以上的簡訊

驗證碼隨機和traceNo必需從傳送驗證碼介面獲得

解決方案:

限制條件已經做成可設定,可以隨時更改重啟服務即可

選中14號段,使用者手機號=14+uid

測試環境固定驗證碼

測試方案:

將傳送驗證碼和簡訊登入兩個介面放在一起壓測,需要準備一批測試使用者

單個執行緒繫結一個使用者,然後不停地傳送驗證碼和使用驗證碼登入

增加基礎類別屬性phone和模組類屬性lastTraceNo來完成引數傳遞

壓測指令碼:

threadmark用來標記任務的,我在模組方法裡面返回了token,表示唯一使用者登入介面請求操作,方便開發追蹤紀錄檔。

/**
 * 100個使用者通過傳簡訊然後通過驗證碼登入
 */
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, "學生留存1.2.3手機驗證碼登入").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()
        }
    }
}

模組類方法:

    /**
     * 手機號登入
     */
    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效能測試手機號驗證碼登入範例詳解的詳細內容,更多關於python手機號驗證碼登入測試的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com