jmeter如何做自動化接口測試?

全網最全流程!Jmeter+Ant+Allure+Jenkins搭建屬于你的接口自動化流水線,CI/CD直接起飛!

1.什么是jmeter?

JMeter是100%完全由Java語言編寫的,免費的開源軟件,是非常優秀的性能測試和接口測試工具,支持主流協議的測試

2.jmeter能做什么?

1.JMeter是100%完全由Java語言編寫的軟件性能測試的GUI的測試工具,方便用戶可以無代碼的方式編寫性能測試腳本。JMeter的特點可以總結為如下:

2.JMerer測試工具不僅僅可以做性能測試,也可以做API的測試,可以和構建工具整合起來,如Ant,Maven,以及CI工具的整合,以及也可以和Grafana可視化整合起來

3.JMeter支持多種協議進行性能測試,如HTTP,HTTPS,WS

3.jmeter環境搭建

3.1前提:

1、需要安裝JDK的環境,配置java環境變量(參考:)

2、查看java環境是否搭建成功:javac / java -version

3.2jmeter下載:

下載地址:去官方正版下,懶得下找我要安裝包也行

3.3jmeter環境搭建:

3.3.1mac當中jmeter環境搭建:

控制臺: sudo vim .bash_profile

把下面的復制進去,JMETER_HOME=后面是jmeter的路徑,改成自己的路徑

#JMETER export JMETER_HOME=/Applications/tools/apache-jmeter-5.4.1 export PATH=$JMETER_HOME/bin:$PATH

3.4jmeter基本配置

3.4.1.切換語言

環境搭建成功之后,就可以直接在控制臺輸入jmeter啟動,啟動成功后,先切換成中文

3.4.2.安裝插件

第一步:選項--插件管理

第二步:在搜索框輸入json 勾選第一行 點擊右下角安裝插件

4.jmeter組件

4.1測試計劃

在JMeter的測試工具中,把測試計劃可以理解為是一個工程的目錄,也就是說每一個腳本都可以說是一個測試計劃,在一個測試計劃里面包含了很多的線程組來進行執行,測試計劃也是JMeter腳本的根節點。

4.2線程組

測試套件,等于postman里面的集合。JMerer通過線程組來驅動多個(也可以理解為LR?具??的虛擬?戶)運?測試腳本對?標服務器發起?量的?絡請求,在每個客戶端上可以運?多個線程組,也就是說?個測試計劃??可以包含N個線程組

在JMeter的測試?具中,依據業務的形態來設置它的?錄結果,但是設置性能測試的場景,主要是在線程組中來進?設置。JMeter的線程組可以理解為是建?了?個線程池,在執?的過程中處理線程組??的各個業務邏輯,線程組的信息具體如下:

4.2.1取樣器錯誤后要執?的動作

這部分可以理解為當客戶端向服務端發送請求后,以及發送請求的過程中出錯后的異常處理?式。

繼續

如果有?個請求錯誤,其他的請求會繼續,不會因為有?個請求錯誤的導致其他請求終?。

啟動下?個進程循環

如果請求出現問題,同?腳本中的其他請求就都不再執?,直接執?下?個進程的信息。如登錄后下?個請求是查看個?主?,但是因為登錄出錯,下個接?查看個?主?就不會被執?。

停?線程

停?線程指的是如果請求失敗,就停?當前線程執?,不再繼續執?。如果線程數很多的,那么導致的結果是停?的線程就會很多,處于真正運?的線程會很少,最后導致服務器的負載不夠,?般不建議構選改選項。

停?測試

如果請求失敗,那么停?所有線程執?,也就是說停?整個測試。

?即停?測試

如果請求失敗,?即停?整個測試場景的執?。

4.2.2線程屬性

線程數

?個線程可以理解為對應模擬?個?戶,所以線程數越多,那么也就認為可以模擬的?戶數越多。

Ramp-Up時間(秒)

