jmeter的工具:性能測試
負(fù)載和壓力的區(qū)別:
負(fù)載測試:在一定的工作負(fù)荷下,給系統(tǒng)造成du的負(fù)zhi荷及系統(tǒng)響應(yīng)的時間。
壓力測試:在一定的負(fù)荷條件下,長時間連續(xù)運行系統(tǒng)給系統(tǒng)性能造成的影響
TPS和QPS的區(qū)別:
?tps可以理解為是每秒對事務(wù)的處理的能力? qps是每秒對服務(wù)器的查詢能力
性能測試? web端和app端測試
web端的性能指標(biāo):
https://www.cnblogs.com/flyr/p/5509451.html
響應(yīng)時間(客戶端向服務(wù)端的請求時間,服務(wù)端對數(shù)據(jù)庫的請求時間,服務(wù)端將結(jié)果展現(xiàn)到頁面的時間)
響應(yīng)時間 2 5 8原則??
吞吐量:指的是在一次性能測試過程中網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量的總和.吞吐量/傳輸時間,就是吞吐率.
TPS:每秒處理事務(wù)能力
并發(fā)數(shù):? 單用戶的多次操作
多用戶的單次操作
? 點擊率:每秒鐘用戶向WEB服務(wù)器提交的HTTP請求數(shù).
? 資源使用率:cpu? <80%? 內(nèi)存? <80%? io <40???網(wǎng)絡(luò)<30%
app端的性能指標(biāo)

App端的性能指標(biāo):
Cpu? 內(nèi)存? 流量? 電量啟動時間? 幀率
cpu<80%? ? ? ? ? 內(nèi)存<80%
電量的損耗:??????
流量的損耗:
線程和進程區(qū)別:
接口測試:postman jmeter
Jmeter的接口測試:
1.首先,打開jmeter



2.測試計劃中添加線程租
? 2.1所有的測試工作都是從新建一個線程組開始的

? 2.2設(shè)置線程組參數(shù)。這里配置為:10個線程,同時啟動,循環(huán)一次。
? ? ? ? 其中線程數(shù)代表訪問的并發(fā)數(shù),默認(rèn)是1。
? ? ? ? Ramp-UpPeriod表示多長時間內(nèi)容啟動所有線程,如果時間很短,會造成網(wǎng)站的瞬間高并發(fā),默認(rèn)值是1秒。
? ? ? ? 循環(huán)次數(shù)是表示執(zhí)行多少次,默認(rèn)值為1,表示執(zhí)行一次結(jié)束,這里可以勾選永遠(yuǎn),讓其一直運行下去。

4.添加要壓測的http請求。

圖第一個紅框內(nèi)的協(xié)議、IP、端口不需要設(shè)置,會使用步驟c中設(shè)置的默認(rèn)值,只需設(shè)置請求路徑Path即可

5.在線程中添加查看結(jié)果樹,在線程組中進行添加聚合報告/表格查看結(jié)果/圖形結(jié)果






Jmetere的斷言:
斷言用來判斷接口的返回值是否匹配
在線程租中進行添加斷言--響應(yīng)斷言并將json放入到響應(yīng)結(jié)果中在察看結(jié)果樹中來

Jmeter的參數(shù)化關(guān)聯(lián)
????都是用${變量名}
A:用戶變量???? 一個變量對應(yīng)一個變量值

B:用戶參數(shù)???? 一個變量對應(yīng)多個變量值

C:可以使用csv文件方式


? 1.用txt文件或者是excel,csv文件
? 2.書寫參數(shù)化值? 一個http請求的所有參數(shù)以行為單位? 多個值用,隔開???
????????????????? 多個http請求對應(yīng)是多行? ??

3. 在線程組中添加csvDataconfig 匹配對應(yīng)的文件和參數(shù)名

D:可以使用函數(shù)助手的方式來隨機生成${}參數(shù)變量
https://blog.csdn.net/qq_34659777/article/details/86005723
Jmeter的對數(shù)據(jù)庫鏈接(對數(shù)據(jù)庫進行壓力測試)
測試數(shù)據(jù)的來源:A.復(fù)用開發(fā)的原有數(shù)據(jù) b.復(fù)用線上的真實數(shù)據(jù)c.直接使用線上數(shù)據(jù) d.測試人員手動添加E:產(chǎn)品或者是運營提供數(shù)據(jù)
在線程中添加配置原件jdbconection config


在線程租中添加取樣器中的jdbc request

注意:query type類型不同則寫sql語句不同
https://blog.csdn.net/vikeyyyy/article/details/80367135
Jmeter的對數(shù)據(jù)庫鏈接(對數(shù)據(jù)庫進行壓力測試):
測試數(shù)據(jù)的來源:
a.復(fù)用開發(fā)的原有數(shù)據(jù)?b.復(fù)用線上的真實數(shù)據(jù)c.直接使用線上數(shù)據(jù)?
d.測試人員手動添加 e.產(chǎn)品或者是運營提供數(shù)據(jù)
JDBC驅(qū)動包鏈接:
鏈接:https://pan.baidu.com/s/1P_jAt2C0lMnITjcRd5OeFg
提取碼:ab12
Jmeter需要使用JDBC功能時,把解壓好的jar包放在(jmeter的lib路徑)即可。
1.打開jmeter,先創(chuàng)建線程組。
2.測試計劃->添加->配置元件->JDBC Connection Configuration
3.然后第一個紅框隨便寫,第二個紅框配置JDBC數(shù)據(jù)庫連接
Database URL:? jdbc:mysql://替換ip地址:3306/數(shù)據(jù)庫名
配置完成就可以執(zhí)行數(shù)據(jù)庫了。
4.線程組下面添加JDBC sample,在紅框里輸入第三步里的輸入的值
5.查看結(jié)果樹,顯示這樣就已經(jīng)連接數(shù)據(jù)庫,可以操作數(shù)據(jù)庫數(shù)據(jù)了
****注意:query?type類型不同則寫sql語句不同****
Jemter的二種錄制方法:
一,Badboy(PC端)
Badboy下載地址:鏈接:https://pan.baidu.com/s/1UNDfT8btdyHt3EE6gKCjzg
提取碼:ab12
Badboy是一款不錯web自動化測試工具,利用它來錄制腳本,并且錄制的腳本可以直接保存為JMeter文件來使用。
Badboy? version 2.0.5
通過Badboy來錄制腳本
1.打開badboy ,點擊紅色按鈕,在地址欄輸入被測項目地址。
錄制完后,點擊旁邊的黑色按鈕結(jié)束錄制。
2.選擇文件,Export to Jmeter 保存.jmx類型文件
3.打開Jmter,打開“文件”->‘打開’選擇剛保存的.jmx類型文件。
Badboy下載完成打開頁面如下:

