接口測(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è)試
