當我們分析完乙個介面後,就可以開始準備測試指令碼了。
新建乙個測試計畫,並新增乙個執行緒組,並儲存指令碼為「建立使用者.jmx」
建立使用者首先需要登入,新增乙個http請求:登入
(假設前端已經完成,我是使用chrome的開發工具來檢視請求的,如果前端未完成的話,就只能找文件設計或詢問開發)
從截圖可以看到需要用到的資訊
協議、伺服器名稱或ip、埠號:都是從url資訊中獲取
方法: post
請求引數:登入請求使用的是form data(表單),對應到jmeter使用parameters
如果響應資料返回「登入成功」,表示登入請求設定ok
(這個我沒準備前端,只能從文件說明中獲取需要的資訊了,具體看「介面分析」部分)
協議、伺服器名稱或ip、埠號、方法:在文件中有直接說明,容易理解
請求引數: 因為使用的是json,所以不好用paramters表單形式來傳送引數了,改用body data,具體如截圖(注意json格式要正確)
設定好登入、建立使用者請求,是否就意味著指令碼基本ok了呢?跑下結果看看吧
結果並沒有建立使用者成功,建立使用者的請求被重定向到了登入頁面,說明建立使用者的請求並沒有獲取到user session的(就是說到這個請求時,系統認為還沒有登入呢,雖然前面有發登入的請求)
伺服器必須通過user session 來判斷使用者是否已經登入,但指令碼中傳送建立使用者請求時,並未設定,所以需要加上(我這裡用的就是cookies,這個看實際情況跟開發們溝通吧,只能說cookies是比較常用的)。
新增乙個http cookie 管理器
再次執行指令碼,看結果
結果建立使用者的請求還是失敗了,返回錯誤資訊:」status」:415,」error」:」unsupported media type」
http請求415錯誤– 不支援的**型別(unsupported media type),一般是因為請求引數型別不匹配引起的
這是說傳送的請求有問題(但起碼不是登入的問題了。。)
我們需要設定request headers的content-type,新增乙個http資訊頭管理器,並新增乙個
content-type的值
這裡要注意的是http資訊頭管理器的作用域範圍(http資訊頭管理器會作用於同級或子級元件)
先試下新增http資訊頭管理器後,是這樣的:
執行指令碼看看結果
結果登入請求被重定向到了relogin頁面(登入失敗需要重新登入)
乙個簡單的方法,將http資訊頭管理器作為建立使用者請求的子元件,可以解決作用域的問題。
但這樣的問題在於http資訊頭管理器就只能作用於建立使用者這個請求了,而http資訊頭管理器通常是作為乙個公共元件存在的。
所以在這裡,就會用邏輯控制器來控制項的作用域
新增乙個簡單控制器,並將http資訊頭管理器、建立使用者請求都拉進控制器中,結果如下
再次執行指令碼,結果ok!
自動化應該可以自動進行結果判斷,這一般是通過斷言來實現的。
如何判斷建立使用者請求成功建立使用者?
首先要看請求返回結果,然後還要去資料庫看下,使用者是否已經新增進去了
當建立請求成功,請求響應碼應該是201;
返回資訊是這樣的(格式化後的json, jmeter中預設是文字形式的,可以在察看結果樹中選擇「json path tester」型別方便察看)
}
其中code, message是固定值,user的name, password, role與請求傳送的引數有關(id是後台自動生成,暫時不管)
新增乙個響應斷言
在response headers 中應該包括http/1.1 201(從察看結果樹的取樣器結果中可以看到)
響應資訊指的是這個
新增乙個響應斷言,在響應文字中查詢
(這裡是因為返回資料格式是固定的而且內容也不多,所以會用響應斷言進行判斷,但如果返回資料內容格式不固定或者複雜度較高時,使用響應斷言會變得相當麻煩,這時建議用beansheel 斷言會更方便一些)
當請求成功後,還需要到資料庫中檢查使用者資料是否已經匯入到對應的表中
在這裡,我需要使用jdbc postprocessor到資料庫中查詢使用者資料,然後用beanshell斷言來進行判斷資料是否正確
1)新增jdbc postprocessor
(注意:需要先配置好jdbc connection configuration)
2)新增beanshell斷言
3)試執行指令碼
再次新增乙個***: 斷言結果,最終結構如下,並執行指令碼
可以看到,察看結果樹中,請求是綠色ok的(證明斷言都通過了)
斷言結果中沒有出現錯誤,證明斷言驗證通過了
(注意,在上面的例子中,已經執行過好幾次這個指令碼了,但建立使用者是不能重複的,我是預先刪除了建立好的使用者的)至此,乙個介面指令碼已經初步完成了!。。
JMeter介面測試實戰 介面分析
假設測試乙個建立使用者介面,資訊如下 名稱說明 請求位址 user create 請求方法 post 許可權必須是admin角色的使用者登入,才能建立使用者 協議json 請求引數 name 不能為空,不能重複,長度4 20的字母或數字組合 role 不能為空,且必須為admin 或 normal ...
jmeter介面測試實戰 2018 09 19
我告訴自己 放開一切,好好工作,好好昇華自己 不要想太多,專注於做一件事情 1 檢視分析介面文件,整理介面案例。2 準備介面入引數據,可以儲存成csv檔案,供後續使用。3 http請求預設值 如需要 http cookie管理器 如需要 http請求 斷言 斷言結果檢視器 結果檢視樹 如上是最簡單的...
jmeter基於token的介面測試實戰
sessionid 是會話id,每個會話都需要有乙個sessionid token 是在需要賬號密碼進行登入的情況下,產生的 如果沒有介面文件,我們可以利用一些抓包工具去測試介面。綠色的對勾只代表這個請求有響應,不代表響應對不對。這個返回結果是不對的。要使用這個請求,必須先驗證身份後才能新增使用者,...