二,使用Jmeter自身的代理錄制腳本(移動端)
錄制腳本—Web端
打開Badboy

運行網(wǎng)址獲取數(shù)據(jù)

在Jmeter中打開剛剛保存的文件


補充數(shù)據(jù)

運行查看結(jié)果
Jemter提取器:
一、正則表達式提取器
步驟:右鍵“HTTP請求”->添加->后置處理器->正則表達式提取
正則表達式
創(chuàng)建正則表達式
填入數(shù)據(jù)
引用名稱:在HTTP請求中引用此數(shù)據(jù),需要用到的名稱
正則表達式:用于將需要的數(shù)據(jù)提取出來
():括起來的部分就是要提取的
. :匹配任何字符
+ :一次或者多次
* :所有字符串
? :在找到第一個匹配項后停止
模板:表示使用提取到的第幾個值
$ 1 $:表示取第一個
$ 2 $:表示取第二個
以此類推: $ n $:表示取第 n 個
匹配數(shù)字(0表示隨機): 0表示隨機,1代表全部取值
缺省值:如果正則表達式?jīng)]有找到值,則使用此缺省值
運行結(jié)果
正則正則表達式的格式:字符串形式"token":"(.+?)" 數(shù)字形式 “taken”:[(0-9)+]
( ) 標(biāo)記一個子表達式的開始和結(jié)束位置。子表達式可以獲取供以后使用。要匹配這些字符,請使用 ( 和 )。
匹配前面的子表達式一次或多次。要匹配 + 字符,請使用 +。
. 匹配除換行符 \n 之外的任何單字符。要匹配 . ,請使用 . 。
? 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字符,請使用?
二、JSON提取器
步驟:右鍵“HTTP請求”->添加->后置處理器->JSON提取器

Variable names:保存的變量名,后面使用${Variable names}引用
JSON Path? expressions:調(diào)試通過的json path表達式
Match Numbers:匹配數(shù)字(0代表隨機,1代表第一個,-1代表所有)
Default Values:找不到時默認(rèn)值,一般設(shè)置為NOT FOUND
Compute concatenation var(suffix_ALL):是否統(tǒng)計所有,即將匹配到的所有值保存,名為“變量名_ALL”
*****用 變量名_N 取第N個值
下面是JSON提取器各參數(shù)值的含義:
1.引用名稱:在HTTP等請求中,引用此數(shù)據(jù),需要用到的名稱
2.提取格式:$data[0].name
3.匹配數(shù)值:0代表隨機取值,1代表第一值,n代表第n個值
4.缺省值:如果正則表達式?jīng)]有搜到值,則使用此缺省值
json提取格式j(luò)son講解:
1.json串 []表示對象組成的數(shù)組,{}表示對象。
2.對象里包含多個 “屬性”:屬性值。屬性值可以是值,或數(shù)組,或?qū)ο蟆?/p>
3.JSON Extractor使用json path表達式匹配,可以一次取多個變量值。$表示響應(yīng)的根對象。取子對象或?qū)ο蟮膶傩杂? 取數(shù)組里的對象用[],數(shù)組索引從0開始。
Jemter定時器:
?一,固定定時器

如果你需要讓每個線程在請求之前按相同的指定時間停頓,那么可以使用這個定時器;需要注意的是,固定定時器的延時不會計入單個sampler的響應(yīng)時間,但會計入事務(wù)控制器的時間。
對于“java請求”這個sampler來說,定時器相當(dāng)于loadrunner中的pacing(兩次迭代之間的間隔時間);
對于“事務(wù)控制器”來說,定時器相當(dāng)于loadrunner中的think time(思考時間:實際操作中,模擬真實用戶在操作過程中的等待時間)。
如果你需要讓每個線程在請求之前按相同的指定時間停頓,那么可以使用這個定時器;需要注意的是,固定定時器的延時不會計入單個sampler的響應(yīng)時間,但會計入事務(wù)控制器的時間。
二,高斯隨機定時器
如需要每個線程在請求前按隨機時間停頓,那么使用這個定時器,下圖表示暫停時間會分布在100到400之間,計算公式參考:Math.abs((this.random.nextGaussian()?*?300)?+?100)

Jmeter的正則提取器面試題:
在一個線程組中,B請求需要使用A請求返回的數(shù)據(jù),也就是常說的關(guān)聯(lián),將上一個請求的響應(yīng)結(jié)果作為下一個請求的參數(shù),則需要對A請求的響應(yīng)報文使用后置處理器,其中最方便最常用的就是正則表達式提取器了。