08.15 什麼是接口測試?接口測試的總結

總結起來就是 後臺寫的接口只是接口走通了,不代表邏輯也是通的

前端測試只是測試功能,接口也只是走了一部分邏輯,沒有完整的驗證接口的安全

接口測試不是目的,接口自動化才是最終結果

今天被打敗了,竟然有人問我接口測試怎麼測,本文轉載自(http://blog.csdn.net/jiary5201314/article/details/51429347)

本文主要分為兩個部分:

第一部分:主要從問題出發,引入接口測試的相關內容並與前端測試進行簡單對比,總結兩者之前的區別與聯繫。但該部分只交代了怎麼做和如何做?並沒有解釋為什麼要做?

第二部分:主要介紹為什麼要做接口測試,並簡單總結接口持續集成和接口質量評估相關內容。

第一部分:

首先,在做接口測試的過程中,經常有後端開發會問:

  1. 後端接口都測試什麼?怎麼測的?
  2. 後端接口測試一遍 ,前端也測試一遍,是不是重複測試了?

於是,為了向開發解釋上述問題,普及基本的測試常識,特意梳理了接口測試的相關內容以及其與前端測試的區別,使開發團隊與測試團隊在測試這件上達成基本的共識,提高團隊協作效率,從而更好的保證產品質量。

然後,我們試著回答上面的問題:

問題1.1、後端接口都測試什麼?

--回答這個問題,我們可以從接口測試活動內容的角度下手,看一下面這張圖,基本反應了當前我們項目後端接口測試的主要內容:

什麼是接口測試?接口測試的總結

問題1.2、我們怎麼做接口測試?

--由於我們項目前後端調用主要是基於http協議的接口,所以測試接口時主要是通過工具或代碼模擬http請求的發送與接收。工具有很多如:postman、jmeter、soupUI、Java+httpclient、robotframework+httplibrary等。

問題2、後端接口測試一遍 ,前端也測試一遍,是不是重複測試了?

--回答這個問題,我們可以直接對比接口測試和app端測試活動的內容,如下圖為app測試時需要覆蓋或考慮內容:

什麼是接口測試?接口測試的總結

從上面這兩張圖對比可以看出,兩個測試活動中相同的部分有功能測試、邊界分析測試和性能測試,其它部分由於各自特性或關注點不同需要進行特殊的測試,在此不做討論。接下來我們針對以上三部分相同的內容再進行分析:

1、基本功能測試:

由於是針對基本業務功能進行測試,所以這部分是兩種測試重合度最高的一塊,開發同學通常所指的也主要是這部分的內容。

2、邊界分析測試:

在基本功能測試的基礎上考慮輸入輸出的邊界條件,這部分內容也會有重複的部分(比如業務規則的邊界)。但是,前端的輸入輸出很多時候都是提供固守的值讓用戶選擇(如下拉框),在這種情況下測試的邊界範圍就非常有限,但接口測試就不存在這方面的限制,相對來說接口可以覆蓋的範圍更廣,同樣的,接口出現問題的概率也更高。

3、性能測試:

這個比較容易區分,雖然都需要做性能測試,但關注點確大不相同。App端性能主要關注與手機相關的特性,如手機cpu、內存、流量、fps等。而接口性能主要關注接口響應時間、併發、服務端資源的使用情況等。兩種測試時的策略和方法都有很大區別,所以這部分內容是需要分開單獨進行測試的,理論上來說這也是不同的部分。

綜論:

1、接口測試和app測試的活動有部分重複的內容,主要集中在業務功能測試方面。除此之外,針對各自特性的測試都不一樣,需要分別進行有針對性的測試,才能確保整個產品的質量。

2、接口測試可以關注於服務器邏輯驗證,而UI測試可以關注於頁面展示邏輯及界面前端與服務器集成驗證

第二部分:

1、什麼是接口測試?

接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。

2、為什麼要做接口測試?

a) 如今的系統複雜度不斷上升,傳統的測試方法成本急劇增加且測試效率大幅下降,接口測試可以提供這種情況下的解決方案。

b) 接口測試相對容易實現自動化持續集成,且相對UI自動化也比較穩定,可以減少人工迴歸測試人力成本與時間,縮短測試周期,支持後端快速發版需求。接口持續集成是為什麼能低成本高收益的根源。

c) 現在很多系統前後端架構是分離的,從安全層面來說:

