常用取樣器詳解
http取樣器
名稱 用於給取樣器做標記 可以根據請求內容 起一個有意義的名稱
注釋 不影響測試 可以寫入關於請求的測試說明 供閱讀
1.1 基本配置
協議:向目標服務器發送HTTP請求時的協議,可以是http或者是https或者File ,默認值為http 。
服務器名稱或IP :HTTP請求發送的目標服務器名稱或IP地址
端口號:目標服務器的端口號,默認值為80
方法:發送HTTP請求的方法,可以根據接口文檔獲得,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路徑:目標URL路徑(不包括服務器地址和端口)-也可以直接寫完整路徑(上面的IP+端口就可以省略了) 不帶參數的api路徑
Content encoding :內容的編碼方式,默認值為iso8859(所以常用為UTF-8減少亂碼)
自動重定向:如果選中該選項,當發送HTTP請求后得到的響應是302/301時,JMeter 會自動重定向到新的頁面,但是Jmeter是不記錄重定向的過程內容。只能用於get和head方法,如果是post或者put請求則取樣器不會發送。
跟隨重定向:Http Request取樣器的默認選項,當響應code是3xx時,自動跳轉到目標地址。與自動重定向不同,Jmeter會記錄重定向過程中的所有請求響應,在查看結果樹時可以看到服務器返回的內容,如有多個跳轉則多個請求都會被記錄下來,此為默認選項。
自動重定向和跟隨重定向的區別只在於是否記錄多個跳轉的請求上
Use keep Alive : 當該選項被選中時,jmeter 和目標服務器之間使用 Keep-Alive方式進行HTTP通信,默認選中。 [這個不能被取消]
Use multipart/from-data for HTTP POST :當發送HTTP POST 請求時,使用Use multipart/from-data方法或者application/x-www-form-urlencoded方法發送,默認不選中。
Browser-compatible headers:當勾選multipart/form-data時,勾選此項會截掉http請求頭中的Content-Type和Content-Transfer-Encoding,而只發送Content-Disposition部分;
同請求一起發送參數 : 在請求中發送URL參數,對於帶參數的URL ,jmeter提供了一個簡單的對參數化的方法。用戶可以將URL中所有參數設置在本表中,表中的每一行是一個參數值對(對應RUL中的 名稱1=值1)。編碼這個選項最好勾選,因為如果參數值內含有ASCII Control Chars或者Non-ASCII characters或者其他符號的話,如果不勾選會導致發送失敗,勾選的話會自動將含有的這些特殊符號進行編碼。
同請求一起發送文件:在請求中發送文件,通常,HTTP文件上傳行為可以通過這種方式模擬,參數名稱就是發送文件對應的參數,MINE Type為資源媒體類型,說明參考如下MIneType。
1.2 高級配置
Implementation:發送http請求的方式,可選項為java和HttpClient4,默認為HttpClient4;如果是上傳文件的話一定要選擇;否則請求發送成功了,其實文件並未上傳成功
Timeouts(milliseconds):Connect:連接超時時間,單位為毫秒;
Response :響應等待超時時間,單位為毫秒;
Embedded Resources from HTML Files
從HTML文件獲取所有內含的資源:當該選項被選中時,jmeter在發出HTTP請求並獲得響應的HTML文件內容后,還對該HTML進行解析 並獲取HTML中包含的所有資源(圖片、flash等),默認不選中,如果用戶只希望獲取頁面中的特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達式,這樣,只有能匹配指定正則表達式的URL指向資源會被下載。
Parallel downloads.:是否使用自設資源池,勾選后可設置大小;
Number:資源池大小,默認為6。
URLs must match:URL匹配過濾,填寫此項則只會下載與此內容項匹配的url的資源,例如要獲取http://example.com/下的所有資源,使用正則表達式http://example.com/.*;
jdbc取樣器
前置:需要引用數據庫上官jar包
加入jar包的兩個方法
1 直接下載對應的jar文件放在bin/lib文件夾下 etc文件夾下也可以放 但是不建議 然后重啟jmeter
2 "測試計划" --> 瀏覽 導入對應jar
**建議使用第一種方法 **
作用:
名稱 用於給取樣器做標記 可以根據請求內容 起一個有意義的名稱
注釋 不影響測試 可以寫入關於請求的測試說明 供閱讀
2.1 JDBC Connection Configuration
想使用 jdbc request請求數據庫 在安裝數據庫的對應驅動 jar之后 需要添加 對應的jdbc環境配置
名稱 用於給取樣器做標記 可以根據請求內容 起一個有意義的名稱
注釋 不影響測試 可以寫入關於請求的測試說明 供閱讀
2.1.1 **Variable Name of Bound Pool **
1 *Variable Name of Create Pool : 重要 在創建對應的jdbc的環境配置 要定義個環境配置的的引用名稱
方便創建Jdbc request 與之對應
剩下的配置 取默認就可以
2.2 JDBC Request
添加方式 :測試計划 ->線程組 -> 取樣器 -> jdbc 取樣器
1 *** **Variable Name of Pool declared in JDBC Connection Configuration:由 JDBC Connection Configuration定義的連接池變量名
與jdbc環境變量中定義的引用名稱一致 類似數據庫外鍵 創建關聯
* Query Type: 定義sql的執行方式 非常重要 如果對應不上會直接導致請求失敗
2.Parameter values:逗號分隔的參數值列表。使用]NULL[指示空參數。(如果需要,可以通過定義屬性“JDCBSAMPLOUL.NulLMARK”來改變空字符串。必須用雙引號括起來,並且任何嵌入的雙引號必須加倍,【這是在使用SQL中包含占位符的情況 一般不需要做這個 直接卸載SQL中就可以 】
3.Parameter types:逗號分隔的SQL參數類型列表(比如INTEGER, DATE, VARCHAR, DOUBLE)或常量的整數值。當使用驅動程序建議的自定義數據庫類型時,可以使用這些整數值。
4.Variable names:用逗號分隔的變量名列表,用於保存由Select語句、Prepared Select語句或CallableStatement返回的值。注意,當與CallableStatement一起使用時,變量列表的順序必須與調用返回的OUT參數相同。如果變量名少於OUT參數,則只有指定變量名的部分能返回;如果存在更多的變量名,則多余變量將被忽略。
5.Result variable name:如果指定,這將創建包含行映射列表的對象變量。每個映射包含列名稱作為鍵,列數據包含值。用途:
這個是將 請求結果以列表的格式參數化; 可以通過 調試取樣器 觀察取樣器結果 確定參數化成功與否以及如何引用參數化 的 參數
- Query timeout:查詢超時時間;、
- Handle result set:定義如何處理由callable statements語句返回的結果 可選項為 string object records
調試取樣器
調試取樣器:
名稱 用於給取樣器做標記 可以根據請求內容 起一個有意義的名稱
注釋 不影響測試 可以寫入關於請求的測試說明 供閱讀
調試取樣器是jmeter中一個非常重要的存在 主要用於調試 解決使用jmeter時候遇到的如下的幾個問題
1.我想知道參數化的變量取值是否正確!
2.我想知道正則表達式提取器(或json提取器)提取的值是否正確!
3.我想知道 JMeter 屬性!
4,調試時服務器返回些什么內容!
當你遇到如上的問題時 可以使用調試取樣器 幫助解決問題
以下是對調試取樣器的參數說明
1 名稱:控制器名稱,可以隨意設置,甚至可以為空。
2 注釋:可以隨意設置,可以為空
JMeter Properties:是否查看JMeter屬性,默認為False。
JMeter Variables:是否查看運行時變量,默認為True。
System Properties:是否查看系統屬性,默認為False。
正常情況下 只需要使用調試取樣器的默認就足夠 但是如果想要使用 jmeter的系統和jemter的屬性時候哦需要將對應的參數變成True
這兩個屬性參數維護在jmeter 的bin目錄下的 properties 和 system 中
換句話說 調試取樣器可以顯示 所有 jmeter參數化手段 制造的參數
如上是jmeter 調試取樣器的實例
目前 調試取樣器的使用 一般與 查看結果數結合 在添加調試取樣器 之后 對應的結果 需要在查看結果數中才能看到
Beanshall取樣器
對於取樣器來說 jmeter的拓展性 主要體現在 Beanshall取樣器上 這個取樣器 的作用 概括成一句話 就是 當你想要在jmeter中實現的不是jmeter的自帶功能的時候 這個取樣器就派上了用場
由於beanshall取樣器本身是個大的模塊 在這邊做簡單的概述后 關於beanshall的使用 我會另起一個文檔詳細講解