一瓷患、后臺服務(wù)的基本分層結(jié)構(gòu)
二、 測試前的準(zhǔn)備
1绳军、了解接口的業(yè)務(wù)功能
2、接口的入?yún)⒉胤瘛€數(shù)、類型充包、是否有默認(rèn)值
3副签、返回結(jié)果的結(jié)構(gòu)、類型误证、范圍
4继薛、了解有多少調(diào)用方修壕,明確調(diào)用方的需求
三愈捅、接口測試在測什么
定義:接口測試是測試系統(tǒng)組件間接口的一種測試。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點慈鸠。測試的重點是要檢查數(shù)據(jù)的交換蓝谨,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等青团。
3.1 接口層
1譬巫、接口可用性:比如服務(wù)是不是通的,請求服務(wù)會不會timeout督笆,或返回一些常見的錯誤碼芦昔,比如http404,500等
2娃肿、是否符合接口定義:比如請求參數(shù)可選咕缎,必選要求,返回結(jié)果參數(shù)集合是否正確料扰,格式是否正確
3凭豪、接口參數(shù)取值是否符合業(yè)務(wù)定義:比如支付金額不能 <=0
3.2 業(yè)務(wù)邏輯
1、業(yè)務(wù)流程
2晒杈、業(yè)務(wù)處理的原子性:比如一次轉(zhuǎn)賬涉及到金額變更和流水記錄嫂伞,當(dāng)其中一個失敗是,兩個都要回滾
3拯钻、業(yè)務(wù)處理的并發(fā)控制:比如給同一個配送員“同時”進行多個配送單的結(jié)算帖努,配送員的余額是一個共享資源
4、業(yè)務(wù)處理的防重控制:比如同一筆支付訂單不能支付兩次
3.3 數(shù)據(jù)存取
1粪般、數(shù)據(jù)庫連接是否正常:連接參數(shù)是否正確
2然磷、業(yè)務(wù)數(shù)據(jù)是否寫入到DB:比如有分庫分表邏輯的時候,是否寫入到正確的庫和表
3刊驴、讀取是否正常:是否能查詢到正確的業(yè)務(wù)數(shù)據(jù)
3.4 Data正確性
四姿搜、接口測試目標(biāo)
1寡润、覆蓋要求:接口層邏輯、業(yè)務(wù)邏輯舅柜、數(shù)據(jù)存取邏輯
2梭纹、正確性要求:響應(yīng)結(jié)果、持久化數(shù)據(jù)存取正確致份、并發(fā)控制正確性变抽、業(yè)務(wù)處理原子性、業(yè)務(wù)處理的防重正確性
五氮块、接口測試方法
5.1 接口導(dǎo)向的集成測試—基本版
1绍载、以接口的方式access服務(wù)
2、組合接口參數(shù)取值以滿足功能覆蓋要求
3滔蝉、校驗接口返回結(jié)果以驗證服務(wù)的正確性
例子??
5.2 接口導(dǎo)向的集成測試—進階版
1击儡、以接口的方式access服務(wù)
2、組合接口參數(shù)取值+外部參數(shù)(DB蝠引,依賴的服務(wù)返回)以滿足功能覆蓋要求
3阳谍、校驗接口返回結(jié)果+DB(或其他輸出形式)以驗證服務(wù)的正確性
5.3 接口導(dǎo)向的集成測試注意事項
1、服務(wù)的輸入?yún)?shù)不僅包括接口參數(shù)螃概,還包括一些接口不可見的參數(shù)矫夯,比如DB,比如依賴服務(wù)的返回
2吊洼、服務(wù)的處理接口不僅包含接口返回結(jié)果训貌,還包含一些接口不可見的處理結(jié)果,比如DB
六冒窍、接口測試工具
1递沪、HTTP接口測試工具:POSTMAN、SOAPUI超燃、curl命令
2区拳、Thrift測試、MQ測試:自定義接口client+測試框架(比如java的testng意乓、python的unittest)
七樱调、接口自動化
7.1 Java自動化測試框架——TestNG
1、使用注解來表示case
2届良、支持測試用例分組執(zhí)行
3笆凌、支持并發(fā)測試case編寫
4、提供了驗證函數(shù):Assertions
5士葫、生成測試結(jié)果報告
7.2 自動化執(zhí)行與報告
1乞而、整個測試項目目是基于maven構(gòu)建的,使用Maven-SureFire-Plugin插件來執(zhí)行case
2慢显、在maven構(gòu)建生命周期的test階段運行測試用例爪模,產(chǎn)生兩種不同形式的測試結(jié)果報告:純文本與.xml文件?
3欠啤、命令:mvn test