該屬性指的是所有線程從啟動到開始運?的時間間隔,單位是秒,也就是說所有線程在多?時間內開始執?,如線
程數設置50,設置的時間為5秒,那么計算的公式為:
每秒執?線程數=線程數/Ramp-Up
具體如:
如設置的線程數為50,Ramp-up的時間為10,那么也就是說開啟執?后,每秒會啟動5個線程,如果Ramp-Up設置為
0,那么開始執?后,50個線程會?刻啟動

循環次數

循環次數可以理解為,請求的重復次數。如果選擇“永遠”,那么請求將?直進?,不建議這樣操作。

延遲創建線程直到需要如50個線程數,Ramp-Up時間是10秒,執?后線程是全部就緒的,那么就是每隔1秒啟動5個線程數

調度器

思維調度器可以理解為設置何時開始運?。

持續時間

測試計劃持續多?時間

啟動延遲

從當前時間延遲多?時間開始運?測試,也就是說點擊執?后,僅僅是做初始化的場景,不會執?測試,等待延遲

到達后開始運?測試,執?的時間為持續時間設置的時間。

4.3jmeter監聽器

4.3.1聚合報告

聚合報告是以表格的形式來顯示取樣器的結果信息,如果不同的取樣器擁有相同的名字,那么在聚合報告會顯示在????,那么?般來說,聚合報告都是根據取樣器來顯示每個取樣器的執?結果信息。聚合報告的信息具體如下:

Label:取樣器名稱
Samples:取樣器運?次數
Average:單個請求的平均響應時間
Median:50%請求的響應時間
90%Line:90%請求響應時間
95%Line:95%請求響應時間
99%Line:99%請求的響應時間
Min:請求的最?響應時間
Max:請求的最?響應時間
Std.Dev:響應時間的標準?差
Error%:事務錯誤率
Throughput:吞吐率,也就是TPS
KB/sec:每秒數據包流量
Avg.Bytes:平均數據流量
Received KB/sec:每秒從服務器端接收到的數據量
SentKB/sec:每秒從客戶端發送的請求的數量

4.3.2后端監聽器

后端監聽器可以把JMeter與influxdb,grafana整合起來,把性能測試過程中的數據存儲到influxdb,然后最后顯示在grafana的可視化界?中。

4.3.3察看結果樹

結果樹能夠很清晰的顯示每個取樣器執?的結果信息,以及每個取樣器的?絡請求信息

4.3.4取樣器

取樣器是JMeter的基本單元,?般性的各種都是取樣器來發起的

HTTP請求

可以把它理解為?個獨?的測試?例,或者說是?個測試場景。

4.3.5配置元件

配置元件可以理解為對取樣器的各種請求進?輔助配置。

HTTP信息頭管理器

每個HTTP的請求都是需要請求頭的信息的,那么可以把請求頭的信息添加到HTTP信息頭管理器,然后需要把它放在取樣器的前?。

HTTP Cookie管理器

在系統登錄成功后需要訪問系統中的其他?絡請求,但是需要記住?戶登錄成功后的sessionID的信息,那么使?HTTP Cookie管理器就可以?動記錄下這些信息。

在JMeter中,如果一個網站使用的是session來實現的,但是jmeter無法獲取登錄成功后的sessionid,那么也就導致登錄后的請求,都會重定向到登錄的頁面,也就是說無法驗證我是誰,可以使用cookie管理器來解決它內部會記住所有網絡請求的cookie信息,并且會讓所有的網絡請求間的cookie共享,如下圖:

?戶定義的變量

在測試中,如果某些請求參數存在變化,?如是?戶名和密碼,那么就可以單獨的獨?出來,?戶定義的變量可以

很輕松的來解決這部分的問題。

HTTP請求默認值

每個取樣器發送?絡請求的時候都是需要IP地址等信息,但是使?HTTP請求默認值可以很輕松的把請求的地址獨?出來。

4.3.6邏輯控制器

邏輯控制器主要控制JMeter的執?順序,它的存在使整體的測試的靈活度更?。?如接?A執?完成后得到的結果

信息,經過邏輯控制器判斷之后,再執?接?B或者是接?C。?般性的??,簡單控制器使?的最多,但是也看具

