【軟件測試】接口測試

一、接口定義:

模塊與模塊之間的連接。用于數(shù)據(jù)的傳輸與接收。

二、接口分類:

內(nèi)外來分:

系統(tǒng)對外的接口:B需要A的數(shù)據(jù),A提供一個寫好的方法來獲取數(shù)據(jù),B引用這個接口就能使用A寫好的方法,獲取數(shù)據(jù)。

程序內(nèi)部的接口:方法與方法之間、模塊與模塊之間的交互。

原理來分:

? ? 1、webservice接口:soap協(xié)議,通過http傳輸,請求報文和返回報文都是xml格式。測試時需通過工具才能調(diào)用。

? ? 2、http api接口:http協(xié)議,通過路徑區(qū)分調(diào)用的方法,請求報文都是key-value形式,返回報文一般都是json串,最常用的是GET、POST方法。

三、接口測試

對接口協(xié)議的一種測試。協(xié)議指的是,為了讓這個接口實現(xiàn)某種需要的功能而設(shè)計的一種要求。測試系統(tǒng)組件間接口的一種測試,主要用于檢測外部系統(tǒng)與系統(tǒng)之間任意內(nèi)部各個子系統(tǒng)之間的交互點。

接口測試作為集成測試的一部分,通過直接控制API來判斷系統(tǒng)的功能性,可靠性,性能與安全性。API測試是沒有界面的,執(zhí)行在通訊層。API 測試在自動化測試中有著重要的地位,因為API一般是應(yīng)用邏輯的主要接口,而GUI測試在敏捷開發(fā)和DevOps的快速迭代和頻繁變更中很難維護。

四、接口測試的必要性:

1、提高測試效率;

2、更早發(fā)現(xiàn)問題;

3、站在調(diào)用接口用戶的角度對接口進行全面持續(xù)的檢測;

4、自動化并且持續(xù)集成的;

五、接口測試測試流程

需求討論、需求評審、場景設(shè)計、編寫用例、準備數(shù)據(jù)、執(zhí)行測試

六、接口測試標準

功能測試:功能實現(xiàn)、符合接口文檔要求(如:關(guān)鍵字定義)

邏輯業(yè)務(wù):邏輯業(yè)務(wù)依賴關(guān)系(如:非登錄狀態(tài)下,提交訂單成功。通過修改Cookies測試)

異常測試:

? ? 1、參數(shù)異常:關(guān)鍵字參數(shù)、參數(shù)為空、參數(shù)多少、參數(shù)錯誤。

? ? 2、數(shù)據(jù)異常:關(guān)鍵字數(shù)據(jù)、數(shù)據(jù)長度、數(shù)據(jù)為空、數(shù)據(jù)錯誤。

七、接口測試設(shè)計測試用例

原理:模擬客戶端向服務(wù)器發(fā)送請求報文,服務(wù)器接收請求報文并進行處理,然后向客戶端返回應(yīng)答,客戶端接收應(yīng)答的過程。

重點:接口功能符合用戶需求。參數(shù)輸入和輸出,數(shù)據(jù)庫修改,并發(fā),冪等。

核心:持續(xù)集成是接口測試的核心。

優(yōu)點:提高測試效率,提升用戶體驗,降低研發(fā)成本。

流程:拿到Http請求 -> 獲取請求方法 -> 添加請求頭、請求體 -> 發(fā)送請求 -> 接收響應(yīng) -> 查看響應(yīng)結(jié)果

接口測試測試用例示意

1、輸入:

必填項校驗

參數(shù)默認值校驗

參數(shù)長度校驗

參數(shù)值的有效性校驗

參數(shù)組合校驗

遍歷枚舉值參數(shù)

根據(jù)生成規(guī)則設(shè)計用例

2、接口邏輯:

分支覆蓋 -> 路徑覆蓋 -> 場景覆蓋,結(jié)合實際用戶場景。

3、輸出:

正常輸出、異常輸出

4、結(jié)合實際業(yè)務(wù)場景,去掉冗余的用例。

