首頁 > 軟體

java實現在效能測試中進行業務驗證範例

2022-07-21 18:00:46

引言

在效能測試過程中,驗證HTTP code和響應業務code碼是比較基礎的,但是在一些業務中,這些引數並不能保證介面正常響應了,很可能返回了錯誤資訊,所以這個時候對介面進行業務驗證就尤其重要。下面分享一個對某個資源進行業務驗證的Demo。

改介面請求資源詳情,其中有一個欄位是表示該使用者對於該資源的操作狀態,踩贊型別:1-贊,2-踩,3-取消贊,4-取消踩。

改壓測一個介面,但是需要兩個介面的資料提供資料,一個是登入,一個是操作改資源的介面。

點贊和資源詳情的方法

具體的專案結構之前講過,主要解決了請求方式,身份驗證的問題,這裡不再細說登入以及如何將身份令牌傳遞給。下面分享一下點贊和資源詳情的方法程式碼,兩者分屬兩個模組未在一個類裡面,我這裡單獨挑出來:

/**
     * 點贊和踩
     *
     * @param resId     資源id
     * @param operation 操作型別(踩贊型別:1-贊,2-踩,3-取消贊,4-取消踩)
     * @return
     */
    public JSONObject likeOrNot(int resId, int operation) {
        String url = FlowApi.LIKE_OR_NOT;
        JSONObject params = getParams();
        params.put("isCoursePackage", 0);//標識是否課程包 0-否 1-是
        params.put("operation", operation);
        params.put("resId", resId);
        params.put("resType", 5);//1-課件;2-題集;3-教學資料;4-課程包;5:題目
        JSONObject response = getPostResponse(url, params);
        output(response);
        return response;
    }
/**
     * 課程包詳情
     *
     * @param resid 資源ID 1030167
     * @return
     */
    public JSONObject courseDetail(int resid) {
        String url = LauncherApi.COURSE_DETAIL;
        JSONObject params = getParams();
        params.put("id", resid);
        JSONObject response = getPostResponse(url, params);
//        output(response);
        return response;
    }

壓測指令碼

下面是壓測指令碼,是用Groovy寫的,方便在伺服器上偵錯,但是跟Java有些不同,如果用編譯器的童鞋請注意編譯器異常,有些找不著參照物件的時候需要手動,或者忽略這些異常:

public static void main(String[] args) {
        def argsUtil = new ArgsUtil(args)
        def thread = argsUtil.getIntOrdefault(0, 2)
        def times = argsUtil.getIntOrdefault(1, 2)
        def threads = []
        thread.times {
            threads << new ThreadLimitTimesCount<Integer>(it, times) {
                def resid = 1030167
                def operation = getRandomInt(4)
                def drive
                @Override
                public void before() {
                    super.before()
                    def base = new OkayBase(it)
                    def flow = new Flow(base)
                    flow.likeOrNot(this.resid, this.operation)
                    this.drive = new Launcher(base)
                    sleep(1000)
                }
                @Override
                protected void doing() throws Exception {
                    def response = this.drive.courseDetail(this.resid)
                    int anInt = response.getJSONObject("data").getInt("like_state");
                    if (anInt != 3) fail();
                }
                @Override
                protected void after() {
                }
            }
        }
        new Concurrent(threads).start()
        allOver();
    }

doing()方法中response的響應處理可能會丟擲異常,fail()是一個封裝的丟擲通用執行異常的方法,用來標記響應失敗,在框架中會捕捉doing()方法的異常,並記錄統計執行緒執行過程的資料。有興趣參考效能測試框架第二版

以上就是java實現在效能測試中進行業務驗證範例的詳細內容,更多關於java效能測試業務驗證的資料請關注it145.com其它相關文章!


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