人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統 > 硬件軟件教程 > 詳細頁面

性能測試工具: jmeter正則表達式,您也許只知道一個

性能測試工具: jmeter正則表達式,您也許只知道一個

更新時間:2023-06-21 文章作者:未知 信息來源:網絡 閱讀次數:

根據運行的環境,操作系統可以分為桌面操作系統,手機操作系統,服務器操作系統,嵌入式操作系統等。

常用正則表達式大全_jmeter中正則表達式大全_php 正則表達式大全

1. 背景

為了讓大家更多地了解Jmeter并輕松使用它,稍后將添加性能章節.

1,調試采樣器和虛擬采樣器

首先介紹用于Jmeter調試Debug Sampler和Dummy Sampler的強大工具

Debug Sampler將在響應數據中輸出我們自定義的變量,這便于我們在調試時使用. 正式執行腳本后,需要刪除Debug Sampler.

Dummy Sampler可以更方便地模擬測試場景并自定義請求數據和響應數據,這在學習測試腳本編寫的過程中非常有用. 當然,撰寫文章時您無法公開公司的界面. 輸入太多代碼不舒服. 虛擬采樣器現在也非常舒適.

2,查看結果樹和日志查看器

使用偵聽器->查看結果樹以輕松查看接口的詳細信息

打開選項->“日志查看器”以方便調試bean腳本

二,json數據提取

json數據:

{ "resultCode": "1000", "resultMsg": "success", "userdic": { "Ali": "Moubao" }, "userlist": [ { "firstName": "Jiezai", "lastName": "Grizz", "id": 6 }, { "firstName": "Ben", "lastName": "Rose", "id": 8 } ]}

將虛擬采樣器的請求數據和響應數據配置為上述json字符串

讓我們演示如何提取用戶列表的第一個firstName的jiezai值,提取用戶列表的第二個firstName的Ben值,以及提取userlist [“ Jiezai”,“ Ben”]的firstName的所有值

在演示之前,我們將討論我們將使用的JSON Path Extractor(也是Jmeter擴展的第三方插件)的語法.

$代表整個對象. 代表絕對路徑,..代表相對路徑,[0]代表列表的第一個值,[0,1]和[: 2]都代表列表的前兩個元素

$. userlist

$. userlist [*]

$. userlist [-1: ]

$ .. userlist [?(@. id> 7)]

$ .. firstName

五個表達式的輸出如下:

jmeter中正則表達式大全_常用正則表達式大全_php 正則表達式大全

》》》 [{“” FirstName“: ” Jiezai“,” lastName“: ” Grizz“,” id“: 6},{” firstName“: ” Ben“,” lastName“: ” Rose“,” id“ : 8}]

》》》 [{“” FirstName“: ” Jiezai“,” lastName“: ” Grizz“,” id“: 6},{” firstName“: ” Ben“,” lastName“: ” Rose“,” id“ : 8}]

》》》 [{“ firstName”: “ Ben”,“ lastName”: “ Rose”,“ id”: 8}]

》》》 [{“ firstName”: “ Ben”jmeter中正則表達式大全,“ lastName”: “ Rose”,“ id”: 8}]

》》 [[Jiezai],“ Ben”]

PS:

1. 正則表達式提取器-“ value =”(. +?)“-”模板$ 1 $

(): 封裝要返回的匹配字符串. . : 匹配任何單個字符串.

+: 一次或多次. ?: 找到第一個匹配項后停止.

2. JSON路徑提取器的使用-“,請參閱:

閱讀它之后,我知道它幾乎是無所不能的,因為它具有自己的語法,例如Xpath.

1. 提取用戶列表中第一個名字的值jiezai

每個人都應該非常擅長此事. 使用Jmeter提取json數據的任何人都知道

使用正則表達式提取器: “ firstName”: “(. +?)”

在Debug Sampler test3 = Jiezai中提取結果

使用JSON路徑提取器

JsonPath表達式: $ .. userlist.firstName [0]

在Debug Sampler test3 = Jiezai中提取結果

2,提取用戶列表Ben的第二個firstName的值

使用正則表達式提取器: “ firstName”: “(. +?)”

或使用正則表達式提取器: “ firstName”: “(. +?)” *“ firstName”: “(. +?)”

php 正則表達式大全_jmeter中正則表達式大全_常用正則表達式大全

說明,模板代表正則表達式的數字“(. +?)”.

JsonPath表達式: $ .. userlist.firstName [1],該圖被省略.

在Debug Sampler test4 = Ben中提取結果

3. 提取userlist [“ Jiezai”,“ Ben”]的所有firstName值

似乎不可能只使用一次正則表達式,但是您可以使用JSON Path Extractor

