1. 程式人生 > >接口壓測工具--jmeter

接口壓測工具--jmeter

cto linux下 一點 不一致 文件讀取 coo 並發 bin 文檔

jmeter

    jmeter是apache公司基於java開發的一款開源壓力測試工具,是一個較輕量的測試工具。運行需要安裝jdk環境,jmeter為免安裝軟件,

   解壓後直接運行jmeter執行腳本即可。它也是跨平臺的,支持在windows、linux、macos上使用。

    1 jmeter-http接口腳本基本流程

      添加線程組

      添加http請求

      在http請求中寫入url、路徑、請求方式、參數

      添加查看結果樹

      調用接口、查看返回值

      具體操作見下圖示:

      技術分享

      有時還需添加cookie和header,只需在【配置元件】裏添加【HTTPCookie管理器】和【HTTP信息頭管理器】即可,其配置如圖示:

      技術分享

      cookie的名稱、值依據接口文檔填寫,域需要填寫HTTP請求頁裏的【服務器名稱或ip】。

      技術分享

      header的名稱、值依據接口文檔填寫。

      添加【查看結果樹】

        【添加】-【監聽器】-【查看結果樹】,具體界面如下圖示:

        技術分享

        通過【查看結果樹】可以查看請求數據,也可查看服務器的響應數據,以此來判斷測試結果。

    2 jmeter-參數化

      jmeter參數化有三種方式:

        用戶定義的變量

          這種是為了方便管理參數,只能有一個值,比如ip地址。

          在線程組中添加一個用戶定義的變量,然後寫key、value就可以,key是參數名,value是具體值,調用時使用${key},其中key就是變量名稱。

          如下圖中變量名稱是ip:

          技術分享

          技術分享

        函數生成器

          可參照一定規則生成數據,比如生成隨機數、時間等。

          函數助手可按照規則生成一些參數,常用的參數有隨機數__Random、獲取當前時間__time、唯一值__UUID。

            隨機數__Random,可在指定範圍內取隨機數

            獲取當前時間__time,獲取當前系統時間,具體格式為:yyyy-MM-dd HH:mm:ss

            唯一值__UUID,每次生成一個隨機的uuid,都是唯一值

            技術分享

            技術分享

            技術分享

            技術分享

        從文件中讀取

          事先寫好數據,然後從文件中讀取數據,比如登錄接口的賬號、密碼。

          從文件中讀取,需要三個步驟:讀取文件、取文件內容裏的參數,賦予一個名字、使用值

          從文件讀取的話,需要在線程組裏添加【CSV Data Set Config】,如下圖示:

          技術分享

    3 jmeter斷言

      斷言是用來檢查返回接貨對不對的,如果對,就代表請求返回正確;如果沒有的話,就代表請求結果與預期不一致,並以此來作驗證測試是否通過。

      添加方法:【添加】-【斷言】-【響應斷言】,添加後的界面如下圖示:

        技術分享

    4 jmeter-關聯

      關聯是獲取到服務器返回的值,保存起來,給別的請求使用,做一些其他處理。

      jmeter關聯是通過正則表達式提取器來完成的添加方式為:

        【添加】-【後置處理器】-【正則表達式提取器】,字段詳解見下圖示:

    技術分享

        通過上面的關聯,其他請求使用時,調用${code}就可以獲取到關聯數據。

        另可通過加載第三方插件來做關聯:[email protected] - JSON Path Extractor

        【添加】-【後置處理器】-【正則表達式提取器】,字段詳解見下圖示:

        技術分享

        此種關聯方式適用於響應數據為json串的方式,操作上更簡單一點。

    5 jmeter-mysql操作

      要操作mysql需要引入第三方jar包,因為jmeter本身不能直接連接mysql,操作mysql需要如下步驟:

        在測試計劃裏導入jdbc的jar包

        創建數據庫連接配置(mysql的url、端口號、賬號、密碼等)

        寫sql語句,執行sql

        查看結果

        具體操作見下圖示:

        【測試計劃】-【Add directory or jar to classpath】下導入jdbc的jar包

        技術分享

        【添加】-【配置元件】-【JDBC Connection Configuration】

        技術分享

        配置mysql連接池名稱,要與後面sql請求的【Variable Name】一致

        數據庫的url:

          jdbc:mysql://192.168.1.116:3307/bugfree?allowMultiQueries=true

        數據庫驅動:

          指定數據庫類型是mysql、orcle、sqlserver等,驅動列表如下:

          技術分享

        賬號密碼:

          所連接數據庫的賬號、密碼。

    6 測試結果查看

      【添加】-【監聽器】-【聚合報告】,具體參數解釋見下圖示:

      技術分享

      查看結果需關註的幾個指標:

        tps,每秒處理的請求數,tps越高說明服務器處理能力越好

        響應時間,每個請求的處理時間

        並發用戶數,即並發量

    7 jmeter-linux下運行

      linux下運行jmeter是在jmeter的bin目錄下執行jmeter.sh腳本,命令如下:

      sh jmeter.sh -n –t a.jmx -l res.jtl

        -n 代表以沒有圖形化界面啟動

        -t 代表後面是測試腳本

        a.jmx 就是做好的測試腳本

        -l 代表後面是測試結果

        res.jtl  就是測試結果文件

      若要在查看結果樹中查看測試結果,只需在【查看結果樹】視圖中導入這個res.jtl文件即可。

    8 jmeter 添加負載機

      壓測過程中,當並發較大,一臺機器已經啟動不了那麽多並發時,需要添加負載機。

      首先在做壓力機的機器上啟動jmeter的代理:

        jmeter的bin目錄下有一個jmeter-server,啟動它即可,此文件就是jmeter代理。

      然後在控制機上添加壓力機ip:

        jmeter的bin目錄下有一個jmeter.properties,打開後找到remote_hosts模塊,添加ip後重新啟動jmeter,就可以在jmeter裏看到壓力機了。

        技術分享

        

        

        

接口壓測工具--jmeter