JMeter初探五-配置元件与参数化
目錄
1.HTTP Header Manager(信息頭管理器)
3.CSV Data Set Config
所謂配置元件可以理解為Jmeter中的一些基本操作。JMeter提供了豐富的配置元件,常用的包括參數化配置元件、HTTP請求默認值、HTTP信息頭管理器、計數器等,這些配置元件用于設置默認值和變量,提供給后面的sampler(取樣器)使用。
結合實際問題,開始參數化配置元件的介紹。推薦一個可以用于練習的公測地址
1.HTTP Header Manager(信息頭管理器)
在接口文檔中,獲取所有學生信息 說明如下:
請求URL:
- http://api.nnzhp.cn/api/user/all_stu
請求方式:
- get
需要添加header信息,key為Referer value 為http://api.nnzhp.cn/
參數:
無
Refer的意義在于告訴服務器我是從哪個頁面鏈接過來的,服務器籍此可以獲得一些信息用于處理,防釣魚網站。
當然配置元件這里還有一個是http請求默認值?
?2.HTTP Cookie Manager(cookie管理器)
結合 學生金幣充值 這個場景,介紹cookie管理器,cookie,session,token是常見的幾種客戶端繪話連接的認證方式。
簡要描述:
- 學生金幣充值接口,這個接口是為了講添加cookie以及身份驗證的
請求URL:
- http://api.nnzhp.cn/api/user/gold_add
請求方式:
- post
參數:
該接口有權限驗證,需要admin用戶才可以做操作,需要添加cookie
cookie中key為登錄的用戶名,value從登錄接口中獲取,登陸成功之后會返回sign
使用登錄接口進行登錄
在結果樹種返回的sign即是需要在學生金幣充值使用的作為cookie攜帶給服務端的信息之一
添加學生金幣充值接口和cookie管理器
這里就是從登錄接口獲取的參數用于下一個接口中,可以直接在Cookie中手動添加,但是實際情況時候每一個cookie都有時間有效性,因此需要將響應登錄接口中的sign作為參數傳遞給gold_add學生金幣充值接口。
注意到返回的數據都是json格式,自然很容易就想到使用json path 提取器進行操作,因此針對學生金幣充值的過程有以下思路:
在響應結果樹中先提取sign,在JSON Path Expression中輸入$.login_info['sign']?,$表示根元素,然后一級級屬性往下去找,先找到login_info,再往下子節點找到sin;響應接口中的sign是唯一的,因此也可以攜程$..id或者是$.login_info.id
?經過上述嘗試之后,可以使用$.login_info.sign進行提取sign,因此登陸接口中添加JSON提取器,在查看結果樹種查詢登陸的結果
?
當然這里的JSON Path expressions可以一次性匹配多個值,比如這里需要提取sign和userID
?參數詳解:
| Apply to | 應用范圍 |
| Names?of?created?variables? | 接收值的變量名,自定義,多個變量用分號分隔? |
| JSON?Path?expression | json path表達式,也是用分號分隔? |
| Match?No.(0 for Random) | 0表示隨機;n取第幾個匹配值;-1匹配所有。若只要獲取到匹配的第一個值,則填寫1 |
| Compute concatenation var(suffix_ALL) | 如果找到許多結果,則插件將使用'?,?'分隔符將它們連接起來,并將其存儲在名為<variable name>?_ALL的var中 |
| Default?Values | 缺省值,匹配不到值的時候取該值,可寫error。如果是多個提取表達式,這里需要填寫 |
同時新增一個Debug Sampler,顧名思義,調試使用的Debug
運行之后,查看變量getCookie結果如下
當然這里為了調試,也可以在登錄接口加入后置處理器Debug postprocesspor
?接著講學生充值金幣接口中Cookie管理器中的值使用上述步驟中定義的getCookie進行替換即可
?這個方法在包括登錄驗證token,cookie中十分有用。
3.CSV Data Set Config
參數化配置元件主要用于JMeter引用外部的數據,通過該元件進行一些配置,如果是否去除標題欄,使用指定數據分隔符等。線程組右鍵/添加/配置元件/CSV Data Set Config,就創建了一個CSV
參數詳解?
| Name | 腳本中顯示的這個元件的描述性名稱 | 是 |
| Filename | 文件名。待讀取文件的名稱。可以寫入絕對路徑,也可以寫入相對路徑(相對于bin目錄),如果直接寫文件名,則該文件要放在bin目錄中。對于分布式測試,主機和遠程機中相應目錄下應該有相同的CSV文件 | 是 |
| File Encoding | 文件編碼。文件讀取時的編碼格式,不填則使用操作系統的編碼格式 | 否 |
| Variable Names | 變量名稱。多個變量名之間必須用分隔符分隔。如果該項為空,則文件首行會被讀取并解析為列名列表 | 否 |
| Ignore first line | 是否忽略首行?如果csv文件中沒有表頭,則選擇false | 是 |
| Delimiter | 分隔符。將一行數據分隔成多個變量,默認為逗號,也可以使用“\t”。如果一行數據分隔后的值比Vairable Names中定義的變量少,這些變量將保留以前的值(如果有值的話) | 是 |
| Allow quoted data? | 是否允許變量使用雙引號?允許的話,變量將可以括在雙引號內,并且這些變量名可以包含分隔符 | 否 |
| Recycle on EOF? | 遇到文件結束符是否再次循環?默認為?true | 是 |
| Stop thread on EOF? | 遇到文件結束符是否停止線程?默認為?true | 是 |
| Recycle on EOF? | 當Recycle on EOF為False時,停止線程,當Recycle on EOF為True時,此項無意義,默認為?false | 是 |
| Sharing mode | 線程共享模式。1、All threads(默認):一個線程組內,各個線程(用戶)唯一順序取值;2、current thread:一個線程組內,各個線程(用戶)各自順序取值;3、線程組各自獨立,但每個線程組內各個線程(用戶)唯一順序取值; |
設置線程組的個數
其中csv.txt文件中的數據如下:
username password
zhangsan ? ? ?!@#$
lisi ? ? ? ? ? ? !@#$
王二 ? ?!@#$
碼農 ?SKH@@dk
運行之后,查看結果樹如下:
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的JMeter初探五-配置元件与参数化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JMeter初探四-Fiddler录制与
- 下一篇: Web请求原理