【博學(xué)谷學(xué)習(xí)記錄】超強(qiáng)總結(jié),用心分享|測(cè)試工程師必備技能總結(jié):軟件測(cè)試-接口測(cè)試(接口測(cè)試概念,HTTP協(xié)議、接口規(guī)范、接口測(cè)試流程、接口文檔解析、接口用例設(shè)計(jì))

接口測(cè)試課程

課程目標(biāo)

---? 能夠根據(jù)接口API文檔編寫接口測(cè)試用例

---? 能夠使用Postman工具進(jìn)行接口測(cè)試,并能夠?qū)Υ罅拷涌谟美M(jìn)行管理、對(duì)接口響應(yīng)結(jié)果進(jìn)行斷言、處理多接口的依賴及生成測(cè)試報(bào)告

---? 能夠使用Python+Requests封裝的接口測(cè)試框架,實(shí)現(xiàn)接口對(duì)象封裝、測(cè)試用例編寫、測(cè)試數(shù)據(jù)管理及生成測(cè)試報(bào)告

課程大綱

接口測(cè)試基礎(chǔ)

1. 接口

接口可分為:硬件接口和軟件接口;我們這里只關(guān)注軟件層面的接口。

接口:是指系統(tǒng)或組件之間的交互點(diǎn),通過這些交互點(diǎn)可以實(shí)現(xiàn)數(shù)據(jù)的交互。(數(shù)據(jù)交互的通道)


1.1 接口的類型

接口測(cè)試分類有許多種,按照范圍劃分:系統(tǒng)之間的接口和程序內(nèi)部的接口

? ? ? ?1.1.1 系統(tǒng)之間的接口:多個(gè)內(nèi)部系統(tǒng)之間的交互,內(nèi)部系統(tǒng)與外部系統(tǒng)之間的交互

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

2. 接口測(cè)試

接口測(cè)試:是對(duì)系統(tǒng)或組件之間的接口進(jìn)行測(cè)試,主要是校驗(yàn)數(shù)據(jù)的交換、傳遞和控制管理過程,以及相互邏輯依賴關(guān)系。


2.1 接口測(cè)試原理

模擬客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接收請(qǐng)求后進(jìn)行相應(yīng)的業(yè)務(wù)處理,并向客戶端返回響應(yīng)數(shù)據(jù),檢查響應(yīng)數(shù)據(jù)是否符合預(yù)期。


2.2 接口測(cè)試的特點(diǎn)

2.2.1 測(cè)試可以提前介入,提早發(fā)現(xiàn)Bug,符合質(zhì)量控制前移的理念?

2.2.2 可以發(fā)現(xiàn)一些頁面操作發(fā)現(xiàn)不了的問題?

2.2.3 接口測(cè)試低成本高效益(底層的一個(gè)Bug能夠引發(fā)上層8個(gè)左右Bug,接口測(cè)試可以實(shí)現(xiàn)自動(dòng)化)?

2.2.4? 不同于傳統(tǒng)的單元測(cè)試,接口測(cè)試是從用戶的角度對(duì)系統(tǒng)進(jìn)行全面的檢測(cè)


2.3 接口測(cè)試的實(shí)現(xiàn)方式

2.3.1? 使用接口測(cè)試工具來實(shí)現(xiàn)(比如:JMeter、Postman)

2.3.2? ?通過編寫代碼來實(shí)現(xiàn)(比如:Python + Requests)


3. 接口自動(dòng)化測(cè)試

3.1 概念

接口自動(dòng)化測(cè)試:是讓程序或工具代替人工自動(dòng)的完成對(duì)接口進(jìn)行測(cè)試的一種過程。


HTTP協(xié)議

1. HTTP協(xié)議介紹

HTTP:(HyperText Transfer Protocol)超文本傳輸協(xié)議,是一個(gè)基于請(qǐng)求與響應(yīng)模式的、應(yīng)用層的協(xié)議,也是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議


1.1 HTTP協(xié)議的特點(diǎn)

1. 支持客戶端/服務(wù)器模式

2. 簡單快速

3. 靈活

4. 無連接

5. 無狀態(tài)


2. URL

URL:(Uniform Resource Locator)統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。HTTP使用URL來建立連接和傳輸數(shù)據(jù)。

URL格式

http://www.itcast.cn:8080/news/index.html?uid=123&page=1


協(xié)議部分:“http”,常見的協(xié)議有HTTP,HTTPS、FTP等

域名部分:“www.itcast.cn”,也可以使用IP地址作為域名使用

端口部分:“8080”,端口可以省略,默認(rèn)端口(HTTP:80,HTTPS:443,F(xiàn)TP:21)

資源路徑部分:“/news/index.html”

查詢參數(shù)部分:“uid=123&page=1”,可以允許有多個(gè)參數(shù),多個(gè)之間用“&”作為分隔符


3. HTTP請(qǐng)求

http請(qǐng)求由三部分組成,分別是:請(qǐng)求行、請(qǐng)求頭、請(qǐng)求體


請(qǐng)求行

請(qǐng)求行用來說明請(qǐng)求方法、要訪問的資源以及所使用的協(xié)議版本常用請(qǐng)求方法:

GET:從服務(wù)器獲取資源(一項(xiàng)或多項(xiàng))

POST:在服務(wù)器新建一個(gè)資源

PUT:在服務(wù)器更新資源(客戶端提供改變后的完整資源)

DELETE:從服務(wù)器刪除資源

其他請(qǐng)求方法(了解):

HEAD:請(qǐng)求獲取由Request-URI所標(biāo)識(shí)的資源的響應(yīng)消息報(bào)頭

TRACE:請(qǐng)求服務(wù)器回送收到的請(qǐng)求信息,主要用于測(cè)試或診斷

CONNECT:保留將來使用

OPTIONS:請(qǐng)求查詢服務(wù)器的性能,或者查詢與資源相關(guān)的選項(xiàng)和需求


請(qǐng)求頭

請(qǐng)求頭緊接著請(qǐng)求行,請(qǐng)求頭部由鍵值對(duì)組成,每行一對(duì)。 請(qǐng)求頭部通知服務(wù)器有關(guān)于客戶端請(qǐng)求的信息,典型的請(qǐng)求頭有:

User-Agent:產(chǎn)生請(qǐng)求的瀏覽器類型

Accept:客戶端可識(shí)別的內(nèi)容類型列表

Content-Type:請(qǐng)求體數(shù)據(jù)的類型,常見的類型有:

? ? ? ? ? ? ? ? ? ? text/html: HTML格式

? ? ? ? ? ? ? ? ? ? text/plain:純文本格式

? ? ? ? ? ? ? ? ? ? image/jpeg:jpg圖片格式

? ? ? ? ? ? ? ? ? ? application/json: JSON數(shù)據(jù)格式

? ? ? ? ? ? ? ? ? ? application/x-www-form-urlencoded: form表單數(shù)據(jù)被編碼為key/value格式發(fā)送到服務(wù)器(表單默認(rèn)的提交數(shù)據(jù)格式)

? ? ? ? ? ? ? ? ? ? multipart/form-data: 在表單中進(jìn)行文件上傳時(shí)使用

請(qǐng)求體

請(qǐng)求體不在GET方法中使用,經(jīng)常在POST、PUT方法中使用

請(qǐng)求體的數(shù)據(jù)可以是:表單數(shù)據(jù)、文本、XML、JSON

與請(qǐng)求數(shù)據(jù)相關(guān)的最常使用的請(qǐng)求頭是Content-Type和Content-Length


4. HTTP響應(yīng)

HTTP響應(yīng)也由三個(gè)部分組成,分別是:狀態(tài)行、響應(yīng)頭、響應(yīng)體


狀態(tài)行

狀態(tài)行由協(xié)議版本號(hào)、狀態(tài)碼、狀態(tài)消息三部分組成

狀態(tài)碼有三位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類別:

? ? ? ? ? ? ? ? ? 1xx:指示信息--表示請(qǐng)求已接收,繼續(xù)處理

? ? ? ? ? ? ? ? ? 2xx:成功--表示請(qǐng)求已被成功接收、理解、接受

? ? ? ? ? ? ? ? ? 3xx:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作

? ? ? ? ? ? ? ? ? 4xx:客戶端錯(cuò)誤--請(qǐng)求有語法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn)

? ? ? ? ? ? ? ? ? ?5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求

響應(yīng)頭?

響應(yīng)頭用于描述服務(wù)器的基本信息,以及數(shù)據(jù)的描述,服務(wù)器通過這些數(shù)據(jù)的描述信息,可以通知客戶端如何處理響應(yīng)數(shù)據(jù)

響應(yīng)體?

響應(yīng)體就是響應(yīng)的消息體,數(shù)據(jù)可以是普通文本、XML、JSON、HTML源碼



接口規(guī)范

1. 傳統(tǒng)接口風(fēng)格

對(duì)用戶進(jìn)行操作的相關(guān)接口,包括增刪改查

2. RESTful

2.1 定義

一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格,而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件。

REST:即(Representational State Transfer)的縮寫。詞組的翻譯是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。如果一個(gè)架構(gòu)符合REST原則,就稱它為RESTful架構(gòu)。


2.2 RESTful接口風(fēng)格


2.3 RESTful架構(gòu)特點(diǎn)

1. 每一個(gè)URL代表一種資源;

2. 客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;

3. 客戶端通過四個(gè)HTTP動(dòng)詞,對(duì)服務(wù)器端資源進(jìn)行操作,實(shí)現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化";

4. 接口之間傳遞的數(shù)據(jù)最常用格式為JSON。


常用的HTTP動(dòng)詞有下面四個(gè):

? ? ? ? ? ? ? ?GET:從服務(wù)器獲取資源(一項(xiàng)或多項(xiàng))

? ? ? ? ? ? ? ?POST:在服務(wù)器新建一個(gè)資源

? ? ? ? ? ? ? ? PUT:在服務(wù)器更新資源(客戶端提供改變后的完整資源)

? ? ? ? ? ? ? ? DELETE:從服務(wù)器刪除資源


接口測(cè)試流程


1. 接口測(cè)試流程

1. 需求分析

? ? ? ? ? 主要依據(jù)需求文檔

2. 接口文檔解析

一般是由開發(fā)人員編寫接口文檔(API文檔)

3. 設(shè)計(jì)測(cè)試用例

4. 執(zhí)行測(cè)試

? ? ? ? 使用接口測(cè)試工具實(shí)現(xiàn)

? ? ? ? 通過編寫代碼實(shí)現(xiàn)

5. 接口缺陷管理與跟蹤

6. 生成測(cè)試報(bào)告

7. 接口自動(dòng)化持續(xù)集成(可選)



接口文檔解析

1. 接口文檔介紹

1.1 什么是接口文檔?

接口文檔:又稱為API文檔,一般是由開發(fā)人員所編寫的,用來描述系統(tǒng)所提供接口信息的文檔。 大家都根據(jù)這個(gè)接口文檔進(jìn)行開發(fā),并需要一直維護(hù)和遵守。

1.2 為什么要寫接口文檔?

1. 能夠讓前端開發(fā)與后臺(tái)開發(fā)人員更好的配合,提高工作效率。(有一個(gè)統(tǒng)一參考的文件)

2. 項(xiàng)目迭代或者項(xiàng)目人員更迭時(shí),方便后期人員查看和維護(hù)

3. 方便測(cè)試人員進(jìn)行接口測(cè)試


2. 接口文檔內(nèi)容

一個(gè)規(guī)范的接口文檔,要包含以下信息:

1 基本信息

? ? ? ? ? ? ?接口名稱、請(qǐng)求方法、請(qǐng)求路徑、接口描述

2? 請(qǐng)求參數(shù)

? ? ? ? ? ? ? ?請(qǐng)求頭

? ? ? ? ? ? ? ?請(qǐng)求體(包含具體的請(qǐng)求參數(shù)名稱、參數(shù)類型、是否必須、示例、備注)

3? 返回?cái)?shù)據(jù)

? ? ? ? ? ? ?不同情況的響應(yīng)狀態(tài)碼

? ? ? ? ? ? ?響應(yīng)數(shù)據(jù)(包含具體的響應(yīng)數(shù)據(jù)名稱、類型、是否必須、默認(rèn)值、示例、備注)


2.1 接口文檔示例


3. 接口文檔解析案例

查看人力資源管理系統(tǒng)的接口文檔,解析以下接口:

1. 登錄

2. 添加員工

3. 查詢員工

4. 修改員工

5. 刪除員工


接口用例設(shè)計(jì)

1. 接口測(cè)試的測(cè)試點(diǎn)

2. 接口用例設(shè)計(jì)的方法與思路

功能測(cè)試:驗(yàn)證接口功能是否按照接口文檔實(shí)現(xiàn)(輸入+處理+輸出)?

a.? 單接口測(cè)試:?

? ? ? ? ?*正向功能:(通過性測(cè)試)?

? ? ? ? ? ? ? ? ? ? ? ? ?僅必填參數(shù)?

? ? ? ? ? ? ? ? ? ? ? ? ?全部參數(shù)?

? ? ? ? ? ? ? ? ? ? ? ? ? 參數(shù)組合?

? ? ? ? *反向測(cè)試:(異常測(cè)試)?

? ? ? ? ? ? ? ? ? 參數(shù)異常:無參、少參、多參、錯(cuò)誤參數(shù)?

? ? ? ? ? ? ? ? ? ?數(shù)據(jù)異常:數(shù)據(jù)為空、長度不符、類型不符、錯(cuò)誤數(shù)據(jù)?

? ? ? ? ? ? ? ? ? ?業(yè)務(wù)數(shù)據(jù)異常:結(jié)合業(yè)務(wù)功能考慮輸出的各種異常返回情況?

b.? 多接口測(cè)試:業(yè)務(wù)場(chǎng)景功能測(cè)試(站在用戶角度考慮常用的使用場(chǎng)景)

? ? ? ? ? ? ? ? ? ? 接口之間數(shù)據(jù)依賴


3. 單接口測(cè)試

針對(duì)人力資源管理系統(tǒng)的登錄接口進(jìn)行測(cè)試

4. 場(chǎng)景測(cè)試

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

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

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