介面測試面試題
阿新 • • 發佈:2019-01-02
什麼是介面測試?
介面測試是測試系統元件間介面的一種測試。
介面測試的重點是檢查資料的交換,傳遞的正確性,以及介面間邏輯依賴關係。
提交介面測試的重要意義:實現開發期並行測試,減少頁面層測試的深度,縮短整個專案的測試周期。
我們測試的介面屬於哪一類?
伺服器介面(基於HTTP協議的介面)
大多數人常說的介面測試,通常是 B/S架構,由客戶端(瀏覽器)呼叫,或模擬客戶端(瀏覽器)呼叫伺服器提供的請求介面,由伺服器完成處理並返回一個應答的過程。
例如:Webservice介面,http介面,jms介面,hessian介面。
HTTP介面傳遞資料最常用的方式:
Get方式是從伺服器上獲取資料;在做資料查詢時,建議用Get方式;如:商品資訊介面、搜尋介面、部落格訪客介面等。
Post方式是向伺服器傳送資料 ;在做資料新增、修改或刪除時,建議用Post方式 ;如:微博圖片上傳圖片介面、登入註冊介面等。
介面請求流程
請見圖
介面請求引數分析:
*請求引數必填項、可選項
*輸入合法、非法引數
*請求引數邊界值
介面響應結果:
*對異常請求的處理
*請求頭的處理
*存在業務關聯
*涉及資料庫互動的
*結構
*節點值有效性
*列表結構排序
HTTP介面測試的型別
1.GET請求無引數
2.GET請求有引數
3.POST請求
介面測試用例編寫要點:
* 測試每個引數型別不合法的情況(型別不合法容易遺漏NULL型)
* 測試每個引數取值範圍不合法的情況
* 測試引數為空的情況
* 測試引數前後臺定義的一致性
* 測試每個引數的上下限(這裡容易出致命的BUG,如果程式處理不當,可能導致崩潰)
* 如果兩個請求有嚴格的先後順序,需要測試調轉順序的情況
介面測試的步驟:
1)請求介面
2)獲取返回值
3)斷言:判斷實際結果是否與預期相同
(測試的時候不可以開代理抓包軟體)
介面測試例項講解(PostMan的使用)
postman使用
(chrome中安裝jsonview)
(chrome中安裝postman)
一個藉口請求需要設定:請求URL,請求方法,請求頭,請求引數
說明:GET請求的引數在URL連結上,所以,GET請求的請求頭與請求引數如在介面文件中無特別宣告時,可以不填。
1.填寫請求、引數
2.Tests中新增斷言
3.Save as儲存
4.建立collection(聚集、集合)
5.左側點選collection-RUN
6.點選start test 右側可以看到執行結果
7.命令列執行集合(先儲存,後安裝newman)
1)GET無引數:
只需驗證狀態碼是否為200
或者返回值中的某個特定欄位的校驗errno: 0
以眾籌產品詳細列表為列
http://api.zhongchou.cn/deal/list?v=1
在chrome中檢視返回的樣例
先在postman中教如何進行介面測試(介面化工具的操作)
再用Python實現程式碼進行介面測試(類和物件的講解,安裝request包)
2)GET有引數:
驗證返回的狀態碼為200
驗證預設值count==20
驗證預設值start==0
驗證書的數量==20
驗證books中包含關鍵字“小王子”
以豆瓣開發者api為例
搜尋圖書:
介面地址:GET http://api.douban.com/v2/book/search
引數 意義 備註
q 查詢關鍵字 q和tag必填其一
tag 查詢的tag q和tag必填其一
start 取結果的offset 預設為0
count 取結果的條數 預設為20,最大為100
指令碼:
//驗證返回資料中包含關鍵字
tests["驗證response中包含 小王子"] = responseBody.has("小王子");
//驗證返回的狀態碼是否為200
tests["Status code is 200"] = responseCode.code === 200;
//驗證start=0&count=20
//驗證start=0
var jsonData = JSON.parse(responseBody);
var b_count = jsonData.count; //定義變數b_count
tests["start"] = jsonData.start === 20;
//驗證count=20
tests["count"] = jsonData.count === 20;
//驗證返回的圖書列表長度為預設值
tests["圖書列表長度為預設值20"] = jsonData.count === 20;
tests["圖書列表長度為預設值為b_count"] = jsonData.count === b_count;
GET的引數是個字串,POST的引數要封裝到HTTP請求頭裡,是字典
3)POST請求
驗證
以登入為例
http://api.zhongchou.cn/user/login?v=1'
引數:
'identity':'18311338905','password':'a000000'
requests包使用說明中文文件:
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
http://blog.csdn.net/shanzhizi/article/details/50903748