接口測試面試題


什么是接口測試?
 
接口測試是測試系統組件間接口的一種測試。
接口測試的重點是檢查數據的交換,傳遞的正確性,以及接口間邏輯依賴關系。
提交接口測試的重要意義:實現開發期並行測試,減少頁面層測試的深度,縮短整個項目的測試周期。
 
我們測試的接口屬於哪一類?
 
服務器接口(基於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


免責聲明!

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



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