# 接口測試
> ### 首先,什么是接口呢?
接口一般來說有兩種,一種是程序內部的接口,一種是系統對外的接口。
1. 系統對外的接口:比如你要從別的網站或服務器上獲取資源或信息,別人肯定不會把數據庫共享給你,他只能給你提供一個他們寫好的方法來獲取數據,你引用他提供的接口就能使用他寫好的方法,從而達到數據共享的目的,比如說咱們用的app、網址這些它在進行數據處理的時候都是通過接口來進行調用的。
2. 程序內部的接口:方法與方法之間,模塊與模塊之間的交互,程序內部拋出的接口,比如bbs系統,有登錄模塊、發帖模塊等等,那你要發帖就必須先登錄,要發帖就得登錄,那么這兩個模塊就得有交互,它就會拋出一個接口,供內部系統進行調用。
> ### 常見接口:
1. webService接口:是走soap協議通過http傳輸,請求報文和返回報文都是xml格式的,我們在測試的時候都用通過工具才能進行調用,測試。可以使用的工具有SoapUI、jmeter、loadrunner等;
2. http api接口:是走http協議,通過路徑來區分調用的方法,請求報文都是key-value形式的,返回報文一般都是json串,有get和post等方法,這也是最常用的兩種請求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;
> ### 前端和后端:
在說接口測試之前,我們先來搞清楚這兩個概念,前端和后端。
前端是什么呢,對于web端來說,咱們使用的網頁,打開的網站,這都是前端,這些都是html、css寫的;對于app端來說呢,它就是咱們用的app,android或者object-C(開發ios上的app)開發的,它的作用就是顯示頁面,讓我們看到漂亮的頁面,以及做一些簡單的校驗,比如說非空校驗,咱們在頁面上操作的時候,這些業務邏輯、功能,比如說你購物,發微博這些功能是由后端來實現的,后端去控制你購物的時候扣你的余額,發微博發到哪個賬號下面,那前端和后端是怎么交互的呢,就是通過接口。
前面說的你可能不好理解,你只需記住:`前端負責貌美如花,后端負責掙錢養家。`
> ### 什么是接口測試:
接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。
OK,上面是百度百科上說的,下面才是我說的
其實我覺得接口測試很簡單,比一般的功能測試還簡單,現在找工作好多公司都要求有接口測試經驗
什么是接口測試,本著不懂也要裝懂的態度,我會說:所謂接口測試就是通過測試不同情況下的入參與之相應的出參信息來判斷接口是否符合或滿足相應的功能性、安全性要求。
我為啥說接口測試比功能測試簡單呢,因為功能測試是從頁面輸入值,然后通過點擊按鈕或鏈接等傳值給后端,而且功能測試還要測UI、前端交互等功能,但接口測試沒有頁面,它是通過接口規范文檔上的調用地址、請求參數,拼接報文,然后發送請求,檢查返回結果,所以它只需測入參和出參就行了,相對來說簡單了不少。
> ### 接口測試的原理
通過測試程序或工具,模擬客戶端向服務器發送請求報文,服務器接收請求報文后對相應的報文做出處理,然后再把應答報文發送給客戶端,客戶端接收應答報文這一個過程。
> ### 接口組成
首先,接口文檔應該包含以下內容:
1、接口說明
2、調用url
3、請求方法(get\\post)
4、請求參數、參數類型、請求參數說明
5、返回參數說明
一個完整的具體的接口測試文檔,它告訴接口的地址/或名稱,要向接口傳入什么參數,每個參數有什么約束條件,成功調用接口時的預期返回結果和調用接口失敗時的預期返回結果。
> ### 為什么要做接口測試:
大家都知道,接口其實就是前端頁面或APP等調用與后端做交互用的,所以好多人都會問,我功能測試都測好了,為什么還要測接口呢?OK,在回答這個問題之前,先舉個栗子:
比如測試用戶注冊功能,規定用戶名為6~18個字符,包含字母(區分大小寫)、數字、下劃線。首先功能測試時肯定會對用戶名規則進行測試時,比如輸入20個字符、輸入特殊字符等,但這些可能只是在前端做了校驗,后端可能沒做校驗,如果有人通過抓包繞過前端校驗直接發送到后端怎么辦呢?試想一下,如果用戶名和密碼未在后端做校驗,而有人又繞過前端校驗的話,那用戶名和密碼不就可以隨便輸了嗎?如果是登錄可能會通過SQL注入等手段來隨意登錄,甚至可以獲取管理員權限,那這樣不是很恐怖?
所以,接口測試的必要性就體現出來了:
1. 可以發現很多在頁面上操作發現不了的bug
2. 檢查系統的異常處理能力
3. 檢查系統的安全性、穩定性
4. 前端隨便變,接口測好了,后端不用變
> ### 接口測試要關注什么內容
1. 發送給服務器的請求數據是否正確;
2. 服務器返回給客戶端的信息是否和預期結果一致;
3. 進入數據庫,檢查接口是否實現的相應的功能;
4. 接口的響應時間是否符合需求。
> ### 接口測試怎么測:
* 第一步:分析需求
所有的軟件測試都應追溯到用戶需求,接口測試也一樣。在接口測試開始前,我們需要得到一份接口測試的需求文檔。
產品開發負責人在完成某產品功能的接口文檔編寫后,在核對無誤后下發給對應的接口測試負責人。測試負責人拿到接口文檔需要首先做以下兩方面的工作。一方面,測試人員要對接口文檔中各個接口的功能以及接口中涉及的各個字段的意義和用途進行理解。另一方面,測試人員也應該充分與開發人員交流,理解清楚每個接口用到協議以及各個字段的取值規范和范圍。
需求文檔有很全面的,也有很簡單,如下圖:

