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步正則表達式獲取的

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM