產(chǎn)生原因:
我們知道html是如這些標(biāo)簽包含的格式化文本,當(dāng)用瀏覽器打開時,瀏覽器內(nèi)部的標(biāo)簽解釋器把不同的標(biāo)簽解釋為不同的含義。這時默認(rèn)所有內(nèi)容都是在標(biāo)簽之內(nèi)的,標(biāo)簽本身并不是內(nèi)容。如果內(nèi)容中也有標(biāo)簽怎么辦?這是個問題嗎?當(dāng)然。當(dāng)一個負(fù)責(zé)講解html是什么的頁面輸出時,html頁面中必然包含有標(biāo)簽需要輸出顯示,而瀏覽器并不能智能的分清楚哪些是需要解釋哪些不需要。
解決方法:
其中一個辦法就是轉(zhuǎn)義。為了區(qū)分需要解釋和不需要解釋的<>,將不需要解釋的<>用轉(zhuǎn)義字符代替,html會將它們解釋為<>。和html一樣,其他編程語言也有一些內(nèi)置特殊符號需要用這樣的方法處理,比如php中的$,下面列舉一些:
如HTML轉(zhuǎn)義符、java 轉(zhuǎn)義符、xml 轉(zhuǎn)義符、 oracle 轉(zhuǎn)義符、sql 轉(zhuǎn)義符 、sqlserver 轉(zhuǎn)義符、php 轉(zhuǎn)義符、asp 轉(zhuǎn)義符、vb轉(zhuǎn)義符、 javascript 轉(zhuǎn)義符等等,還有網(wǎng)址中的百分號。
轉(zhuǎn)義字符串有三部分組成:
&符號+實體名稱/編號+;符號
例如,HTML的< >&"?的轉(zhuǎn)義字符串分別是
“&lt;”或者“&#60;”
“&gt;”或者“&#62;”
“&amp;”或者“&#38;”
“&quot;”或者“&#34;”
“&copy;”或者“&#169;”
在高級編程語言中已經(jīng)將轉(zhuǎn)義字符的轉(zhuǎn)義處理做成了函數(shù)。如php中的htmlspecialchars()負(fù)責(zé)將函數(shù)參數(shù)轉(zhuǎn)為對應(yīng)的轉(zhuǎn)義字符串
)JavaScript基本組成
1.1基本語法幾乎所有瀏覽器基本都支持,有專門的機構(gòu)制定統(tǒng)一標(biāo)準(zhǔn)
1.2Dom(文檔對象)瀏覽器基本都支持,但有的可能會有差別到時再說(重點)
1.3Bom(瀏覽器對象)一般功能性的瀏覽器支持這個沒有統(tǒng)一的標(biāo)準(zhǔn),主要操作如打開關(guān)閉瀏覽器窗口,獲取屏幕的分辨率screen,XmlHttpRequest(異步對象)等
2)JavaScript的語法
2.1Javascript嚴(yán)格區(qū)分變量的大小寫;比如 a與A代表的是兩個不同的變量
2.2Javascript中聲明變量時只有一個關(guān)鍵字var(ES5),Javascript是一個弱類型的編程語言;比如聲明一個變量a var a; a=3(數(shù)值) 或者a="3"(字符串)都是正確的,與C#中的不一樣;每條語句后加分號(分號建議加上)
如果變量使用前不用var聲明,這樣的變量就變成了“全局變量”
2.3Javascript中的注釋,與C#的相同 //單行注釋、/* 多行注釋 */
2.4變量的命名規(guī)則:以字母,下劃線或$開頭,中間可以包括任意的字母,數(shù)字,下劃線或$。(與C#相比變量命名中多了一個$)
2.5JavaScript中即可以使用雙引號或者單引號聲明字符串變量,主要是為了方便和html的兼容,避免轉(zhuǎn)義符的麻煩
2.6每次修改過JavaScript中的代碼后直接保存,在瀏覽器中刷新即可
3)JavaScript代碼
javascript代碼需要寫在<script></script>標(biāo)簽中而<script>標(biāo)簽可以寫在<head>,<body>等任意位置,一個網(wǎng)頁中也可以有多個<script></script>標(biāo)簽(此標(biāo)簽最好是成對出現(xiàn))
<script>標(biāo)簽標(biāo)準(zhǔn)格式:<script type="text/javascript">js代碼</script>
如果<script>標(biāo)簽放到<head>中,則代碼在body加載之前就已經(jīng)運行了;如果寫在body中的<script>是隨著頁面的加載而一個個執(zhí)行的
如果代碼運行遇到錯誤,有錯誤的<script></script>中的代碼不會執(zhí)行,但也不會影響后面的其他<script></script>中的代碼和html的顯示
JavaScript代碼可以直接寫在網(wǎng)頁中,也可以將JavaScript代碼寫到單獨的js文件中,其擴展名就是**.js, 寫好此js文件后在頁面中再引入此文件;建議寫在網(wǎng)頁的最后,因為javascript代碼執(zhí)行順序是從上到下依次執(zhí)行,如果引用文件寫在head中很大可能會報錯(操作DOM對象)
<script src="文件名.js" type="text/javascript"></script> src后面的路徑為相對路徑
查看javascript代碼
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>JavaScript</title>
<script type="text/javascript">
// javascript代碼 單行注釋
/* javascript代碼 多行注釋*/
var a=3;
alert(a);//彈出對話框
a="3";
alert(a);
</script>
</head>
<body>
</body>
<script src="**.js" type="text/javascript">只能引用文件,不能書寫代碼</script>
</html>
alert(a);自己查看彈出的對話框的值
上一篇:主要介紹線程組、HTTP請求默認(rèn)值、用戶定義的變量、固定定時器的應(yīng)用場景及實戰(zhàn)。
以下主要介紹正則表達式提取器、調(diào)式取樣器(Debug Sampler)、響應(yīng)斷言、HTTP信息頭管理器的應(yīng)用場景及實戰(zhàn)。
1、使用場景
從請求的響應(yīng)結(jié)果中取到需要的內(nèi)容,作為下一個接口的入?yún)亩鴮崿F(xiàn)關(guān)聯(lián)。比如登錄后,用正則表達式獲取token,其他接口攜帶token請求。
2、正則表達式提取器界面說明
②創(chuàng)建的正則表達式提取器頁面如下:
APPly to:
要檢查的響應(yīng)字段:
引用名稱:
提取結(jié)果之后的變量名稱,即下個請求需要引用的值,后面引用方式是${變量名}。
正則表達式:
使用正則表達式解析響應(yīng)結(jié)果,()括號表示提取字符串中的部分值,前后是提取的邊界內(nèi)容。
一般通用的正則表達式(.+?)。
如需了解更多關(guān)于正則表達式知識,可參照:Python自動化測試-正則表達式解析一文。
模板:
如果正則表達式有多個提取結(jié)果,則結(jié)果是數(shù)組形式。若只有一組表達式,則使用$,兩組正則匹配使用$$,以此類推。
匹配數(shù)字:
正則表達式匹配數(shù)據(jù)的結(jié)果可以看做一個數(shù)組:-1表示全部,0表示隨機,1表示第一個,2表示第二個,依次類推。
缺省值:
如果參數(shù)沒有取到值,那默認(rèn)給個值,比如null。
3、實戰(zhàn)小例子
提取登錄響應(yīng)結(jié)果的token:
②創(chuàng)建一個HTTP請求,用來發(fā)送登錄請求,登錄接口請求參數(shù)配置如下。
③HTTP請求,右鍵,創(chuàng)建一個正則表達式提取器。
先來看下登錄接口返回結(jié)果:
{
"data": {
"mobile": "12345678",
"id": 500,
"rid": 0,
"email": "adsfad@qq.com",
"username": "admin",
"token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
},
"meta": {
"msg": "登錄成功",
"status": 200
}
}
正則表達式提取token,配置如下:
④創(chuàng)建一個察看結(jié)果樹,運行后,接口返回如下:
(Debug Sampler)
1.使用場景
主要用于打印出變量進行調(diào)試。比如上面例子,雖然用正則表達式提取了token,但我們并不知道token是否有正確提取,可以使用調(diào)式取樣器查看。
2.調(diào)試取樣器界面說明
①線程組右鍵,依次點擊添加--》取樣器--》Debug Sampler。
②調(diào)式取樣器界面如下:
有三個參數(shù)Jmeter 屬性,選項值默認(rèn)即可。
Jmeter 屬性,系統(tǒng)屬性,一般不會變,不需要調(diào)試。
Jmeter 變量調(diào)試的是Jmeter中自定義的變量,包含如下這些自定義變量:
3.實戰(zhàn)小例子
①創(chuàng)建線程組、HTTP請求、正則表達式提取器、察看結(jié)果樹(介紹正則表達式實戰(zhàn)例子有,這里省略創(chuàng)建步驟)。
②創(chuàng)建調(diào)式取樣器(debug sampler),不需要修改,默認(rèn)即可。
③運行,在察看結(jié)果樹中,選擇調(diào)試取樣器,可以看到token已經(jīng)正常獲取到。
注意:一般來說調(diào)式取樣器(debug sampler)用于自測使用,上線時可以刪除。
1.使用場景
在接口測試過程中,需要判斷接口返回結(jié)果是否正確。
2.響應(yīng)斷言界面說明
①HTTP請求,右鍵,依次選擇添加--》斷言--》響應(yīng)斷言。
②響應(yīng)斷言界面如下:
Apply to:
測試字段:
響應(yīng)文本:響應(yīng)正文。(常用)。
響應(yīng)代碼:響應(yīng)狀態(tài)碼,比如200、304、404等。
響應(yīng)信息:響應(yīng)消息。,比如OK、Not Modified、Not Found等。
響應(yīng)頭:響應(yīng)請求頭。
請求頭:請求頭。
URL樣本:請求的url。
文檔(文本):從各種類型的文檔中提取文本。此選項開啟也會嚴(yán)重影響性能,謹(jǐn)慎使用。
忽略狀態(tài):忽略響應(yīng)狀態(tài)。
請求數(shù)據(jù):請求的body內(nèi)容。
模式匹配規(guī)則:
包括:如果文本包含正則表達式模式,則為true。
匹配:如果整個文本與正則表達式模式匹配,則為true。
相等: 如果整個文本等于模式字符串(區(qū)分大小寫),則為true。
字符串:如果文本包含模式字符串(區(qū)分大小寫),則為true。
否:對斷言結(jié)果進行否定。
或者:將多個測試模式以邏輯“或”組合起來。
3.實戰(zhàn)小例子
①創(chuàng)建線程組、HTTP請求、正則表達式提取器、察看結(jié)果樹(上面實戰(zhàn)例子有寫,這里省略創(chuàng)建)。
②HTTP請求右鍵,創(chuàng)建一個響應(yīng)斷言。我們再來看下響應(yīng)結(jié)果的信息:
{
"data": {
"mobile": "12345678",
"id": 500,
"rid": 0,
"email": "adsfad@qq.com",
"username": "admin",
"token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
},
"meta": {
"msg": "登錄成功",
"status": 200
}
}
斷言的方式可以多種,比如斷言msg、status或者msg、status一起斷言,甚至你用其他返回的字段也是可以的。
這里我們用msg斷言,配置如下:
③運行后,如斷言失敗,在察看結(jié)果樹里http請求會紅色顯示。
四、HTTP信息頭管理器
1.使用場景
在接口測試中,有時候需要攜帶請求頭,比如接口需要攜帶token進行請求,token需要放在請求頭里。
2.HTTP信息頭管理器界面說明
①線程組,右鍵,依次點擊添加--》配置元件--》HTTP信息頭管理器。
②HTTP信息頭管理器界面如下:
HTTP信息頭管理器比較簡單,直接添加請求頭信息的鍵值對就可以。
3.實戰(zhàn)小例子
①創(chuàng)建線程組、HTTP請求、正則表達式提取器、察看結(jié)果樹、響應(yīng)斷言(上面實戰(zhàn)例子有寫,這里省略創(chuàng)建步驟)。
②線程組下,新建一個HTTP消息頭管理器。
在上面介紹正則表達式提取器,我們已經(jīng)將登錄后的token用正則提取出來了,這里直接引用,相當(dāng)于全局設(shè)置了token,其他接口請求時會自動在請求頭帶上token。
在HTTP信息頭管理器引用token如下:
③線程組右鍵,新建一個http請求,用于請求用戶數(shù)據(jù)列表接口。
④運行后,發(fā)現(xiàn)用戶數(shù)據(jù)列表接口在請求頭自動攜帶了token。
總結(jié):本文主要介紹正則表達式提取器、調(diào)式取樣器(debug sampler)、響應(yīng)斷言、HTTP信息頭管理的應(yīng)用場景及實戰(zhàn)。
今日問題:
你在使用Jmeter過程中,常用的元件或插件有哪些?
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。