5、如果業(yè)務(wù)流程涉及到狀態(tài)轉(zhuǎn)換,需要單獨設(shè)計測試用例

6、正交實驗法

7、異常數(shù)據(jù)處理流程

八、接口測試需要掌握的知識

了解系統(tǒng)和內(nèi)部各個組件之間的業(yè)務(wù)邏輯交互

了解接口的輸入和輸出

了解協(xié)議的基本內(nèi)容:通信原理、三次握手、常用協(xié)議類型、報文構(gòu)成、數(shù)據(jù)傳輸方式、狀態(tài)碼、URL構(gòu)成

了解接口測試工具:Jmeter、Loadrunner、Postman、soapUI

了解數(shù)據(jù)庫基基本操作 ,如:檢查數(shù)據(jù)入庫、提取測試數(shù)據(jù)等

了解常見的字符類型,比如:char、varchar、text、datatime等

九、其他

1、Http狀態(tài)碼:

200:請求發(fā)送成功

300:重定向。302:臨時性重定向(訪問一個Url時,被重定向到另一個url上,常用于頁面跳轉(zhuǎn)。)301:永久重定向。

400:客戶端問題。401:表示發(fā)送的請求需要有通過 HTTP 認證的認證信息;403:表示對請求資源的訪問被服務(wù)器拒絕;404:沒有這個頁面

500:服務(wù)端問題。500:服務(wù)器內(nèi)部異常,503:由于臨時的服務(wù)器維護或者過載,服務(wù)器當前無法處理請求。504:服務(wù)端超時。

常見:https://www.cnblogs.com/purewhite/p/10871851.html

2、Cookie和Session區(qū)別:

Cookie:客戶端,不安全,單個Cookie保存的數(shù)據(jù)不能超過4k,很多瀏覽器限制一個站點保存20Cookies。

Session:服務(wù)器,安全,訪問量多時,占用服務(wù)端性能。

3、GET和POST區(qū)別:

GET:獲取數(shù)據(jù),明文傳輸,參數(shù)跟在URL后面,不安全。提交參數(shù)有字符限制,可以被當作書簽保存。

POST:提交數(shù)據(jù),參數(shù)放在表單,安全。不存在字符限制。

4、App端、接口測試區(qū)別:

App端性能測試:手機cpu、內(nèi)存、流量、fps

接口性能測試:接口響應(yīng)時間、并發(fā)、服務(wù)端資源使用情況。

5、HTTP請求結(jié)構(gòu):


Http請求報文
Http響應(yīng)報文

常見的響應(yīng)頭字段含義:

Allow:服務(wù)器支持哪些請求方法(如GET、POST等)。

Content-Encoding:文檔的編碼(Encode)方法。

Content-Length:表示內(nèi)容長度。

Content- Type:表示后面的文檔屬于什么MIME類型。HttpServletResponse提供了一個專用的方法setContentType。

Date:當前的GMT時間,例如,Date:Mon,31Dec200104:25:57GMT。

Expires:告訴瀏覽器把回送的資源緩存多長時間,-1或0則是不緩存。

Last-Modified:文檔的最后改動時間。

Location:這個頭配合302狀態(tài)碼使用,用于重定向接收者到一個新URI地址。

Refresh:告訴瀏覽器隔多久刷新一次,以秒計。

Server:服務(wù)器通過這個頭告訴瀏覽器服務(wù)器的類型。

Set-Cookie:設(shè)置和頁面關(guān)聯(lián)的Cookie。

Transfer-Encoding:告訴瀏覽器數(shù)據(jù)的傳送格式。

WWW-Authenticate:實現(xiàn)登錄驗證。

HttpServletResponse還提供了許多設(shè)置

setContentType:設(shè)置Content-Type頭。大多數(shù)Servlet都要用到這個方法。

setContentLength:設(shè)置Content-Length頭。對于支持持久HTTP連接的瀏覽器來說,這個函數(shù)是很有用的。

addCookie:設(shè)置一個Cookie(Servlet API中沒有setCookie方法,因為應(yīng)答往往包含多個Set-Cookie頭)。

常見通用頭含義:

Cache-Control:指定請求和響應(yīng)遵循的緩存機制。在請求消息或響應(yīng)消息中設(shè)置 Cache-Control并不會修改另一個消息處理過程中的緩存處理過程。請求時的緩存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached,響應(yīng)消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。各個消息中的指令含義如下:

Public指示響應(yīng)可被任何緩存區(qū)緩存。 Private指示對于單個用戶的整個或部分響應(yīng)消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當用戶的部分響應(yīng)消息,此響應(yīng)消息對于其他用戶的請求無效。 no-cache指示請求或響應(yīng)消息不能緩存 no-store用于防止重要的信息被無意的發(fā)布。在請求消息中發(fā)送將使得請求和響應(yīng)消息都不使用緩存。 max-age指示客戶機可以接收生存期不大于指定時間(以秒為單位)的響應(yīng)。 min-fresh指示客戶機可以接收響應(yīng)時間小于當前時間加上指定時間的響應(yīng)。 max-stale指示客戶機可以接收超出超時期間的響應(yīng)消息。如果指定max-stale消息的值,那么客戶機可以接收超出超時期指定值之內(nèi)的響應(yīng)消息。

Date:表示消息發(fā)送的時間,時間的描述格式由rfc822定義。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的時間表示世界標準時,換算成本地時間,需要知道用戶所在的時區(qū)。

Pragma:用來包含實現(xiàn)特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1協(xié)議中,它的含義和Cache-Control:no-cache相同。

(2)實體頭域

請求消息和響應(yīng)消息都可以包含實體信息,實體信息一般由實體頭域和實體組成。實體頭域包含關(guān)于實體的原信息,實體頭包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。extension-header允許客戶端定義新的實體頭,但是這些域可能無法未接受方識別。實體可以是一個經(jīng)過編碼的字節(jié)流,它的編碼方式由Content-Encoding或Content-Type定義,它的長度由Content-Length或Content-Range定義。

常見實體頭含義:

Content-Encoding: 服務(wù)器通過這個頭告訴瀏覽器數(shù)據(jù)的壓縮格式。

Content-Length: 服務(wù)器通過這個頭告訴瀏覽器回送數(shù)據(jù)的長度。

Content-Disposition:告訴瀏覽器以下載方式打開數(shù)據(jù)。

Content-Type:服務(wù)器通過這個頭告訴瀏覽器回送數(shù)據(jù)的類型。Content-Type實體頭用于向接收方指示實體的介質(zhì)類型,指定HEAD方法送到接收方的實體介質(zhì)類型,或GET方法發(fā)送的請求介質(zhì)類型。

Content-Range:用于指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在服務(wù)器向客戶返回一個部分響應(yīng),它必須描述響應(yīng)覆蓋的范圍和整個實體長度。一般格式:

Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth

例如,傳送頭500個字節(jié)次字段的形式:Content-Range:bytes0- 499/1234,如果一個http消息包含此節(jié)(例如,對范圍請求的響應(yīng)或?qū)σ幌盗蟹秶闹丿B請求),Content-Range表示傳送的范圍, Content-Length表示實際傳送的字節(jié)數(shù)。

Last-Modified:指定服務(wù)器上保存內(nèi)容的最后修訂時間。

ETag:緩存相關(guān)的頭

Expires:告訴瀏覽器把回送的資源緩存多長時間 -1或0則是不緩存

其中三種禁止瀏覽器緩存的頭字段:

Expires:-1或0

Cache-Control:no-cache

Pragma:no-cache


注:

? ? 1、JSON:通用的數(shù)據(jù)類型,經(jīng)過稍稍加工就可以轉(zhuǎn)換成其他語言的數(shù)據(jù)類型。

? ? 2、xml:指可擴展標記語言,被設(shè)計用來傳輸和存儲數(shù)據(jù)。


參考鏈接:

https://blog.csdn.net/nikita1995/article/details/82494416

https://www.cnblogs.com/yyhh/p/6083159.html

https://www.cnblogs.com/ldq2016/p/9055933.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容