體的場景進?設置。

4.3.7前置處理器

在執?取樣器之前,需要進?初始化的設置,等價于UnitTest測試框架中的setUp()的?法。

用戶參數

我們?個測試點,需要多次操作,并且每次操作的數據都是不?樣的測試步驟?致,但是測試數據每次不?樣(前置處理器)

比如:登錄的賬戶

CSV 數據?件設置

將數據放到一個文件里直接調用(配置元件里面)

記事本

4.3.8后置處理器

在執?取樣器之后執?,如API測試中經常會涉及到上個API的輸出是下個API的輸?,那么就會使?到后置處理器

中的正則表達式提取器或者是JSON提取器,BeanShell斷?等。

正則表達式提取器:(后置處理器--正則表達式提取器)

測試地址

模板:?$$引?起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是$2$,$3$等等,表示解析到的第?個值給user_id。例如:$1$表示匹配到的第?個值

匹配數字:0代表隨機取值,-1代表所有值,此時提取結果是?個數組,其余正整數代表第?個匹配的內容提取出來。如果匹配數字選擇的是-1,還可以通過 {user_id_2}來取第2個匹配的內容。

缺省值:正則匹配失敗時,取的值

4.3.9斷?

主要?來驗證返回的結果數據與預期的結果數據是否完全匹配,?般最常?的是響應斷?和JSON斷?。

4.3.10定時器

定時器主要?來在測試計劃執?的過程中,定時器?來緩減線程運?,?如刻意的等待3秒后再執?下?個請求的信息

延時等待

api的測試用例執行的速度非常快的,基本只在毫秒級別的,但是在某些時候,由于業務的特性嗎,想讓他延遲幾秒鐘執行,那么這個時候就用延時等待(定時器--固定定時器)

5.jmeter的目錄內容:

bin目錄:可執行的應用程序

extras目錄:擴展插件目錄

lib目錄:所用到的插件目錄,里面均為jar包

6.Jmeter動態參數的解決思路是什么?

假設一個圖書管理系統,可以進行增刪改查,我們在登錄成功之后,會返回一個token值,通過登錄接口的后置處理器中的json提取器或者正則表達式提取器,我們一般用json提取器,定義一個變量來存儲登錄成功后的token,在下個接口中我們在請求頭當中調用這個變量。

7.jmeter里面調用變量是什么怎么調用?

在請求頭添加token jwt ${token}

添加--配置元件--http信息頭管理器--添加

8.測試報告

8.1 認識ant

8.1.1 ant下載

下載地址:官網下,懶得找找我要安裝包

8.1.2ant環境變量配置:

mac配置ant環境變量:

#ant環境變量

export ANT_HOME=/Applications/tools/apache-ant-1.10.1

export PATH=$ANT_HOME/bin:$PATH

windows配置ant環境變量:

把他(目錄到bin目錄)配置到path環境變量

8.1.3驗證環境:

控制臺輸入ant,現實如下說明環境已經搭建好

8.2 認識build.xml文件

ant構建工具,該構建工具執行的時候依賴于build.xml的文件,在build.xml文件里面會定義具體執行的腳本,執行的順序,以及測試報告存儲的目錄

