使用java自定義jmeter的壓力測試用例

    之前已經分享過如何用java進行壓力測試,然而,那種直接用代碼壓測的缺乏圖形化GUI的直觀。同時,只能夠單機進行壓測,有些情況下,比如webservice的壓測需要大量的序列化反序列化xml,這些很消耗CPU之類的資源的壓力測試,單機根本不足。

    基於上述的原因,我選擇了jmeter來進來一些壓力測試用例的實施,像普通的http壓力測試的對jmeter來說都小菜一碟,同時分佈式的壓力測試對jmeter來說更是對用戶透明的。jmeter的資料在網上已經很足夠,就不怎麼重複了,這次想要重點講的是如何定義自己的壓力測試的用例。

    類似於之前的壓力測試模板,jmeter也提供了模板給我們,它就是在線程組下新建sample-》java請求,我們在java請求的選擇中會有幾個默認的test可以讓我們選,這幾個都是demo,我們今天要做的就是模仿下這個demo來實現自己的test,來讓jmeter加載我們的test。

在這個紅線框出的就是我們自己定義的test。

     要實現這樣一個test,只需要我們寫個類實現jmeter提供的

AbstractJavaSamplerClient 模板類
,然後實現裏面的
public SampleResult runTest(JavaSamplerContext javaSamplerContext)
,然後將該類打包成jar包,並且扔進去${jmeter_home}/lib/ext/下,jmeter就會自己在java請求面板中加載。

  public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        SampleResult results = new SampleResult();//這個一定要定義,jmeter調用根據這個來計算調用率
        try {
            results.sampleStart();//開始調用
            results.setSampleLabel("lsz");//設置聚合報告中的名字
            Thread.sleep(100);
            results.setSuccessful(true);
            results.setResponseCodeOK();
            results.setBodySize(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }finally {
            results.sampleEnd();//一定要end,不然jmeter不統計這次結果~
        }
        return results;
    }

同樣的,我們可以自己定義初始化的參數,只需要重寫

public Arguments getDefaultParameters()
返回參數的列表就可以了。

    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("SleepTime", String.valueOf(1000L));
        params.addArgument("SleepMask", "0x" + Long.toHexString(1023L).toUpperCase(Locale.ENGLISH));
        return params;
    }



代碼:https://github.com/linsongze/jmeter_javatest

發佈了52 篇原創文章 · 獲贊 15 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章