1.簡介
上一篇中巨集哥已經將其的理論知識介紹了一下,這一篇巨集哥就帶著大家一步一步的把上一篇介紹的理論知識實踐一下,然後再說一下如何建立高階web測試計劃。
2.網路計劃實戰
通過上一篇的學習,巨集哥將其分類為:
(1)不需要登入驗證身份就可以操作的。
(2)需要登入驗證身份之後才能操作的。
2.1不需要登入
這裡巨集哥就拿部落格園來舉例子,如部落格園,你不需要登入驗證身份,就可以執行閱讀、查詢和瀏覽部落格園內的文章(前提是這些文章沒有設定“只允許註冊的使用者訪問”)。
2.1.1抓包
1.閱讀部落格園文章
1、瀏覽器上輸入部落格園地址,點選文章::Jmeter(三) - 從入門到精通 - 測試計劃(Test Plan)的元件(詳解教程),如下圖所示:

2、fiddler抓包工具抓取部落格園查詢的過程。從下圖紅色圈住的部分可以看到查詢的URL和請求查詢傳送的引數。如下圖所示:

2.1.2閱讀文章
按照抓包抓取到的引數,我們下一步就是用Jmeter模擬閱讀部落格園文章:Jmeter(三) - 從入門到精通 - 測試計劃(Test Plan)的元件(詳解教程)。
1.建立一個測試計劃命名為:Test Blog Read Plan。如圖下所示:

2.選中測試計劃,新增執行緒組使用者,命名為:Blog User。如下圖所示:
注意:敲腦殼,敲黑板啦!!!巨集哥這個就是一個使用者閱讀一次,如果要壓測你可以設定多個使用者同時閱讀。

3.選中執行緒組,新增一個HTTP Header Manager(HTTP資訊頭管理器)。這個主要是為了避免Jmeter傳送請求後,返回結果可能會出現狀態碼為403的錯誤。如下圖所示:
注意:敲腦殼,敲黑板啦!!!這裡HTTP資訊頭管理器,主要新增一個引數User-Agent。根據你抓包的header來填寫即可。

4.選中執行緒組,設定一個http,傳送http預設請求值,放入你需求測試的地址。這樣做的好處就是後邊的所有的http請求你就不再需要重複的寫這個測試地址了。如下圖所示:
注意:敲腦殼,敲黑板啦!!!巨集哥本地搭建的Jenkins應用程式,那麼測試地址就很清楚了,這裡請求值填寫如下:
(1)protocol(協議:http or https):目前部落格園是https協議,所以這裡填寫Protocol:https
(2)測試地址為:部落格園的地址,不用囉嗦大家都知道了,Sever Name or IP:www.cnblogs.com
(3)Port:(部落格園沒有埠)

5.選中執行緒組,新增一個http請求命名為:Read。如下圖所示:
注意:敲腦殼,敲黑板啦!!!巨集哥本地搭建的Jenkins應用程式,那麼Read請求值,我們檢視抓到登入請求包(2.2.1)就很清楚了,這裡請求值填寫如下:
(1)protocol(協議:http or https):目前這個是本地搭建的http協議,所以這裡填寫Protocol:https
(2)測試地址為:本地搭建,不用囉嗦大家都知道了,Sever Name or IP:www.cnblogs.com
(3)Port:(部落格園沒有埠)
(4)Method:是那種型別的請求就選擇那種,這裡選擇get
(5)Path:閱讀部落格園文章的請求路徑
(6)Content Encoding:編碼巨集哥這裡沒有填寫,如果出現亂碼,你可以填寫utf-8和Gb2312試一下,即可。

6.選中執行緒組,新增一個結果樹,命名為:Check Read Results,監聽閱讀博文是否成功。如下圖所示:

2.2需要登入
同樣的這裡也拿部落格園舉例子,你如果要釋出隨筆、評論、點推薦等等的一系列操作,就需要你登入驗證身份以後才能執行這些操作。但是由於部落格園的登入機制改變巨集哥就不拿部落格園舉例子,巨集哥拿一個,巨集哥在本地搭建的Jenkins的web應用程式來實戰一下,刪除一個job。但是這個job必須在登入以後才能刪除,如果沒有登入就會刪除失敗。
2.2.1抓包
1.登入
1、瀏覽器上登入jenkins,輸入賬號和密碼,點選登入。如下圖所示:

