接口測試的基礎流程和用例設計
一、接口測試的基本信息
1、常用的兩種接口:webservice接口和http api接口
webService接口是走soap協議通過http傳輸,請求報文和返回報文都是xml格式的,可以用soupui、jmeter等工具進行測試。
http api接口是走http協議,通過路徑來區分調用的方法,請求報文都是key-value形式的,返回報文一般都是json串,有get和post等方法,可以用postman、jmeter等工具進行測試。
2、接口測試的必要性
可以發現很多頁面上操作發現不了的bug;
檢查系統的異常處理能力;
檢查系統的安全性、穩定性
3、接口測試流程
需求評審,熟悉業務和需求 → 開發提供接口文檔 → 編寫接口測試用例 → 用例評審 → 提測后開始測試 → 提交測試報告
4、接口規范文檔
接口文檔至少包括:
(1)接口說明
(2)調用url
(3)請求方法(get\post)
(4)請求參數、參數類型、請求參數說明
(5)返回參數說明
5、GET和POST請求
如果是get請求的話,直接在瀏覽器里輸入就行了,只要在瀏覽器里面直接能請求到的,都是get請求,如果是post的請求的話,就不行了,就得借助工具來發送。
GET請求和POST請求的區別:
(1)GET使用URL或Cookie傳參。而POST將數據放在BODY中。
(2)GET的URL會有長度上的限制,則POST的數據則可以非常大。
(3)POST比GET安全,因為數據在地址欄上不可見。
(4)一般get請求用來獲取數據,post請求用來發送數據。
其實上面這幾點,只有最后一點說的是比較靠譜的,第一點post請求也可以把數據放到url里面,get請求其實也沒長度限制,post請求看起來參數是隱式的,稍微安全那么一些些,但是那只是對於小白用戶來說的,就算post請求,你通過抓包也是可以抓到參數的。所以上面這些面試的時候你說出來就行了。
其實沒有什么太大的區別,最大的區別就是get請求只能通過url傳參
6、http狀態碼
(1)200 2開頭的都表示這個請求發送成功,最常見的就是200,就代表這個請求是ok的,服務器也返回了。
(2)300 3開頭的代表重定向,最常見的是302,把這個請求重定向到別的地方了。
(3)400 400代表客戶端發送的請求有語法錯誤,401代表訪問的頁面沒有授權,403表示沒有權限訪問這個頁面,404代表沒有這個頁面。
(4)500 5開頭的代表服務器有異常,500代表服務器內部異常,504代表服務器端超時,沒返回結果。
二、接口測試用例設計
1、通過性驗證;參數組合;異常驗證(必傳非必傳,參數類型,參數長度);業務邏輯驗證(如:登錄失敗5次,需要等待15分鍾再登錄)
2、接口安全:
(1)繞過驗證,比如說購買了一個商品,它的價格是300元,那我在提交訂單時候,我把這個商品的價格改成3元,后端有沒有做驗證,更狠點,我把錢改成-3,是不是我的余額還要增加?
(2)繞過身份授權,比如說修改商品信息接口,那必須得是賣家才能修改,那我傳一個普通用戶,能不能修改成功,我傳一個其他的賣家能不能修改成功
(3)參數是否加密,比如說我登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請求,就能獲取到你的信息了,加密規則是否容易破解。
(4)密碼安全規則,密碼的復雜程度校驗
3、接口測試模板
(1)項目 是哪個項目的
(2)模塊 這個接口是屬於哪個功能模塊的
(3)用例id
(4)接口名稱
(5)用例標題 用例是干嘛的
(6)請求方式 GET/POST
(7)請求url url地址
(8)請求參數
(9)前置條件 有依賴的時候,比如說要測登錄失敗3次的
(10)結果驗證 預期結果
(11)請求報文
(12)返回報文
(13)測試結果 通過/失敗
(14)測試人員
三、測試工具postman和jmeter
1、post請求,json入參

postman的json入參

jmeter的json入參
2、權限驗證

postman權限驗證
3、header

postman添加header
Jmeter選擇選擇HTTP信息頭管理器,添加header信息;

選擇HTTP信息頭管理器
4、cookie

postman添加cookie
Jmeter添加cookie,“線程組 → 添加 → 配置元件 → HTTP Cookie 管理器” 來添加cookie;

jmeter添加cookie
5、上傳文件

postman上傳文件

jmeter上傳文件
6、jmeter參數化、正則表達式和JDBC
(1)參數化三種方式:選項→函數助手對話框;測試計划中添加用戶變量;通過文件獲取變量值。

(2)正則表達式

(3)JDBC
添加配置元件“JDBC Connection Configuration”,添加sampler中的JDBC Request;

注:JDBC元件和請求里Variable Name參數必須相同。
