1. 程式人生 > >學習總結—JMeter實現web介面測試實踐舉例

學習總結—JMeter實現web介面測試實踐舉例


測試專案:

本地搭建的jforum專案

測試內容:

登入:通過賬號密碼登入,並驗證是否登入成功;

進入板塊:實現動態獲取板塊資訊,驗證是否能正確進入板塊;

發帖:實現不同板塊隨機發帖,驗證是否發帖成功;

 

一、登入驗證

第一步,開啟JMeter


圖1

新建一個執行緒組,命名為登入發帖

圖2

新建一個HTTP請求,維護引數URL及請求引數等資訊。

圖3


圖4

當我們需要維護HTTP請求頭的一些資訊的時候,我們需要新建一個HTTP資訊頭管理器,在這裡我們可以管理HTTP請求頭的資訊。

圖5

        

圖6

整個測試過程中,當我們需要檢視執行結果時,我們需要用到監聽器,這裡我們新建一個察看結果樹用於檢視執行結果,察看結果樹放的位置不同,檢視的結果也不同。線上程組下新增察看結果樹,檢視執行緒組下所有請求的結果;放在具體某個請求下,只檢視此請求的結果;若放在某個控制器節點下,則檢視此控制器下節點執行的結果。我們這裡放線上程組下。

圖7

以下是執行結果,在察看結果樹中,可以以不同的顯示方式檢視請求資訊及響應資訊。

圖8

 

圖9

圖10

根據測試需求,我們需要去判斷是否登入成功了,即登入請求是否返回了登入成功的相關資訊,這裡我們就會用到JMeter中的斷言,Jmeter中斷言型別有許多,我們當前只舉例使用響應斷言,在實際的測試過程中,響應斷言基本能夠滿足80%的驗證問題,這裡新建一個響應斷言,來檢查伺服器響應資料是否返回預期想要的資料。

圖11

圖12

另外,我們可以新建一個斷言結果,檢視執行斷言結果的資訊。

圖13

下面分別是斷言成功和斷言是否的顯示:

圖14

圖15

圖16

圖17

 

二、進入板塊並進行發帖

由於後面的請求都需要填寫IP和埠號,且都一樣,所以這裡我們可以把IP和埠號在使用者定義的變數中進行引數化,後面使用時直接使用變數名,也方便了統一管理。

圖18 

建立並維護“進入板塊”的HTTP請求。

圖19

建立並維護“發帖”的HTTP請求。

圖20

從上圖可以看出,發帖這個請求的引數格式和之前的登入請求不太一樣,這裡我們需要去設定HTTP資訊頭,配置對應的Content-Type。

圖21

分別給進入板塊和發帖新增響應斷言,這裡我們可以直接去匹配響應程式碼是否為200,新增完成後執行指令碼,可以看到發帖後跳轉了到發帖成功的頁面(如圖21),說明我們指令碼執行通過,成功發帖。

圖22

前面我們是進入了第一個板塊,然後進行發帖,如果我們想進入別的板塊,或隨機進入一個板塊進行發帖,這個時候我們就需要用到JMeter中的關聯,我們需要提取伺服器給我們返回的板塊資訊。我們可以返回去看登入成功後跳轉的頁面返回的板塊資訊(如圖23)。

圖23

這個地方我們只需要獲取到1.page或3.page中的數字即可,因為這就是板塊ID,在這裡我們就可以用到正則表示式提取器。

在登入的HTTP請求下面新建一個正則表示式提取器。


圖24


圖25

利用正則表示式提取出來的值去引數化後面的請求。

圖26

圖27

執行一下,我們可以看到板塊資訊變成了4.page:

圖28

圖29

同時,我們登入論壇可以查詢到板塊4.page下確實釋出了一條新帖,但是這裡我們發現這個新帖的發表人是“遊客”(如圖30),我們用的賬戶Admin登入後進行發帖,所以這裡正確的顯示應該為“Admin”,為什麼會是“遊客”,這是因為我們在登入後並未記錄Cookie資訊,所以會出現這個現象,這裡我們可以線上程下建立一個“HTTP cookie管理器”。

圖30

線上程下新建一個HTTPCookie管理器,引數維護採用預設值即可。

圖31

圖32

這裡當我們再次執行指令碼的時候會發現前面建立的正在表示式提取器未能匹配到資料,這是因為我們記錄了Cookie後,登入成功後跳轉頁面的內容細微的變化(如圖33),所以我們只需要把正則表示式修改為<a class="forumlink"href=".*show/(.*).page">即可。

 

圖33

再次執行,我們可以看到發表人已經顯示為“Admin”了。

圖34

最後記錄一個可以很好的測試和分析正則表示式的工具。

工具名:Regester