Jmeter實例計劃(查詢天氣)
- 2019 年 10 月 6 日
- 筆記
Jmeter實例計劃(查詢天氣)
查詢計劃(天氣查詢)
這是一個入門計劃,僅使用jmeter進行查詢功能的計劃,可參考http://www.cnblogs.com/TankXiao/p/4045439.html有程式碼可下載。不過我還是以自己的學習再講解一下。
實際編寫web測試時,你會發現:只有熟悉HTTP,才能理解Jmeter的實現方式,才能更好的去使用它,因為它就是模擬http的。
計劃目標:根據城市名稱,獲取城市程式碼,然後獲取到天氣資訊
分析步驟:
第一步: 發送請求到http://toy1.weather.com.cn獲取城市程式碼
比如上海,http://toy1.weather.com.cn/search?cityname=上海
從這個請求的response 中獲取到上海的城市程式碼.
(上海的地區程式碼是101020100)
第二步: 發送請求: http://www.weather.com.cn/weather2d/101020100.shtml 可以得到該城市的天氣數據
我用到的JMETER點有:自定義變數、關聯(正則表達式)、斷言
1. 第一步:創建執行緒組
JMETER的所有任務都必須執行緒處理,可以理解為WEB的請求就是一個執行緒組,所以需要模擬執行緒組來實現功能。
操作:添加——Threads(Users)——執行緒組,如圖所示

釋:
名稱:自定義的執行緒組名稱。
執行緒數:即設置發送請求的用戶數,即並發數。
Ramp-Up Period(in seconds):所有執行緒啟動起來的總時間,單位為妙。如果未指定ramp-up period ,也就是說ramp-up period 為零, JMeter 將立即建立所有執行緒。假設ramp-up period 設置成T 秒, 全部執行緒數設置成N個, JMeter 將每隔T/N秒建立一個執行緒。
循環次數:請求的重複次數,如果選擇永遠,則一直請求;輸入次數,則根據指定次數重複請求;如果為1,則僅執行一次請求。
Delay Thread creation until needed:直到需要時延遲執行緒的創建。
調度器:選中之後可以配置啟動時間、結束時間,立即或者預定的啟動及結束時間;
持續時間,即測試計劃持續多長時間,會覆蓋結束時間;
啟動延遲,即測試計劃延遲多長時間啟動,會覆蓋啟動時間。
2. 第二步:創建一個請求,獲取城市程式碼
首先:創建自定義變數
我們可以直接把需要查詢的「城市」寫在url地址進行請求(相當於一個常量),也可以設置為參數進行傳遞請求(相當於變數)
這裡就介紹怎麼創建自定義變數
定義一個變數叫 city. 使用它的時候用 ${city}
操作:添加——配置原件——用戶定義的變數,如圖所示。然後設置變數名稱為city,值為上海


然後:創建一個HTTP請求
操作:添加——Sampler——HTTP請求,如圖所示

輸入http的請求資訊,如下圖所示
請求名稱:citycode。
發送一個Get 方法的http 請求: http://toy1.weather.com.cn/search?cityname=${city}

釋:
名稱:自定義的HTTP請求的名稱。
伺服器名稱或IP:必填,內容為HTTP請求的Host頭域資訊,表示請求url的原始伺服器或網關的位置(域名)。
HTTP請求:這裡測試web查詢,所以協議一般默認的都是http。方法,根據http請求使用的方法選擇。Content encoding當參數值會有特殊字元時,最好設置一下,一般為utf-8.
路徑:主要指跟在伺服器名稱或IP後的參數資訊。
最後:創建HTTP資訊頭管理器
為什麼要創建http資訊頭呢,我前面說了jmeter就是模擬http發送請求的,但是它畢竟不是http,所以測試某些系統的時候,可能會檢測http請求的某些資訊,比如這裡的系統,可能會檢測到http的header,如果不包含,可能跳轉出現302.
操作:選擇http請求,右鍵——添加——配置元件——HTTP資訊頭管理器。
輸入資訊頭的值,這裡輸入的是Referer的值,也可以添加其他。


補充:添加響應斷言、斷言結果
響應斷言操作:選擇http右鍵添加——斷言——響應斷言。
斷言響應內容是否包含上海的字元串。


釋:
模式匹配規則:選擇「包括」「匹配」時,支援正則表達式;當為Equals和Substring時,則為完全匹配。
斷言結果操作:選擇執行緒組右鍵添加——監聽器——斷言結果

3. 第三步:創建結果樹
創建結果樹,當然就是為了看執行結果了,當然還有其他接聽結果的,請自行選擇。
操作:右鍵執行緒組添加——監聽器——查看結果樹。

點擊執行按鈕就可以執行前面編寫的citycode請求資訊了,通過為綠色,出現問題為紅色。

如圖,響應數據就是我們需要城市程式碼資訊了,同時第2步會對內容進行斷言。

得到了響應數據,但是內容很多。我們只需要上海對應的「城市程式碼」,那麼怎麼得到呢?
4. 第四步:關聯,正則表達式提取器
所謂關聯, 就是第二個Requst, 使用第一個Request中的數據(後置關聯)
我們這裡,就是需要將城市程式碼提取出來,給第二個http用,用來獲取天氣。
操作:右鍵執行緒名稱——後置處理器——正則表達式提取器,

通過第3步可以看到響應主體內容的格式,我們只要根據格式填寫下面的即可。

釋:
引用名稱:下一個請求要引用的參數名稱,如填寫title,則可用${title}引用它。
正則表達式:():括起來的部分就是要提取的。
.:匹配任何字元串。
+:一次或多次。
?:不要太貪婪,在找到第一個匹配項後停止。
模板:用$$引用起來,如果在正則表達式中有多個正則表達式,則可以是$2$$3$等等,表示解析到的第幾個值給title。如:$1$表示解析到的第1個值
匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0
預設值:如果參數沒有取得到值,那默認給一個值讓它取。
5. 第五步:創建第二個請求,獲取天氣
創建第二個http請求,請求資訊為 http://www.weather.com.cn/weather2d/${citycode}.html
其中${citycode} 中的數據, 是從第4步正則表達式獲取的

此時,再重複第第三步,清空上次結果,再,則可以獲取到響應的天氣資訊,這樣的一個計劃就完成了。

本文轉自:http://www.cnblogs.com/testwang/p/5231945.html