接口測試用例常見設計方法
一, 接口常遇見的bug和問題
(1) 傳入不合規參數,導致程序crash
(2) 數據類型溢出,導致數據讀出和寫入不一致
(3) 因對象權限未進行校驗,可以訪問其他用戶敏感信息
(4) 狀態處理不當,導致邏輯出現錯亂
(5) 邏輯校驗不完善,可以利用漏洞獲取非法利益
二, 測試用例設計
輸入- 接口處理邏輯 – 輸出-
一個接口通常有輸入,輸出,有時候輸出也是沒有的,
用例設計考慮,輸入, 輸出
(1) 針對輸入,可以按照參數類型設計
(2) 針對處理,可以按照邏輯進行用例設計
(3) 針對輸出,可根據結果進行分析設計
詳情:
1.針對輸入設計
數值型:
1.等價類:取值范圍內,取值范圍外
2.邊界法:取值范圍邊界:邊界最大,最小;邊界最小-1,最大+1等
3.特殊值:0,負值等
4.遍歷法:取值范圍的所有數值遍歷
舉例:一個輸入值的范圍是int 1-12,需要考慮范圍內的值;邊界值0,1,12,13;類型的特殊值-1,0;還有int的最小,最大邊界值也需要考慮; 如果1-12有指定含義代表,還需要遍歷所有數值
風險:特殊值,邊界值處理不當,程序退出,數據溢出,返回錯誤信息等
Int: 數據類型邊界:-2147483648 ,2147483648。 (Integer.MAX_VALUE)
字符串型:
1.字符串長度:
等價法:取值范圍內,取值范圍外
邊界法:規定范圍邊界,類型邊界
特殊值:0,即空字符
字符串內容:
特定類型:英文,中文,大小寫等
特殊字符:>,<*!@#$%等
敏感字符:“flg”“TMD""等
舉例:接口的功能字符串長度為3位,測試長度:3位,比3多,比3少;
String的最大長度;特殊的空字符;字符串內容是數字,非數字等;特殊字符;是否需要過濾敏感字符;
風險:傳入其他類型,超長字符,敏感字等,程序是否異常退出,是否顯示,存儲有問題,時候特殊處理敏感字
數組或鏈表類型:
1.成員個數:
等價法:取值范圍內,取值范圍外
邊界法:規定范圍邊界,個數邊界值
特殊值:0等
2.成員內容:
等價類:合法和非法成員
重復法:重復的成員
舉例:接口接受的數組取值長度一般是5個,取值1-5個內,范圍外6個
邊界值,請求允許的最大,最小值;特殊值,0個;內容的合法,不合法;重復的內容是否可以
風險:0個是是否異常退出,重復的內容是否允許
2.針對邏輯設計
1.約束條件分析:
數值限制:分數限制,金幣限制,等級限制等(滿足條件才可以執行)
狀態限制:需要先登錄等(同步信息等)
關系限制:綁定的關系,好友關系等
權限限制:管理員等
風險:約束條件判斷不足,用戶可以特殊手段獲利等
操作對象分析:
操作通常是針對對象的,針對合法和不合法對象進行操作,后台處理會如何
風險:用戶可以非權限的操作
狀態轉換分析:
被測邏輯抽象成狀態機,各個狀態之間根據各功能邏輯切換,如果打亂這個順序,跳轉操作,就會有邏輯問題,驗證正確性
風險:通過特殊手段達到原本不能的狀態,從而獲利等
時序分析:
在一些復雜的活動中,一個活動是由一系列動作按照指定順序進行的,只有按照順序依次執行完成,才能得到預期結果。正常的流程里,動作依次按序執行,不會打亂,但在接口測試時,需要考慮如果不按時序執行,是否會有問題。
例如:客戶端數據同步是由客戶端觸發執行的,期間用戶無法干預。功能測試的時候見到的就是,是否能正常同步,進一步拆解,同步流程就是一些列動作,例如:獲取用戶信息,發起請求,后台返回登錄信息,本地在上傳本地數據,后台校驗數據,生成diff和對應新增號,返回增量數據及編號,本地在上報沖突,后台處理沖突,返回客戶端同步完成的信息。
接口需要依次調用才可以同步完成,但是接口測試的時候就可以測試打亂這個順序的執行情況,是否異常等。
風險:非順序執行后,數據出現異常,可能還有其他程序問題
3.針對輸出設計:
針對輸出結果:正確結果可能只有一個,但是錯誤的情況很多。可以根據返回結果列表或者類型,進行用例設計。
風險:
(1)錯誤前端處理不足,導致前端異常;
(2)錯誤提示處理不當,用戶看到晦澀的程序碼;
(3)錯誤提示不當,用戶不知道哪出現問題,如何解決
接口超時:
接口正常情況下是有返回的,如果接受不到返回呢?接口超時處理也是需要考慮的部分,如果處理不當,造成整個流程阻塞,超時后又接收到返回值,導致邏輯錯亂。
4.其他測試合計:
1.已廢棄接口測試:
廢棄的接口,存在沒有及時刪除的情況,需要做好相關廢棄接口的檢查,以免出現問題。
接口設計合理性分析:
以下幾個方面分析:
(1)接口字段是否冗余
(2)接口是否冗余
(3)接口是否返回了調用方期望得到的信息
(4)接口定義是否可滿足所有的調用需求
(5)接口定義調用是否方便
5.安全性測試:
針對非專業的安全測試人員,更多的關注業務方面的安全,可以進行如下考慮:
(1)接口是否使用了https協議
(2)接口的請求數據是否加密處理
(3)保存到庫的關鍵信息是否做過加密處理
(4)是否對一些常用的工具請求做了限制
(5)接口是否對同一IP的訪問次數做了限制
三、測試項目
重復提交,並發測試,分布式測試(負載均衡測試),環境異常測試,大數據量測試
性能測試關注點:
響應時間,吞吐量,並發數,服務器性能:(CPU,內容,IO,網絡)