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