1、只依賴前端進行限制已經完全不能滿足系統的安全要求(繞過前面實在太容易), 需要後端同樣進行控制,在這種情況下就需要從接口層面進行驗證。

2、前後端傳輸、日誌打印等信息是否加密傳輸也是需要驗證的,特別是涉及到用戶的隱私信息,如身份證,銀行卡等。

3、接口測試持續集成:

對接口測試而言,持續集成自動化是核心內容,通過持自動化的手段我們才能做到低成本高收益。目前我們已經實現了接口自動化,主要應用於迴歸階段,後續還需要加強自動化的程度,包括但不限於下面的內容:

a) 流程方面:在迴歸階段加強接口異常場景的覆蓋度,並逐步向系統測試,冒煙測試階段延伸,最終達到全流程自動化。

b) 結果展示:更加豐富的結果展示、趨勢分析,質量統計和分析等

c) 問題定位:報錯信息、日誌更精準,方便問題復現與定位。

d) 結果校驗:加強自動化校驗能力,如數據庫信息校驗。

e) 代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探,提高代碼覆蓋率。

f) 性能需求:完善性能測試體系,通過自動化的手段監控接口性能指標是否正常。

4、接口測試質量評估標準:

a) 業務功能覆蓋是否完整

b) 業務規則覆蓋是否完整

c) 參數驗證是否達到要求(邊界、業務規則)

d) 接口異常場景覆蓋是否完整

e) 接口覆蓋率是否達到要求

f) 代碼覆蓋率是否達到要求

g) 性能指標是否滿足要求

h) 安全指標是否滿足要求

8.接口測試都要掌握哪些知識?

①瞭解系統及內部各個組件之間的業務邏輯交互;

②瞭解接口的I/O(input/output:輸入輸出);

③瞭解協議的基本內容,包括:通信原理、三次握手、常用的協議類型、報文構成、數據傳輸方式、常見的狀態碼、URL構成等;

④常用的接口測試工具,比如:jmeter、loadrunner、postman、soapUI等;

⑤數據庫基礎操作命令(檢查數據入庫、提取測試數據等);

⑥常見的字符類型,比如:char、varchar、text、int、float、datatime、string等;

如何學這些技能?

①系統間業務交互邏輯:通過需求文檔、流程圖、思維導圖、溝通等很多渠道和方式;

②協議:推薦《圖解http》這本書,內容生動,相對算是入門級的書籍,其他的還有《圖解tcp、IP》等;

③接口測試工具:百度這些工具,然後你會發現,好多的教學博客、相關問題解決方案、以及一些基於工具的書籍,當然,選擇合適的書很重要;

④數據庫操作命令:學習網站(W3C、菜鳥教程)、教學博客,以及一些數據庫相關書籍,入門級推薦:《mysql必知必會》、《oracle PL/SQL必知必會》等

⑤字符類型:還是百度,有句話這麼說:內事不決問百度,外事不決問Google。。。

如何獲取接口相關信息?

一般的企業,都會由開發或者對應的技術負責人員編寫接口文檔,裡面會註明接口相關的地址、參數類型、方法、輸入、輸出等信息,如果沒有,想辦法獲取。。。

接口文檔八要素:

封面:封面最好是本公司規定的封面,有logo,內容標題,版本號,公司名稱,文檔產生日期;

修訂歷史:表格形式較好些,包括:版本、修訂說明、修訂日期、修訂人、審核時間審核人等;

接口信息:接口調用方式,常用的GET/POST方式,接口地址;

功能描述:簡潔清晰的描述接口功能,比如:接口獲取的信息不包括哪些;

接口參數說明:每個參數都要和實際中調用的一樣,包括大小寫;參數的含義言簡意賅的說明,格式,是string 還是int 還是long等格式;

說明部分,說明參數值是需要哪裡提供,並詳細說明參數怎麼生成的,例如時間戳,是哪個時間段的,參數是否必填,一些參數是必須要有的,有些是可選參數等;

返回值說明:

①最好有一個模板返回值,並說明每個返回參數的意義;

②提供一個真實的調用接口,真實的返回值;

調用限制,安全方面:

加密方式,或者自己公司一個特殊的加密過程,只要雙方採用一致的加密算法就可以調用接口,保證了接口調用的安全性,比如常見的md5;

文檔維護:文檔在維護的時候,如有修改一定要寫上修改日期,修改人,對大的修改要有版本號變更;

什麼是接口測試?接口測試的總結


分享到:


相關文章: