jmeter壓力測試,案例實講

       最近剛結束一個小項目,相似於課堂考試的一部分功能須要測試在多個學員登陸系統,並執行考試,到提交試卷的這樣一個過程,開始考慮用loadRunner,後來發現過重,因此採用的jmeter,輕量學習成本低,鼓搗了兩天搞出如今的成果,不總結出來不少東西就容易忘,廢話很少,上正文(本文爲了直觀,使用了衆多截圖,加載慢請耐心等待收穫,(*^__^*) 嘻嘻……)。sql

主界面:


jmeter基本設置:

options按鈕中能夠切換語言數據庫

工程操做流程:

操做方式本文如下面案例進行講解,此案例流程以下:

用戶登陸-Token Check-判斷用戶角色–獲取統計信息-獲取考試狀態-獲取考試題目-單選題答題-提交試卷-退出登陸

工程目錄:


組件介紹

查看結果數


聚合報告

圖形結果

 

線程組

添加線程組

可在根節點 「Test Plan」右鍵添加線程組和相關,測試計劃的其餘元件;例如本項目目錄樹中的 jdbc線程組 就是這樣添加的。


添加元件

在線程組或控制器等上面右鍵便可添加該節點下的相關元件

包括:HTTP請求,邏輯控制器,前置後置處理器,斷言,定時器,配置元件,監聽器等,元件的具體使用方法會在後面講。

HTTP請求默認值

有時候測試項目有一些全局的固定變量和參數須要在多處引用,爲了減小操做,可在線程組或某父節點下增長 HTTP請求默認值 默認設置,例以下圖中設定服務器名稱和端口,在其子節點下的 http請求接口名稱就沒必要都寫 127.0.0.1:3001/api/getUrl,而是直接寫成/api/getUrl
便可;

「同請求一塊兒發送的參數」若是寫了就會在每一個請求中帶着這個參數,這個用的很少,本案例沒用到


jdbc 鏈接配置

鏈接不一樣的數據庫須要安裝不經過的依賴 jar包,此處只講解sqlite數據的安裝方法,其餘數據庫可查看官網或其餘博客文章:

jar包安裝方法:

將下載的jar包複製到jmeter安裝位置的lib目錄下便可,


jdbc配置方法


jdbc請求

數據庫鏈接以後執行的一些CRUD(增刪改查)操做配置,通常經常使用的是查詢,此案例因爲後面須要模擬用戶登陸實現一系列操做,故此處是查詢用戶表的相關字段;


點擊運行以後,獲得的數據能夠在查看結果樹下的 JDBC Request下查看到運行結果


Debuger Sampler

添加以後能夠在查看結果樹中看到該節點下變量的值,至關於debug模式的變量查看。


循環控制器

遇到循環請求的狀況,須要設置循環次數,如上面的獲得用戶表用戶信息以後,循環用其中每一行的用戶名密碼登陸系統。


計數器

循環引用的時候須要制定參數的下標,如獲得的用戶列表 userList 數組中第2 次登陸要在請求中發送的userName爲userList[2];第三次userName= userList[3],每次不同,使用計數器就可實現


HTTP Cookie管理器

有時候咱們須要在瀏覽器上存儲 cookie 信息,可是在接口請求的時候是沒有cookie的,此時就須要在父節點上增長這個cookie管理器,便可自動攔截到服務端經過setCookie寫入的cookie信息,以下圖:

服務端在login/check請求發送後往cookie中寫了user信息,則在後面的請求中就會自動帶着
cookie信息了。


HTTP請求

接口壓力測試的基礎就是發送請求,直接上圖,此處以登陸接口爲例,使用以下:

(1)Parameters形式傳參json


(2)Body Data形式傳參


HTTP 信息頭

以Body Data方式傳輸參數的時候,須要配置HTTP信息頭,Content-Type的值根據實際填寫,經常使用的主要是下圖所示:


響應斷言

咱們爲了驗證請求的正確與否,通常會設置請求斷言,來驗證請求返回的狀態碼是否正確,以下,用戶登陸以後返回的狀態碼」errcode」:0,結果包括這個內容就算該請求經過。api



JSON Extractor(json解析器)

在執行完 http請求以後,每每須要取其返回結果中的某些字段,後面的接口請求會依賴前面的接口結果,此時就要用到JSON解析器(在Http右鍵,添加-後置處理器下)。以下在登陸以後須要拿到登陸的token,登陸返回結果示例:

{
 "errcode":0,
    "user":{
        "id":6,"userName":"XXX0001","pwd":"45b1017f751948aa",
            "desc":"{ \"name\":\"趙四\",\"birthday\":\"1991.03.111\",\"politicalStatus\":\"\",\"nation\":\"\",\"education\":\"\",\"health\":\"\",\"company\":\"\",\"duty\":\"\",\"dutyStartTime\":\"\",\"dedicatedNet\":\"\",\"tel\":\"\" }",          "roleApp":{"id":4,"name":"學員"},        "token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX25hbWUiOiJEWFRHMjAxODA4MDEyMDkiLCJ1dWlkIjoiYzY3NDhhMjAtYTVkYS0xMWU4LThmNGItZDcxYzA5YzJhMTFlIn0.ofbHY9LbGQPiI9Hs3ZQHLM6WWYKmk4meNUFgu-YlRLI",
    }
}複製代碼


解析提取token信息以下;


這樣在後面的請求中就能夠直接用${token}引用到token信息了。在案例中還取了其返回的狀態碼,只有狀態碼正確纔會執行後續請求。

If控制器

有的 http請求 是要判斷某變量的結果是否符合來決定是否請求,如案例中只有
errcode爲0,纔會執行;也有以前的用戶角色判斷,只有是學員纔會執行考試查詢等操做,都須要用到該控制器。


到這已經將本案例講解完畢了,其餘功能博主暫未使用,今天就分享到這。數組

--------------------------------------- 一條實而不華的分界線 --------------------------------瀏覽器

2018.08.23 新增內容bash

用戶定義的變量

        前面咱們講了HTTP請求默認值,這個只是在請求的時候免去咱們重複輸入請求地址和端口以及固定變量的方式;其實更方便的還有一個就是本節的「用戶定義的變量」,用戶可在此處設置更多的全局變量,用於請求中用到的。例如,博主今天遇到的,咱們將開發好的項目發佈在測試機上進行測試,此時就須要修改多個地方:用戶認證服務地址+端口、系統服務地址+端口、jdbc須要讀取的數據庫位置,甚至sql語句也能夠放在用戶變量中,方便隨時修改要查詢的用戶的條件。服務器

使用方式以下:cookie

「右鍵-添加-配置元件-用戶定義變量」,便可完成添加。學習


例如博主本身加的各個變量,以後即可以經過${_loginIP}引用對應的變量,在HTTP默認設置中也可直接這樣用,下次修改變量的時候就不用各個地方去修改,而是直接在這裏修改便可跑測試。

謝謝您的閱讀,但願您能有所手滑點了關注(實際上是準備打「但願您有所收穫的」),歡迎交流,共同進步!

相關文章
相關標籤/搜索