接口測試
檢測外部系統(tǒng)于系統(tǒng)之間以及系統(tǒng)內(nèi)部各個子系統(tǒng)之間的交互點。
重點測試的是數(shù)據(jù)的交換咬崔、傳遞和控制管理過程税稼,以及系統(tǒng)間的相互邏輯依賴關(guān)系等等。
接口測試的分類
- 系統(tǒng)與系統(tǒng)之間的調(diào)用(如分享時,微信會提供接口給公眾號)
- 上層服務(wù)對下層服務(wù)的調(diào)用
- 服務(wù)之間的調(diào)用(如添加一條數(shù)據(jù)時娶聘,會先調(diào)用數(shù)據(jù)查詢的服務(wù)闻镶,查詢改數(shù)據(jù)是否重復(fù)數(shù)據(jù))
不管是哪種類型,被測接口即為服務(wù)方丸升,測試手段為客戶方铆农,接口測試的目的:通過一系列的測試手段,去驗證滿足其生命提供的功能狡耻。
接口測試的原理
通過測試程序模擬客戶端向服務(wù)器發(fā)送請求報文墩剖,服務(wù)器接收請求報文后對相應(yīng)的報文做出處理然后再把應(yīng)答報文發(fā)送給客戶端。
request-->response
接口測試的流程
類似于功能測試夷狰。
需求討論-->評審需求-->確定需求-->產(chǎn)出接口定義-->根據(jù)需求文檔及接口定義設(shè)計測試用例-->評審用例-->執(zhí)行測試
接口測試的測試用例岭皂,主要從業(yè)務(wù)場景,功能以及異常測試幾個方面考慮
接口測試的適用范圍
一般用于多個系統(tǒng)間的交互開發(fā)沼头,或者擁有多個子系統(tǒng)的應(yīng)用系統(tǒng)開發(fā)的測試爷绘。
接口測試適用于為其他系統(tǒng)提供服務(wù)的底層框架系統(tǒng)和中心服務(wù)系統(tǒng)。
主要測試這些對外部提供的接口的正確性和穩(wěn)定性进倍。
也同樣適用于上層系統(tǒng)中服務(wù)層接口土至,測試難度隨著層級而上升,越往上難度越大猾昆。
如何設(shè)計接口測試的設(shè)計用例
- 明確出發(fā)點--測試的目的是為了讓找出軟件的缺口陶因,修復(fù)并使之更加完善。
以找出軟件的誤漏為出發(fā)點 - 明確測試點--選擇好的測試對象垂蜗。
系統(tǒng)內(nèi)部層級較為復(fù)雜楷扬,任何一個接口的變動都將導(dǎo)致用例失效。
可將這些最外層的接口根據(jù)數(shù)據(jù)的流向分為進(jìn)入和流出兩類贴见。
* 進(jìn)入系統(tǒng)的接口實際上是我們用例的執(zhí)行調(diào)用的接口烘苹,可以通過參數(shù)對這些接口進(jìn)行調(diào)用,模擬外部的使用蝇刀。
* 流出的接口是我們用例真正該驗證的點螟加。數(shù)據(jù)從哪里流出,流出的狀態(tài)如何吞琐,此時系統(tǒng)的狀態(tài)都是作為測試目的所要著重關(guān)注的部分捆探。
- 確認(rèn)完整的測試對象的功能--確認(rèn)外部接口提供給使用這些接口的外部用戶什么樣的功能,外部用戶真正需要的是什么樣的功能予以區(qū)別站粟。
(接口)測試用例包括的內(nèi)容
功能點黍图,測試環(huán)境,測試數(shù)據(jù)奴烙,執(zhí)行操作以及預(yù)期結(jié)果
-
功能點:
如果一個接口功能過于復(fù)雜時助被,可以對接口用例進(jìn)行結(jié)構(gòu)劃分(如根據(jù)層次剖张,平臺,功能點等等)揩环,這樣用例具有更好的可讀性
接口劃分原則為:以接口提供的功能點的不同進(jìn)行合適粒度的劃分搔弄,同一功能點的用例又可根據(jù)測試環(huán)境的不同,數(shù)據(jù)的不同進(jìn)行用例的填充 -
接口測試用例的環(huán)境:
程序內(nèi)部環(huán)境和程序所調(diào)用的外部接口的環(huán)境丰滑。 -
測試數(shù)據(jù):
分為兩部分:接口參數(shù)數(shù)據(jù)和用例執(zhí)行所需系統(tǒng)數(shù)據(jù)顾犹。數(shù)據(jù)的設(shè)計、準(zhǔn)備測試用例的數(shù)據(jù)不可馬虎褒墨。通過好的測試數(shù)據(jù)查找問題炫刷,能極大的提高工作效率。接口參數(shù)數(shù)據(jù)需要對每個參數(shù)根據(jù)測試接口的實際功能進(jìn)行分析郁妈,在符合業(yè)務(wù)邏輯的情況下進(jìn)行邏輯組合排列浑玛,不要遺漏某些邊界值和錯誤點的數(shù)據(jù),這樣用例更容易發(fā)現(xiàn)問題噩咪。 -
執(zhí)行操作:
即對所測接口的調(diào)用顾彰。 -
預(yù)期結(jié)果:
根據(jù)需求進(jìn)行驗證,是衡量軟件是否達(dá)到預(yù)期的標(biāo)準(zhǔn)剧腻。應(yīng)該著重細(xì)致拘央,每個用例均需驗證,應(yīng)該避免一個用例重復(fù)做相同的驗證,提高測試用例的效率艰毒。
具體參考
輸入?yún)?shù)測試:
針對輸入?yún)?shù)進(jìn)行的測試含思,也可以說是假定接口參數(shù)的不正確性進(jìn)行的測試,確保接口對任意類型的輸入都做了相應(yīng)的處理:輸入?yún)?shù)合法(不合法)贡必,輸入?yún)?shù)為空,為null,輸入?yún)?shù)超長等等栈源;功能測試:
接口是否滿足了所提供的功能,相當(dāng)于正常情況測試竖般,如果一個接口功能復(fù)雜時推薦對接口用例進(jìn)行結(jié)構(gòu)劃分甚垦,這樣子用例覺有更好的可讀性和可維護(hù)性;邏輯測試:
邏輯測試嚴(yán)格講應(yīng)為單元測試涣雕,單元測試應(yīng)保持內(nèi)部邏輯的正確性艰亮,可單元測試和接口測試的界限并不是那么清楚,所以我們也可以從給出的設(shè)計文檔中考慮內(nèi)部邏輯錯誤的分之情況和異常挣郭;異常情況測試:
接口實現(xiàn)是否對清楚情況都進(jìn)行了處理迄埃,接口輸入?yún)?shù)雖然合法,但是在接口實現(xiàn)中兑障,也會出現(xiàn)異常侄非,因為內(nèi)部的異常不一定是輸入的數(shù)據(jù)造成的蕉汪,而有可能是其他邏輯造成的,程序需要對任何異常都進(jìn)行處理逞怨。 題外
關(guān)于單元測試者疤,接口測試和白盒測試單元測試:
針對具體代碼邏輯進(jìn)行測試,主要測試被測代碼的一個很小叠赦,很明確的功能是否正確宛渐。即單元模塊的邏輯是否正確,對業(yè)務(wù)關(guān)注不大眯搭;接口測試:
針對程序內(nèi)部的或者外部的接口進(jìn)行的測試一個接口方法可能包含多個單元模塊窥翩,并且,一個接口會有自己特定的業(yè)務(wù)定義:做接口測試更多的從業(yè)務(wù)的角度去考慮如何測試鳞仙;白盒測試:
單元測試和接口測試都屬于白盒測試的一個階段