2、fiddler抓包工具抓取jenkins登入的過程。從下圖紅色圈住的部分可以看到登入的URL和請求登入傳送的引數。如下圖所示:

2.刪除
1、我們前面講過登入後新建任務後,那可以繼續接著操作:刪除剛才新建的任務。如下圖所示:

2、用fiddler抓包,抓到刪除新建任務的請求,從抓包結果可以看出,傳的data引數是Jenkins-Crumb。如下圖所示:

3.這個Jenkins-Crumb哪裡來的呢?可以看上個請求的body。如下圖所示:

2.2.2登入
按照抓包抓取到的引數,我們下一步就是用Jmeter模擬登入到Jenkins。
1.建立一個測試計劃命名為:Test Jenkins Plan。如下圖所示:

2.選中測試計劃,新增執行緒組使用者,命名為:Jenkins User。如下圖所示:
注意:敲腦殼,敲黑板啦!!!巨集哥這個就是一個使用者登入一次,如果要壓測你可以設定多個使用者同時登入。

3.選中執行緒組,新增一個HTTP Header Manager(HTTP資訊頭管理器)。這個主要是為了避免Jmeter傳送請求後,返回結果可能會出現狀態碼為403的錯誤。如下圖所示:
注意:敲腦殼,敲黑板啦!!!這裡HTTP資訊頭管理器,主要新增兩個引數User-Agent和Content-Type。根據你抓包的header來填寫即可。

4.選中執行緒組,設定一個http,傳送http預設請求值,放入你需求測試的地址。這樣做的好處就是後邊的所有的http請求你就不再需要重複的寫這個測試地址了。如下圖所示:
注意:敲腦殼,敲黑板啦!!!巨集哥本地搭建的Jenkins應用程式,那麼測試地址就很清楚了,這裡請求值填寫如下:
(1)protocol(協議:http or https):目前這個是本地搭建的http協議,所以這裡填寫Protocol:http
(2)測試地址為:本地搭建,不用囉嗦大家都知道了,Sever Name or IP:localhost
(3)Port:8080(這裡巨集哥搭建的預設埠8080,你也可以在Tomcat的配置檔案修改這個埠)

5.選中執行緒組,新增一個http請求命名為:Login。如下圖所示:
注意:敲腦殼,敲黑板啦!!!巨集哥本地搭建的Jenkins應用程式,那麼Login請求值,我們檢視抓到登入請求包(2.2.1)就很清楚了,這裡請求值填寫如下:
(1)protocol(協議:http or https):目前這個是本地搭建的http協議,所以這裡填寫Protocol:http
(2)測試地址為:本地搭建,不用囉嗦大家都知道了,Sever Name or IP:localhost
(3)Port:8080(這裡巨集哥搭建的預設埠8080,你也可以在Tomcat的配置檔案修改這個埠)
(4)Method:是那種型別的請求就選擇那種,這裡選擇post
(5)Path:登入的請求路徑
(6)Content Encoding:編碼巨集哥這裡沒有填寫,如果出現亂碼,你可以填寫utf-8和Gb2312試一下,即可。

6.選中執行緒組,新增一個cookie管理器,用來管理登入後的cookie。如下圖所示:
注意:敲腦殼,敲黑板啦!!!cookie的新增一個值,這個也可以在抓包登陸請求中header檢視到,這裡巨集哥就不細說了。
(1)Name:JSESSIONID
(2)Value:一串數字和字母
(3)Domain:localhost

7.選中執行緒組,新增一個結果樹,命名為:Check Login Results,監聽登入是否成功。如下圖所示:

