轉載自:http://www.51head.com/html/portal.php?mod=view&aid=631
接口測試是項目測試的一部分 ,它測試的主要對象是接口 ,是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與所測系統之間以及內部各系統之間的交互點。測試的重點是檢查數據交互、傳遞、和控制管理過程以及系統間的相互依賴關係等。
如何設計接口測試用例?首先,明確出發點,和所有的測試一樣 ,接口測試出發點是你要證明所測的程序是錯誤的。以這個出發點爲導向 ,你的設計行爲就會盡量朝這個方向,更易發現問題
其次,選擇好測試對象。對於一個系統做接口測試選擇好的測試對象是接口測試關鍵。一個系統有無數的接口 ,每個接口如果分別測試 ,那將是很痛苦的一件事情,而且任何一個內部接口的變動 ,都將導致我們用例的不可用。
可將這些最外層的接口分爲兩類:一類是數據進入系統的接口;一類是數據流出系統的接口。進入系統的接口實際是我們用例的執行調用的接口。可通過變化參數對這些接口進行調用 ,模擬外部的使用;而流出的接口則是我們用例真正該驗證的點。數據從哪裏流出,流出時的狀態如何 ,此時系統又是什麼狀態都是我們所應該驗證的。
然後,確認完整的測試對象的功能:確認外部接口提供給使用這些接口的外部用戶什麼樣的功能,外部用戶真正需要什麼樣的功能。此兩個功能一定要準確詳細,用例的設計要嚴格按照測試對象功能設計纔是正確的用例。
最後當出發點、對象、功能都確定了,就可以真正設計用例了。下面詳細介紹下如何去設計一個結構好、可讀性高、滲透性強的接口測試用例。
接口測試用例設計和測試用例設計一樣,用例設計的內容應該包括:主要測試功能點、測試環境、測試數據、執行操作以及預期結果。
1)接口測試環境分爲兩種:一種是程序內部的環境;一種是程序的所調用外部接口的環境。
2)接口測試測試數據分爲接口參數數據和用例執行所需系統數據。數據的設計、準備測試用例的數據上需要花費更多的心思。要通過好的測試數據使用例查找問題。接口參數數據需對每個參數根據測試接口的實際的功能進行分析,在符合業務邏輯的情況下進行邏輯組合排列 ,不要遺漏了某些邊界值和錯誤點的數據。每個用例執行所需系統數據和接口參數數據儘可能的採用不一樣的數據 ,使用例更容易發現問題。
3)測試功能點,如果一個接口功能複雜時推薦對接口用例進行結構劃分 ,這樣子用例具有更好的可讀性和維護性。接口劃分原則爲以接口提供的功能點的不同進行合適粒度的劃分。同一功能點的用例又可根據測試環境的不同、數據的不同進行用例的填充。
4)接口測試用例執行操作非常簡單,就是所測接口的調用。
5)預期結果驗證,這也是接口用例設計的很關鍵的一步 ,應該細而不冗餘。每個用例均需驗證 ,避免一個用例中重複做相同的驗證 ,提高測試用例的效率。
如何設計接口測試用例小例子:
簡單劃分可以按照2個基本組成要素進行劃分:1. 參數 2. 業務
以下爲最簡單的一種劃分用例的方法,可能涵蓋不全,但只爲說明一種劃分接口用例的方法方式以及需要考慮的測試用例的測試點
爲何要如此設計,是爲了更好的將用例分類爲程序規定型以及業務限制型,儘量的保證覆蓋,儘量細化到點的劃分形式來保證工作時間的預估和計劃。
所有的自動化接口的測試用例 都基本圍繞三部曲進行,傳數據,執行,校驗返回的數據和期望數據是否一致來構成每個簡單的測試用例。
有清晰的線路和清晰的思維,才能做好整體測試的掌控。
參數類(如果是http類接口,需要測試url參數的kv以及postdata參數的kv):
1、測試每個參數value類型非法的情況(普通非法(長度、類型、範圍)、安全類非法(延展開去又是大話題,不同類型的接口有不同的安全檢查方法))
2、測試每個參數value爲特殊值的情況(空字符串、null、nil)
3、測試每個參數key非法(普通非法(長度、類型、範圍)、安全類非法(延展開去又是大話題,不同類型的接口有不同的安全檢查方法))
4、測試冗餘參數key及value(例如key名錯誤、多個key順序錯誤、增加不存在的key、value含有多餘內容等)
5、測試缺少參數key及value
6、遍歷正常參數及value(含邊界)
7、遍歷接口代碼所有判斷、循環語句條件
環境類:
1、接口數據輸出環境異常,如目標數據庫崩潰或未啓動
2、接口數據輸入環境異常,如源數據庫崩潰或數據紊亂(類似上方參數類的測試了)
關聯類:
這種用例類似用接口的方式做功能流程測試,防止出現上一個用例的數據對下一個用例有影響卻沒有被獨立的接口測試覆蓋到。
校驗:
檢查接口輸出存儲結果符合預期
檢查接口返回結果符合預期
注意:並非上方所有情況都適用每種實際情況的,如果接口調用方自己做了過濾的話,有的用例其實是可以不測,或者優先級很低的,比如value、key爲空之類的情況,如果調用方保證不會爲空,那麼這些用例最多算安全測試,實際開發人員會把它們導致的bug的優先級降到最低的,我也建議測試人員可以降低其重要程度。