1 xml version="1.0" encoding="UTF8"?>
2
3 <project name="ant-jmeter-test" default="run" basedir=".">
4
5 <property name="jmeterPath" value="/Applications/tools/apache-jmeter-5.4.1"/>
6 <property name="mailhost" value="smtp.sina.cn"/>
7 <property name="username" value="wuya1303@sina.com"/>
8 <property name="password" value="admin123"/>
9 <property name="mailfrom" value="wuya1303@sina.com"/>
10 <property name="mail_to" value="1730645056@qq.com"/>
11 <property name="mailsubject" value="API測試報告"/>
12 <property name="mail_port" value="25"/>
13 <property name="message" value="Hi!
14
15
16 <tstamp>
17 <format property="time" pattern="yyyyMMddhhmm" />
18 </tstamp>
19 <property name="jmeter.home" value="${jmeterPath}" />
20 <property name="jmeter.result.jtl.dir" value="${jmeterPath}\tests\report\jtl" />
21 <property name="jmeter.result.html.dir" value="${jmeterPath}\tests\report\html" />
22 <property name="htmlReportNameSummary" value="testReport" />
23 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${htmlReportNameSummary}${time}.jtl" />
24 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${htmlReportNameSummary}${time}.html" />
25
26
27 <target name="run">
28 <antcall target="test" />
29 <antcall target="report" />
30 <antcall target="sendEmail" />
31 </target>
32
33 <!--執行接口測試-->
34 <target name="test">
35 <echo>執行接口自動化測試</echo>
36 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
37 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
38 <!--要執行的測試腳本-->
39 <testplans dir="${jmeterPath}\tests\script" includes="1212.jmx" />
40 <property name="jmeter.save.saveservice.output_format" value="xml"/>
41 </jmeter>
42 </target>
43
44 <!--解決報告中NAN字段顯示問題-->
45 <path id="xslt.classpath">
46 <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar"/>
47 <fileset dir="${jmeter.home}/lib" includes="serializer-2.7.2.jar"/>
48 </path>
49
50 <!--生成HTML測試報告-->
51 <target name="report">
52 <echo>生成接口自動測試報告</echo>
53 <xslt classpathref="xslt.classpath"
54 force="true"
55 in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}"
56 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
57
58 <!--復制圖片-->
59 <copy todir="${jmeter.result.html.dir}">
60 <fileset dir="${jmeter.home}/extras">
61 <include name="collapse.png" />
62 <include name="expand.png" />
63 </fileset>
64 </copy>
65 </target>
66 <!--自動發送郵件-->
67 <target name="sendEmail">
68 <echo>發送自動化測試報告</echo>
69 <mail mailhost="${mailhost}"
70 ssl="ture"
71 user="${username}"
72 password="${password}"
73 mailport="${mail_port}"
74 subject="${mailsubject}"
75 messagemimetype="text/html"
76 tolist="${mail_to}">
77 <from address="${mailfrom}" />
78 <attachments>
79 <fileset dir="${jmeter.result.html.dir}">
80 <include name="${htmlReportNameSummary}${time}.html"/>
81 <include name="collapse.png" />
82 <include name="expand.png" />
83 </fileset>
84 </attachments>
85 <message>
86 ${message}
87 </message>
88 </mail>
89 </target>
90 </project>

8.2目錄結構

tests

用來存放測試的所有資料

report

用來存放測試報告 里面再創建html和jtl的文件夾

scrip

用來存放測試腳本

8.3自動發送郵件:

1、 在JMeter的extras下找到ant-jmeter-1.1.1.jar,把它copy到ant的apache-ant-1.10.0\lib下。

2、自動發送郵件,需要三個jar包,分別是:activation.jar,commons-email-1.2.jar,mail.jar,這三個文件放在ant的lib目錄下

3、輸出測試報告的配置

打開jmeter的bin目錄下的jmeter.properties文件,做如下修改:

把jmeter.save.saveservice.output_format=csv

修改為jmeter.save.saveservice.output_format=xml

4、build文件修改代碼:

1、修改jmeter的路徑

2、修改收到測試報告的郵箱

3、修改要執行測試用例的路徑和腳本

6.生成測試報告:在控制臺進入到測試用例tests的目錄下,輸入ant

7.生成的報告在哪打開?

jmeter--tests--report--html

最下面就是你最新生成的 點擊就能直接打開

生成的測試報告

全網最全流程!Jmeter+Ant+Allure+Jenkins搭建屬于你的接口自動化流水線,CI/CD直接起飛!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90119.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90119.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90119.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MyBatis整合SpringBoot終極指南

以下是一份系統化的 ?MyBatis 整合 Spring Boot 學習筆記&#xff0c;結合官方文檔與最佳實踐整理&#xff0c;涵蓋配置、核心功能、實戰示例及常見問題解決。 一、整合基礎與依賴配置 1. ?核心依賴? 在 pom.xml 中添加&#xff1a; <dependency><groupId>or…

