目錄
1.什么是jmeter?
2.jmeter能做什么?
3.jmeter環(huán)境搭建
3.1前提:
3.2jmeter下載:
3.3jmeter環(huán)境搭建:
3.3.1mac當中jmeter環(huán)境搭建:
3.4jmeter基本配置
3.4.1.切換語言
?3.4.2.安裝插件
4.jmeter組件
4.1測試計劃
4.2線程組
4.2.1取樣器錯誤后要執(zhí)?的動作
4.2.2線程屬性
4.3jmeter監(jiān)聽器
4.3.1聚合報告
4.3.2后端監(jiān)聽器
4.3.3察看結(jié)果樹
4.3.4取樣器
4.3.5配置元件
4.3.6邏輯控制器
4.3.7前置處理器
4.3.8后置處理器
4.3.9斷?
4.3.10定時器
5.jmeter的目錄內(nèi)容:
6.Jmeter動態(tài)參數(shù)的解決思路是什么?
7.jmeter里面調(diào)用變量是什么怎么調(diào)用?
8.測試報告?
8.1 認識ant
8.1.1 ant下載
8.1.2ant環(huán)境變量配置:
8.1.3驗證環(huán)境:
8.2 認識build.xml文件
8.2目錄結(jié)構(gòu)
8.3自動發(fā)送郵件:
1.什么是jmeter?
JMeter是100%完全由Java語言編寫的,免費的開源軟件,是非常優(yōu)秀的性能測試和接口測試工具,支持主流協(xié)議的測試
2.jmeter能做什么?
1.JMeter是100%完全由Java語言編寫的軟件性能測試的GUI的測試工具,方便用戶可以無代碼的方式編寫性能測試腳本。JMeter的特點可以總結(jié)為如下:
2.JMerer測試工具不僅僅可以做性能測試,也可以做API的測試,可以和構(gòu)建工具整合起來,如Ant,Maven,以及CI工具的整合,以及也可以和Grafana可視化整合起來
3.JMeter支持多種協(xié)議進行性能測試,如HTTP,HTTPS,WS
3.jmeter環(huán)境搭建
3.1前提:
1、需要安裝JDK的環(huán)境,配置java環(huán)境變量(參考:)
2、查看java環(huán)境是否搭建成功:javac / java -version
3.2jmeter下載:
下載地址:
3.3jmeter環(huán)境搭建:
3.3.1mac當中jmeter環(huán)境搭建:
控制臺: 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.切換語言
環(huán)境搭建成功之后,就可以直接在控制臺輸入jmeter啟動,啟動成功后,先切換成中文
?3.4.2.安裝插件
第一步:選項--插件管理
第二步:在搜索框輸入json 勾選第一行 點擊右下角安裝插件
jmeter接口測試視頻教程:敢稱史上最全,jmeter接口測試實戰(zhàn)教程,一學就會,零基礎(chǔ)入門必看_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0
4.jmeter組件
4.1測試計劃
在JMeter的測試工具中,把測試計劃可以理解為是一個工程的目錄,也就是說每一個腳本都可以說是一個測試計劃,在一個測試計劃里面包含了很多的線程組來進行執(zhí)行,測試計劃也是JMeter腳本的根節(jié)點。
4.2線程組
測試套件,等于postman里面的集合。JMerer通過線程組來驅(qū)動多個(也可以理解為LR?具??的虛擬?戶)運?測試腳本對?標服務器發(fā)起?量的?絡請求,在每個客戶端上可以運?多個線程組,也就是說?個測試計劃??可以包含N個線程組
在JMeter的測試?具中,依據(jù)業(yè)務的形態(tài)來設(shè)置它的?錄結(jié)果,但是設(shè)置性能測試的場景,主要是在線程組中來進?設(shè)置。JMeter的線程組可以理解為是建?了?個線程池,在執(zhí)?的過程中處理線程組??的各個業(yè)務邏輯,線程組的信息具體如下:
?
4.2.1取樣器錯誤后要執(zhí)?的動作
這部分可以理解為當客戶端向服務端發(fā)送請求后,以及發(fā)送請求的過程中出錯后的異常處理?式。
繼續(xù)
如果有?個請求錯誤,其他的請求會繼續(xù),不會因為有?個請求錯誤的導致其他請求終?。
啟動下?個進程循環(huán)
如果請求出現(xiàn)問題,同?腳本中的其他請求就都不再執(zhí)?,直接執(zhí)?下?個進程的信息。如登錄后下?個請求是查看個?主?,但是因為登錄出錯,下個接?查看個?主?就不會被執(zhí)?。
停?線程
停?線程指的是如果請求失敗,就停?當前線程執(zhí)?,不再繼續(xù)執(zhí)?。如果線程數(shù)很多的,那么導致的結(jié)果是停?的線程就會很多,處于真正運?的線程會很少,最后導致服務器的負載不夠,?般不建議構(gòu)選改選項。
停?測試
如果請求失敗,那么停?所有線程執(zhí)?,也就是說停?整個測試。
?即停?測試
如果請求失敗,?即停?整個測試場景的執(zhí)?。
4.2.2線程屬性
線程數(shù)
?個線程可以理解為對應模擬?個?戶,所以線程數(shù)越多,那么也就認為可以模擬的?戶數(shù)越多。
Ramp-Up時間(秒)
該屬性指的是所有線程從啟動到開始運?的時間間隔,單位是秒,也就是說所有線程在多?時間內(nèi)開始執(zhí)?,如線
程數(shù)設(shè)置50,設(shè)置的時間為5秒,那么計算的公式為:
每秒執(zhí)?線程數(shù)=線程數(shù)/Ramp-Up
具體如:
如設(shè)置的線程數(shù)為50,Ramp-up的時間為10,那么也就是說開啟執(zhí)?后,每秒會啟動5個線程,如果Ramp-Up設(shè)置為
0,那么開始執(zhí)?后,50個線程會?刻啟動
循環(huán)次數(shù)
循環(huán)次數(shù)可以理解為,請求的重復次數(shù)。如果選擇“永遠”,那么請求將?直進?,不建議這樣操作。
延遲創(chuàng)建線程直到需要如50個線程數(shù),Ramp-Up時間是10秒,執(zhí)?后線程是全部就緒的,那么就是每隔1秒啟動5個線程數(shù)
調(diào)度器
思維調(diào)度器可以理解為設(shè)置何時開始運?。
持續(xù)時間
測試計劃持續(xù)多?時間
啟動延遲
從當前時間延遲多?時間開始運?測試,也就是說點擊執(zhí)?后,僅僅是做初始化的場景,不會執(zhí)?測試,等待延遲
到達后開始運?測試,執(zhí)?的時間為持續(xù)時間設(shè)置的時間。?
4.3jmeter監(jiān)聽器
4.3.1聚合報告
聚合報告是以表格的形式來顯示取樣器的結(jié)果信息,如果不同的取樣器擁有相同的名字,那么在聚合報告會顯示在????,那么?般來說,聚合報告都是根據(jù)取樣器來顯示每個取樣器的執(zhí)?結(jié)果信息。聚合報告的信息具體如下:
Label:取樣器名稱
Samples:取樣器運?次數(shù)
Average:單個請求的平均響應時間
Median:50%請求的響應時間
90%Line:90%請求響應時間
95%Line:95%請求響應時間
99%Line:99%請求的響應時間
Min:請求的最?響應時間
Max:請求的最?響應時間
Std.Dev:響應時間的標準?差
Error%:事務錯誤率
Throughput:吞吐率,也就是TPS
KB/sec:每秒數(shù)據(jù)包流量
Avg.Bytes:平均數(shù)據(jù)流量
Received KB/sec:每秒從服務器端接收到的數(shù)據(jù)量
SentKB/sec:每秒從客戶端發(fā)送的請求的數(shù)量
4.3.2后端監(jiān)聽器
后端監(jiān)聽器可以把JMeter與influxdb,grafana整合起來,把性能測試過程中的數(shù)據(jù)存儲到influxdb,然后最后顯示在grafana的可視化界?中。
4.3.3察看結(jié)果樹
結(jié)果樹能夠很清晰的顯示每個取樣器執(zhí)?的結(jié)果信息,以及每個取樣器的?絡請求信息
4.3.4取樣器
取樣器是JMeter的基本單元,?般性的各種都是取樣器來發(fā)起的
HTTP請求
可以把它理解為?個獨?的測試?例,或者說是?個測試場景。
4.3.5配置元件
配置元件可以理解為對取樣器的各種請求進?輔助配置。
HTTP信息頭管理器
每個HTTP的請求都是需要請求頭的信息的,那么可以把請求頭的信息添加到HTTP信息頭管理器,然后需要把它放在取樣器的前?。
HTTP Cookie管理器
在系統(tǒng)登錄成功后需要訪問系統(tǒng)中的其他?絡請求,但是需要記住?戶登錄成功后的sessionID的信息,那么使?HTTP Cookie管理器就可以?動記錄下這些信息。
在JMeter中,如果一個網(wǎng)站使用的是session來實現(xiàn)的,但是jmeter無法獲取登錄成功后的sessionid,那么也就導致登錄后的請求,都會重定向到登錄的頁面,也就是說無法驗證我是誰,可以使用cookie管理器來解決它內(nèi)部會記住所有網(wǎng)絡請求的cookie信息,并且會讓所有的網(wǎng)絡請求間的cookie共享,如下圖:
?戶定義的變量
在測試中,如果某些請求參數(shù)存在變化,?如是?戶名和密碼,那么就可以單獨的獨?出來,?戶定義的變量可以
很輕松的來解決這部分的問題。
HTTP請求默認值
每個取樣器發(fā)送?絡請求的時候都是需要IP地址等信息,但是使?HTTP請求默認值可以很輕松的把請求的地址獨
?出來。
4.3.6邏輯控制器
邏輯控制器主要控制JMeter的執(zhí)?順序,它的存在使整體的測試的靈活度更?。?如接?A執(zhí)?完成后得到的結(jié)果
信息,經(jīng)過邏輯控制器判斷之后,再執(zhí)?接?B或者是接?C。?般性的??,簡單控制器使?的最多,但是也看具
體的場景進?設(shè)置。
4.3.7前置處理器
在執(zhí)?取樣器之前,需要進?初始化的設(shè)置,等價于UnitTest測試框架中的setUp()的?法。?
用戶參數(shù)
我們?個測試點,需要多次操作,并且每次操作的數(shù)據(jù)都是不?樣的測試步驟?致,但是測試數(shù)據(jù)每次不?樣(前置處理器)
比如:登錄的賬戶
CSV 數(shù)據(jù)?件設(shè)置
將數(shù)據(jù)放到一個文件里直接調(diào)用(配置元件里面)
記事本
?csv文件
jmeter接口測試視頻教程:
敢稱史上最全,jmeter接口測試實戰(zhàn)教程,一學就會,零基礎(chǔ)入門必看_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0? ? ? ?
4.3.8后置處理器
在執(zhí)?取樣器之后執(zhí)?,如API測試中經(jīng)常會涉及到上個API的輸出是下個API的輸?,那么就會使?到后置處理器
中的正則表達式提取器或者是JSON提取器,BeanShell斷?等。
正則表達式提取器:(后置處理器--正則表達式提取器)
測試地址
- 模板:?$$引?起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是$2$,$3$等等,表示解析到的第?個值給user_id。例如:$1$表示匹配到的第?個值
- 匹配數(shù)字:0代表隨機取值,-1代表所有值,此時提取結(jié)果是?個數(shù)組,其余正整數(shù)代表第?個匹配的內(nèi)容提取出來。如果匹配數(shù)字選擇的是-1,還可以通過 {user_id_2}來取第2個匹配的內(nèi)容。
- 缺省值:正則匹配失敗時,取的值
4.3.9斷?
主要?來驗證返回的結(jié)果數(shù)據(jù)與預期的結(jié)果數(shù)據(jù)是否完全匹配,?般最常?的是響應斷?和JSON斷?。
4.3.10定時器
定時器主要?來在測試計劃執(zhí)?的過程中,定時器?來緩減線程運?,?如刻意的等待3秒后再執(zhí)?下?個請求的信息
延時等待
api的測試用例執(zhí)行的速度非??斓?,基本只在毫秒級別的,但是在某些時候,由于業(yè)務的特性嗎,想讓他延遲幾秒鐘執(zhí)行,那么這個時候就用延時等待(定時器--固定定時器)
5.jmeter的目錄內(nèi)容:
bin目錄:可執(zhí)行的應用程序
extras目錄:擴展插件目錄
lib目錄:所用到的插件目錄,里面均為jar包
6.Jmeter動態(tài)參數(shù)的解決思路是什么?
假設(shè)一個圖書管理系統(tǒng),可以進行增刪改查,我們在登錄成功之后,會返回一個token值,通過登錄接口的后置處理器中的json提取器或者正則表達式提取器,我們一般用json提取器,定義一個變量來存儲登錄成功后的token,在下個接口中我們在請求頭當中調(diào)用這個變量。
7.jmeter里面調(diào)用變量是什么怎么調(diào)用?
在請求頭添加token jwt ${token}
添加--配置元件--http信息頭管理器--添加
?
8.測試報告?
8.1 認識ant
8.1.1 ant下載
下載地址:
8.1.2ant環(huán)境變量配置:
mac配置ant環(huán)境變量:
#ant環(huán)境變量
export ANT_HOME=/Applications/tools/apache-ant-1.10.1
export PATH=$ANT_HOME/bin:$PATH
windows配置ant環(huán)境變量:
把他(目錄到bin目錄)配置到path環(huán)境變量
8.1.3驗證環(huán)境:
控制臺輸入ant,現(xiàn)實如下說明環(huán)境已經(jīng)搭建好
8.2 認識build.xml文件
ant構(gòu)建工具,該構(gòu)建工具執(zhí)行的時候依賴于build.xml的文件,在build.xml文件里面會定義具體執(zhí)行的腳本,執(zhí)行的順序,以及測試報告存儲的目錄
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!請查收下,無涯課堂API測試報告,如有任何疑問,請聯(lián)系我,謝謝!"/>
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 <!--執(zhí)行接口測試-->
34 <target name="test">
35 <echo>執(zhí)行接口自動化測試</echo>
36 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
37 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
38 <!--要執(zhí)行的測試腳本-->
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 <!--自動發(fā)送郵件-->
67 <target name="sendEmail">
68 <echo>發(fā)送自動化測試報告</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目錄結(jié)構(gòu)
tests
用來存放測試的所有資料
report
用來存放測試報告 里面再創(chuàng)建html和jtl的文件夾
scrip
用來存放測試腳本
8.3自動發(fā)送郵件:
1、 在JMeter的extras下找到ant-jmeter-1.1.1.jar,把它copy到ant的apache-ant-1.10.0\lib下。
2、自動發(fā)送郵件,需要三個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、修改要執(zhí)行測試用例的路徑和腳本
6.生成測試報告:在控制臺進入到測試用例tests的目錄下,輸入ant
7.生成的報告在哪打開?
jmeter--tests--report--html
最下面就是你最新生成的 點擊就能直接打開
生成的測試報告如下:
jmeter接口測試視頻教程:
敢稱史上最全,jmeter接口測試實戰(zhàn)教程,一學就會,零基礎(chǔ)入門必看_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75文章來源:http://www.zghlxwxcb.cn/news/detail-473376.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-473376.html
到了這里,關(guān)于jmeter接口測試項目實戰(zhàn)詳解,零基礎(chǔ)也能學,源碼框架都給你的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!