JsonPath表達式: $ .. userlist.firstName

在Debug Sampler中提取結果test1 = [“ Jiezai”,“ Ben”]

4,比較正則表達式提取器和JSON路徑提取器

正則表達式可以提取非json數據,JSON路徑提取器只能提取json數據(),但是我們通常以json格式返回HTTP請求,因為它簡單直觀.

當json數據的返回值為{“ firstName”: “ Jiezai”}時,正則表達式為“ firstName”: “(. +?)”,如果: (當以下位置時: 冒號),實際上是json數據,然后還需要添加正則表達式,但是不管冒號左右兩側是否有空格,JSON Path Extractor表達式都是$ .. firstName

1. 使用BeanShell和JavaScript

由于公司從事保險業務,因此保險期和猶豫期將使用時間偏移.

例如jmeter中正則表達式大全,如果我購買保險,保險期為一年,保險開始日期為當前日期2018-4-11,結束日期為一年之后的當前日期2019-4-11

. 開始日期,我們可以使用BeanShell表達式

$ {__ BeanShell($ {__ time(yyyy)})}-$ {__ BeanShell($ {__ time(MM)},)}-$ {__ BeanShell($ {__ time(dd,)}))->輸出當前日期為2018-4-11或JavaScript表達式

$ {__ javaScript((new Date(). getFullYear())+'-'+(new Date(). getMonth())+'-'+(new Date(). getDate()))) ->輸出當前日期2018-4-11. 如果再加一年零兩個月零三天怎么辦?

BeanShell表達式

$ {__ BeanShell($ {__ time(yyyy)} + 1,)}-$ {__ BeanShell($ {__ time(MM,)} + 2,)}-$ {__ BeanShell($ {__ time(dd,)} +3,)}

JavaScript表達式

$ {__ javaScript((new Date(). getFullYear()+ 1)+'-'+(new Date(). getMonth()+ 2)+'-'+(new Date(). getDate() +3),)}

輸出全部為2018-5-14

似乎沒有問題,但除此之外,因為今天是2018年12月30日

常用正則表達式大全_php 正則表達式大全_jmeter中正則表達式大全

,上面表達式的結果是2019-14-33,哈哈哈,這個表達式不知道一年中有多少個月,一個月中有多少天,它只會累加起來. 但是,如果僅是年份偏移量,則仍可以使用上面的表達式. 如果有月或日的偏移量,我們可以使用BeanShell Sampler,它實際上是用來執行Java代碼的.

2,使用BeanShell腳本

如果要執行BeanShell腳本,則可以使用BeanShell PreProcessor,BeanShell Sampler或BeanShell PostProcessor

執行順序: BeanShell PreProcessor> BeanShell Sampler> BeanShell PostProcessor

BeanShell PreProcessor是一個預處理器,在調用接口之前執行. 我在這里用這個

BeanShell Sampler是一個接口請求,它將反映在結果樹中并寫入接口執行報告中,但不建議像執行Java代碼一樣使用它來計算時間偏移.

BeanShell PostProcessor是一個后處理器,在調用接口之后執行.

例如:

只要BeanShell PreProcessor和BeanShell PostProcessor在BeanShell Sampler的范圍之內,就必須首先運行BeanShell PreProcessor,然后運行BeanShell Sampler,然后運行BeanShell PostProcessor.

BeanShell PreProcessor的Java源代碼:

import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;log.info(Label); //輸出原件的名稱try{ log.info("*****時間偏移*****"); //輸出日志 Date date =new Date(); //獲取當前時間 SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); String nowDate = sf.format(date); Calendar cal = Calendar.getInstance(); cal.setTime(sf.parse(nowDate));//初始化為當前時間 cal.add(Calendar.DAY_OF_YEAR,+1); //后一天 String orderDate = sf.format(cal.getTime()); cal.setTime(sf.parse(nowDate)); cal.add(Calendar.DAY_OF_YEAR,+365); //后365天,即一年 String mouthDate = sf.format(cal.getTime()); vars.put("dayDate",orderDate);//把beanshell的變量傳給Jmeter vars.put("yearDate",mouthDate); log.info("輸出計算后的兩個時間"); log.info("dayDate="+orderDate); log.info("yearDate="+mouthDate);}catch(Exception e){}

時移的執行結果圖:

我們打開Jmeter的選項“檢查日志查看器,檢查Jmeter運行日志并執行上面的beanshell源代碼以獲取

dayDate = 2018-04-12,yearDate = 2019-04-11.

在beanshell中,log.info()可用于打印調試bean腳本的日志

說到beanshell,我不得不說我們使用beanshell腳本來加密和解密密碼,因為出于安全原因,登錄或付款期間的密碼將被加密和解密. 這里以加密為例:

首先,您需要開發同學的幫助,將添加的Java代碼鍵入password.jar包(以您自己命名)中,然后將password.jar包添加到Jmeter的測試計劃頁面,以便您可以在beanshell Java類中執行Java時導入加密. 如圖所示:

Jar包的密鑰代碼,調用FrameDemo.java的generateKey方法:

例如,我們要加密登錄密碼qq1111并參考Jmeter中的步驟

php 正則表達式大全_jmeter中正則表達式大全_常用正則表達式大全

1,Jmeter添加jar包

2,在Beanshell中導入FrameDemo.java

3. 調用FrameDemo.java的generateKey方法執行加密操作. GenerateKey具有3個輸入參數. 前兩個是加密密鑰,第三個是要加密的密碼. 我們的密鑰是固定的,需要加密. 密碼是qq1111,我們可以在beanshell中編寫要加密的密碼,也可以從Jmeter傳遞它. 然后,我們將選擇從Jmeter中傳遞,這更加靈活.

4. Beanshell將加密的字符串發送到Jmeter,以供Jmeter引用.

BeanShell PreProcessor的Java源代碼:

//在測試計劃頁面先添加加密jar包import com.forth.FrameDemo;//加密log.info("*****加密*****"); //輸出日志String password = vars.get("login_pw");//輸入登錄密碼-這樣寫會取Jmeter變量login_pw的值log.info("jmeter-loginpw="+password);String password = "qq1111"; //輸入登錄密碼String tpk = "30818902818100ccd601e07aeffc7f5f6d20d…";String kek = "308189028181009fa6334baf70c336163222…";String loginpw = FrameDemo.generateKey(tpk,kek,password); //調用工具類中的方法進行加密vars.put("loginpw",loginpw); //把值保存到jmeter變量loginpw中log.info("loginpw="+loginpw);

PS:

Beanshell內置對象vars訪問Jmeter變量

vars.get(“ login_pw”)//從Jmeter獲取變量login_pw的值

vars.put(“ loginpw”,loginpw); //將bean中的loginpw值存儲到Jmeter變量loginpw

當我們使用Jmeter進行接口測試時,每個接口都需要輸入IP和端口. 如果將采樣器中的IP和端口寫為172.20.128.188和8077. 因此,一旦遷移了測試環境,就需要在批處理腳本中修改批處理接口的IP和端口. 修改數量=腳本數量X腳本接口數量. 那是一件非常令人恐懼的事情,沒有技術含量. . 聰明,我們知道,我們必須先在Jmeter中定義IP和端口,這樣修改量才會大大減少. 如圖所示:

但是,通過這種方式,我們的IP和端口已更改. 我們仍然必須一個一個地打開和修改每個腳本. 修改數量=腳本數量,這仍然有些麻煩. 我們可以嘗試在同一位置將Jmeter腳本中的IP和端口引用為相同的值. 實際上,它是為腳本定義一個全局變量. 然后了解jmeter屬性變量,如圖所示:

修改數量= 1,完美,

Jmeter的bin目錄中的jmeter.properties文件可以定義jmeter屬性變量

打開jmeter.properties文件并插入兩行

IP=172.20.128.188PORT=8077

在Jmx腳本中引用為$ {__ P(IP,)},$ {__ P(PORT,)},修改jmeter.properties后,需要重新啟動jmeter才能生效.

bin下的User.properties也可以定義jmeter屬性值,那么問題是,user.properties和jmeter.properties同時定義了PORT的值,一個是8077,另一個是8078,最后是$ { __P(PORT,)}參考時值是多少?好奇的朋友可以嘗試一下并發表評論,并通過其他方式討論Jmeter的其他知識. Git尚未完成. 完成后,將代碼和相關腳本放在一起.

我覺得我的排版和描述可以優化,尤其是代碼和英文排版. 我希望能看到它的人能夠提及它. 感謝您的閱讀.

作者: 西邊的人


本文來自本站,轉載請注明本文網址:
http://www.pc-fly.com/a/jisuanjixue/article-286368-1.html



溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 淮南市| 孟村| 新源县| 孟连| 红河县| 高碑店市| 桃江县| 海阳市| 广宁县| 柳州市| 革吉县| 舞钢市| 尉氏县| 海门市| 临城县| 张家界市| 洛阳市| 会东县| 潍坊市| 临夏县| 高青县| 枣强县| 清流县| SHOW| 平阳县| 江北区| 平阴县| 江安县| 馆陶县| 海南省| 达日县| 吉木乃县| 东至县| 潜江市| 巩义市| 津市市| 胶南市| 普兰店市| 曲阳县| 托里县| 清流县|