不完整的需求

* 第二步:創建測試計劃
接口測試負責人與測試組長或者項目經理溝通測試計劃安排。單獨一個接口文檔涉及的接口過多時,由測試組長按照接口功能的相關性以及復雜性劃分接口分發給不同的測試人員進行測試,并制定測試時間以及每日測試工作量。
* 第三步:寫測試用例并評審
接口測試用例的編寫方式和功能測試類似,針對接口需要輸入的參數,設計各種合理和不合理的數據進行測試,然后進行用例的評審。以下面這個需求為例,編寫測試用例:

> > 測試用例:

* 第四步:構造接口測試請求并執行
接口測試的工具很多,比如 postman、RESTClient、jmeter、loadrunner、SoapUI等,本人首推的測試工具是postman和jmeter
1)、Postman是谷歌的一款接口測試插件,它使用簡單,支持用例管理,支持get、post、文件上傳、響應驗證、變量管理、環境參數管理等功能,可以批量運行,并支持用例導出、導入。
jmeter是一款100%純Java編寫的免費開源的工具,它主要用來做性能測試,相比loadrunner來說,它內存占用小,免費開源,輕巧方便、無需安裝,越來越被大眾所喜愛。
- 總章
- Oracle數據庫
- 常見的Linux命令
- 理論內容整理
- 給你如下功能怎么測試
- 支付怎么測試
- 購物車怎么測試?
- 搜索功能怎么測試?
- 文件上傳功能怎么測試?
- 登錄功能怎么測試?
- 還款功能怎么測試?
- 訂單功能怎么測試?
- 自動化測試篇
- 必記代碼
- 接口測試篇
- 性能測試篇
- app測試篇
- 面試篇
- 項目篇
- 職業素養篇
- 真實案列分析
- 如何預防冷場
- redis
- 琪琪
- 禪道搭建手冊
- 禪道搭建手冊1
- 禪道的基本使用
- 基于Python3_Selenium的自動化
- Python3安裝
- Python3基礎
- 列表_元組_集合
- 函數_模塊_類
- Python代碼
- selenium環境
- selenium定位方式
- Selenium常見操作
- toast讀取代碼
- 添加用戶代碼
- 隱式等待與顯式等待
- 循環添加用戶
- 測試用例練習
- 測試用例優化
- Fiddler抓包工具
- 安裝
- Fiddler使用
- 接口測試
- Jmeter的安裝
- Jmeter使用
- jmeter+ant+jenkins接口自動化測試框架
- 接口安全測試
- 性能測試
- Nmon監控LInux系統
- Jmeter分布式
- 性能測試-具體案例
- Monkey
- 安裝1
- Monkey使用
- appium自動化
- appium的安裝
- appium基本使用
- 真機USB連接
- 問題排查
- Jenkins持續集成
- Jenkins安裝
- Jenkins配置任務
- Python擴展內容
- Python連接數據庫
- Python進行接口測試
- 開啟服務