企業微信ipad協議接口解決方案最新功能概覽

支持最新版本企業微信&#xff0c;安全穩定0封號免費試用&#xff0c;技術支持&#xff1a;string wechat"Mrzhu0107"企微ipad協議接口最新功能升級如下&#xff1a;【初始化】初始化企業微信&#xff0c;設置消息回調地址&#xff0c;獲取運行中的實例&#xff0c;根…

ansible 批量 scp 和 load 鏡像

1、save 鏡像腳本 在本地保存鏡像到 ansible 代碼目錄的腳本。 1.1、使用說明: 保存單個鏡像 save -i gcr.io/cadvisor/cadvisor:v0.52.1保存某個 namespace 下的所有鏡像 save1.2、腳本內容 cat /usr/local/bin/save #!/bin/bash #set -e # 分隔符 str="-"# …

【C# in .NET】20. 探秘靜態類:抽象與密封的結合體

探秘靜態類:抽象與密封的結合體 一、靜態類的底層本質:抽象與密封的結合體 靜態類作為 C# 中特殊的類型形式,其底層實現融合了抽象類與密封類的特性,形成了不可實例化、不可繼承的類型約束。 1. IL 層面的靜態類標識 定義一個簡單的靜態類: public static class Stri…

【Vue3】ECharts圖表案例

官方參考&#xff1a;Examples - Apache ECharts 1、創建工程 npm create vitelatest 或 npm init vuelatest 設置如下 2、下載依賴集運行項目 cd vue-echarts-demo npm install npm install echarts npm run dev 3、編寫核心代碼 創建src\components\BarView.vue文件…

二分查找----2.搜索二維矩陣

題目鏈接 /** 方案一: 每行都是遞增的,對每行進行二分,逐行查找;效率不高,每次搜索只能控制列無法兼顧到行,行被固定存在不必要的搜索 方案二: 從右上或左下頂點出發,以右上為例,向左迭代列減小,向下迭代行增大;效率更高避免重復搜索 */ class Solution {/**方案一: 每行都是…

2025.7.23

flen&#xff08;&#xff09;這個函數計算到的文件大小為0&#xff0c;明天解決 原因是路徑錯誤&#xff0c;寫成了CONFIG_ROOT_PATH"/music/test2.mp3,但是也沒報錯&#xff0c;打開文件也成功&#xff0c;所以就沒有懷疑到路徑方面來

大致自定義文件I/O庫函數的實現詳解(了解即可)

目錄 一、mystdio.h 代碼思路分析 二、mystdio.c 1. 輔助函數 BuyFile 2. 文件打開函數 MyFopen 3. 文件關閉函數 MyFclose 4. 數據寫入函數 MyFwrite 1、memcpy(file->outbuffer file->bufferlen, str, len); 2、按位與&#xff08;&&#xff09;運算的作…

Zipformer

Zipformer首先&#xff0c;Conv-Embed 將輸入的 100Hz 的聲學特征下采樣為 50 Hz 的特征序列&#xff1b;然后&#xff0c;由 6 個連續的 encoder stack 分別在 50Hz、25Hz、12.5Hz、6.25Hz、12.5Hz 和 25Hz 的采樣率下進行時域建模。除了第一個 stack 外&#xff0c;其他的 st…

SpringMVC快速入門之請求與響應

SpringMVC快速入門之請求與響應一、請求處理&#xff1a;獲取請求參數1.1 普通參數獲取&#xff08;RequestParam&#xff09;1.1.1 基礎用法1.1.2 可選參數與默認值1.2 路徑變量&#xff08;PathVariable&#xff09;1.3 表單數據綁定到對象1.3.1 定義實體類1.3.2 綁定對象參數…

【Mysql】 Mysql zip解壓版 Win11 安裝備忘

1. 官網 MySQL :: MySQL Community Downloads 選擇 MySQL Community Server 選擇Archives 選擇 8.0版本 MySQL :: Download MySQL Community Server (Archived Versions) 1. 普通版本&#xff08;推薦&#xff09; 名稱&#xff1a;Windows (x86, 64-bit), ZIP Archive 文件…

Web3面試題

1.在使用 Ethers.js 對接 MetaMask 錢包時&#xff0c;如何檢測用戶賬戶切換的情況&#xff1f;請簡述實現思路。 答案&#xff1a;可通過監聽accountsChanged事件來檢測。當用戶切換賬戶時&#xff0c;MetaMask 會觸發該事件&#xff0c;在事件回調函數中可獲取新的賬戶地址&…

uni-app動態獲取屏幕邊界到安全區域距離的完整教程

目錄 一、什么是安全區域&#xff1f; 二、獲取安全區域距離的核心方法 三、JavaScript動態獲取安全區域距離 1. 核心API 2. 完整代碼示例 3. 關鍵點說明 四、CSS環境變量適配安全區域 1. 使用 env() 和 constant() 3. 注意事項 五、不同平臺的適配策略 1. H5 端 2…

ZKmall開源商城微服務架構實戰:Java 商城系統的模塊化拆分與通信之道

在電商業務高速增長的今天&#xff0c;傳統單體商城系統越來越力不從心 —— 代碼堆成一團、改一點牽一片、想加功能得大動干戈&#xff0c;根本扛不住高并發、多場景的業務需求。微服務架構卻能破這個局&#xff1a;把系統拆成一個個能獨立部署的小服務&#xff0c;每個服務專…

ROS 與 Ubuntu 版本的對應關系

ROS 作為一套用于構建機器人應用的開源框架&#xff0c;其開發和運行高度依賴 Ubuntu 等 Linux 發行版&#xff0c;尤其是 Ubuntu 因其廣泛的兼容性和社區支持&#xff0c;成為了 ROS 最主流的運行平臺。 一、ROS 與 Ubuntu 版本的對應關系&#xff08;截至 2025 年&#xff0c…

GPT-4o mini TTS:領先的文本轉語音技術

什么是 GPT-4o mini TTS&#xff1f; GPT-4o mini TTS 是 OpenAI 推出的全新一代文本轉語音&#xff08;TTS&#xff09;技術&#xff0c;能夠以自然、流暢的方式將普通文本轉換為語音。依托先進的神經網絡架構&#xff0c;GPT-4o mini TTS 在語音合成中避免了傳統 TTS 的生硬…

Git下載全攻略

目標讀者初學者或有經驗的開發者不同操作系統用戶&#xff08;Windows、macOS、Linux&#xff09;下載前的準備確認系統版本和位數&#xff08;32-bit/64-bit&#xff09;檢查網絡環境是否穩定確保有足夠的磁盤空間Windows系統下載Git訪問Git官方網站&#xff08;https://git-s…

ADAS域控軟件架構-網絡管理狀態與喚醒機制

1. 狀態介紹: Sleep Mode:總線睡眠模式,控制器不發送應用報文和網絡管理報文。 Pre-Sleep Mode:準備總線睡眠模式,控制器不發送應用報文和網絡管理報文。 Ready Sleep Mode:就緒睡眠模式,系統發送應用報文但是不發送網絡管理報文。 Normal Operation mode:正常工作模式…

pytest簡單使用和生成測試報告

目錄 1. 基本使用 1--安裝 2--pytest書寫規則 3--為pycharm設置 以 pytest的方式運行 4--setup和teardown 5--setup_class和teardown 2. pytest生成測試報告 基本使用 安裝 pytest文檔地址 pytest documentation pip install pytest點擊pycharm左邊的控制臺按鈕 輸入pip inst…

Spring Boot 第一天知識匯總

一、Spring Boot 是什么&#xff1f;簡單說&#xff0c;Spring Boot 是簡化 Spring 應用開發的框架 —— 它整合了整個 Spring 技術棧&#xff0c;提供了 “一站式” J2EE 開發解決方案。核心優點&#xff1a;快速創建獨立運行的 Spring 項目&#xff0c;無需繁瑣配置&#xff…