1、透過性驗證:
先按照介面文件傳入所有必填欄位並且欄位值在正確範圍內,預期返回正確結果
2、引數驗證(正向/逆向):
- 必填引數:針對每個必填引數,都設計一條引數為空的測試用例,介面錯誤資訊返回正確
- 非必填引數:設計一條用例所有非必填的引數都傳入值,非必填引數(型別,範圍)不正確,是否給出合理提示
- 引數值範圍:引數的值在/不在介面文件中規定引數值範圍內
- 長度邊界值:符合長度範圍內的,長度邊界值,超過長度邊界值的型別:符合引數型別的,不符合引數型別的(陣列,字串,正數,負數,整數,小數,小數點位數,中文,英文,特殊符號)
- 特殊值:空、null、"null"、""、" "、0、值的前後帶有空格、特殊符號等
- 介面文件中不存在的引數:介面傳入文件中不存在的引數不會異常
- 介面中傳入的引數被覆蓋:重複傳入相同的key,但value不同
- 傳入的引數格式不對:非json、少括號
- 引數個數:如果接受列表型別的引數,如果對列表大小沒有進行限定則傳入一個超大列表,如果對列表大小進行了規範則需要測試列表大小的邊界值;介面能否正確返回資料;
PS:後端程式碼中一般會有專門的程式碼來處理介面入參的校驗,可以透過檢視研發的程式碼來幫助提高介面引數校驗測試的效率,如java工程中的javax.validation.constraints。
介面入參size需要在[1 -3]內:
3、引數組合:
很多時候,介面中的引數有多個取值來滿足不同的業務邏輯,當這樣的引數>1時,就會出現引數組合的場景。例如引數A可傳[1,2,3],
引數B可傳["first","second","third"]
- 存在的組合:返回資訊正確
- 不存在的組合:錯誤資訊通俗易懂,錯誤碼正確
- 引數組合中引數的個數:若多個引數組合,是否允許任意多個引數的隨機組合(例如2個引數組合、3個引數組合、不傳)
4、介面前提條件驗證:
前提條件是否滿足:
- token(token失效/token格式不對/token型別不對、登入退出登入其他賬號)
- headers(例如Content-Type:application/json; charset=utf-8 、不填)
5、介面返回資訊和狀態碼等正確:
- 狀態碼正確
- 錯誤資訊沒有歧義(增:呼叫了一次新增介面之後再調一次新增介面,刪:呼叫了一次刪除介面之後再調一次刪除介面)
- 返回資料的結構正確
- 返回資料欄位值型別正確
6、資料操作正確性驗證:
如果介面是運算元據相關的,需要檢視資料的流轉和持久化是否正確完成,一般檢視MySQL和Redis是否有相應的CUD操作即可
7、併發能力:
也就是對介面做效能測試,驗證併發能力是否滿足預期
8、介面許可權/安全:
- 許可權控制:當藉口只有特定許可權的使用者才能操作時,驗證不同許可權的使用者的處理邏輯
- 冪等校驗:抓包工具攔截請求,修改敏感字斷值
- 事務/鎖校驗:同時操作同一條資料的修改操作,給出正確資訊
- 引數非明文:引數是否加密,加密規則是否易破解
- 密碼複雜度:密碼安全規則,密碼的複雜程度校驗
9、弱網驗證:
弱網下,介面是否可以正常響應