8.選中執行緒組,新增一個http請求命名為:Delete Item。如下圖所示:
注意:敲腦殼,敲黑板啦!!!巨集哥本地搭建的Jenkins應用程式,那麼Delete請求值,我們檢視抓到刪除請求包(2.2.1)就很清楚了,這裡請求值填寫如下:
(1)protocol(協議:http or https):目前這個是本地搭建的http協議,所以這裡填寫Protocol:http
(2)測試地址為:本地搭建,不用囉嗦大家都知道了,Sever Name or IP:localhost
(3)Port:8080(這裡巨集哥搭建的預設埠8080,你也可以在Tomcat的配置檔案修改這個埠)
(4)Method:是那種型別的請求就選擇那種,這裡選擇post
(5)Path:刪除的請求路徑
(6)Content Encoding:編碼巨集哥這裡沒有填寫,如果出現亂碼,你可以填寫utf-8和Gb2312試一下,即可。

9.選中執行緒組,新增一個結果樹,命名為:Check Delete Results,監聽刪除job是否成功。如下圖所示:

2.3JMeter執行檢視執行結果
2.3.1不需要登入
1、點選綠色的按鈕,執行Jmeter,如下圖所示:

2、檢視JMeter執行結果,一個請求的監聽結果都是綠色的,說明請求成功。如下圖所示:

(1)檢視閱讀是否成功,從結果看到博文內容,說明閱讀成功。如下圖所示:

2.3.2登入
1、Jenkins的新建任務裡有“北京-巨集哥”,如下圖所示:

2、點選綠色的按鈕,執行Jmeter,如下圖所示:

3、檢視JMeter執行結果,兩個請求的監聽結果都是綠色的,說明請求成功。如下圖所示:

(1)檢視登入是否成功,從結果看到“admin”和“登出”,說明登入成功。如下圖所示:

(2)可以看到登入成功後的,任務中有“北京-巨集哥”。如下圖所示:

(3)檢視刪除是否成功,從結果中沒有看到“北京-巨集哥”,說明刪除成功。如下圖所示:

4、檢視Jenkins的新建任務,沒有看到“北京-巨集哥”,說明刪除成功了,如下圖所示:

3.制定高階Web測試計劃
在本小節中,紅兒將介紹一下如何建立高階 測試計劃來測試網站。
有關基本測試計劃的示例,請參閱構建Web測試計劃。
3.1使用URL重寫處理使用者會話
如果您的Web應用程式使用URL重寫而不是Cookie來儲存會話資訊,則您需要做一些額外的工作來測試您的站點。
為了正確響應URL重寫,JMeter需要解析從伺服器接收的HTML並檢索唯一的會話ID。使用適當的HTTP URL重寫修飾符 可以完成此操作。只需將您的會話ID引數的名稱輸入到修飾符中,它將找到它並將其新增到每個請求中。如果請求已經有一個值,它將被替換。如果是“快取會話ID?” 如果選中,則將儲存最後找到的會話ID,如果先前的HTTP示例不包含會話ID,則將使用該ID。
URL重寫示例
下載此示例。在圖1中顯示了使用URL重寫的測試計劃。請注意,URL Re-writing修飾符已新增到SimpleController中,從而確保它只會影響該SimpleController下的請求。
圖1-測試樹
在圖2中,我們看到URL重寫修飾符GUI,它只有一個欄位供使用者指定會話ID引數的名稱。還有一個核取方塊,用於指示會話ID應該是路徑的一部分(用“;”分隔),而不是請求引數。
圖2-請求引數
該HTTP頭管理器可以讓你定製什麼樣的資訊JMeter的HTTP請求頭髮送。此標頭包含“使用者代理”,“編譯指示”,“推薦人”等屬性。
該HTTP頭管理器,像HTTP Cookie管理器,可能應該線上程組級別新增,除非出於某種原因,您希望為不同的指定不同的頁首HTTP請求在您的測試物件。
4.小結
4.1登入和刪除前三個引數空白
1.細心地小夥伴或者童鞋們會從截圖中發現巨集哥的登入和刪除的前三個引數都是空白的,什麼也沒有填寫,那是因為前邊的HTTP預設請求,所以這裡不用填寫,好處就從這裡就看出來了,目前只是列舉了兩個請求,如果成百上千的請求是不是效果就更明顯了。
好了,今天有關建立網路計劃實戰和建立高階Web測試計劃就分享到這裡。灰常感謝您閱讀到這裡,如果您覺得不錯,就幫忙點個推薦唄。
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡
