接口測試01
常見的接口類型
接口是指外部系統與系統之間以及內部各子系統之間的交互點。
其中包括外部接口、內部接口
內部接口又包括上層服務與下層服務接口、同級接口
系統對外接口:比如你要從別的網站或服務器上獲取資源或信息,別人肯定不會把數據庫共享給你,它只能給你提供一個他們寫好的方法來獲取數據,你引用他提供的接口就可以使用它寫好的方法,從而達到數據共享的目的
程序的內部接口:方法與方法之間、模塊與模塊之間的交互,程序內部拋出的接口,比如TMOOC系統,有登錄模塊、我的課程等等,如果你要看我的課程必須先登錄,才可以觀看,這兩個模塊就得有交互,它就會拋出一個接口,供內部系統進行調用
常見的WEB接口有哪些
HTTP協議的接口、WEB SERVICE接口
HTTP接口是走HTTP協議,通過路徑來區分調用方法,請求的報文都是key = value的形式,返回的報文一般都是JSON串,有GET和POST等方法
WEB SERVICE接口是走SOAP協議通過http傳輸,請求報文和返回的報文一般是xml格式,在測試過程中一般使用工具才能進行調用測試 — 用的較少
程序中的接口 API
# 定義一個add函數 -- 實現加法運算功能,最後返回運算結果
# 定義函數: 函數名 參數表 返回值
# 定義add函數,傳入兩個參數
def add(a,b): # 接口可以接收使用者提供的數據
# 邏輯處理
c = a + b # 對這些數據進行處理,實現預定的功能
# 返回結果
return c # 將結果返回給使用者
# 調用函數:使用函數名,傳入參數,返回結果
add(1,2) # 結果為3
add(3,5) # 結果為8
注意:接口測試考慮是程序的輸入參數、輸出結果
接口的本質及其工作原理是什麼
接口你可以簡單的理解他就是URL,工作原理就是說URL通過GET或POST請求向服務器中發送一些數據,然後得到一些相應的返回值,本質就是數據的傳輸與接收
服務器和客戶端(機)
服務器是被測軟件或被測接口程序安裝的位置
使用linux操作系統作為服務器,會使用雲服務的形式存在
客戶端/機是個人計算機,通常將postman、fiddler、jmeter安裝在個人計算機上
請求和響應
客戶端要使用服務器上的軟件或接口程序,需要把要處理的數據發送給服務器,服務器上的接口程序會處理數據,然後把結果發給客戶端
客戶端發送數據給服務器的過程叫做請求
服務器把處理結果發送給客戶端的過程叫做響應
請求的組成部分
請求頭包含許多有關客戶端環境和請求正文的有用信息,例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度,操作系統等
示例:
Accept:image/gif.image/jpeg./
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:windows NT5.0)
Accept-Encoding:gzip,deflate
請求體也叫請求正文,對於post方法來講,要發給服務器的數據存放在請求體中
響應的組成部分
響應頭主要是指響應的附加信息,比如響應類型、響應狀態碼、cookie、session等
響應體也叫響應正文,相當於接口返回值,也是從測試人員測試時最關心的內容
WEB接口的組成要素
1.接口地址
形式:協議://服務器IP地址或域名:端口號/項目名稱/接口名稱
例如://172.166.1.1:8080/test/api/?class=tsd2107&id=1
協議:常見的協議比如HTTP、HTTPS等
HTTP為普通http請求
HTTPS加密的http請求,傳輸數據更加安全
FTP文件傳輸協議,主要用於傳輸文件
服務器IP地址就是指提供接口的系統所部屬的服務器地址
域名如www.tmooc.cn
端口號如果不填寫端口號,默認是80,否則需要填寫端口號
有時候,一台服務器會提供很多服務,用不同的端口號區分不同的軟件或接口
端口號是0~65535之間的整數
常見的端口號:
http 80、https 443
接口名本質上是函數名、方法名、類名、模塊名、文件名
?用於分割接口地址和參數標誌,必須是英文的(地址欄中有?是GET請求)
class和id是參數名,表示給服務器上的接口發送數據,請求服務器處理
&用於鏈接多個參數,是固定寫法,多一個參數就加一個&符號連接
/test/api/?class=tsd2107&id=1也叫路徑(URI)
URI叫統一資源標識符,一般用來表示網址或接口中具體位置或名稱,是URL的一部分
URL叫做統一資源定位器,表示一個完整的網址或接口地址
2.請求方法
表示如何發送和處理數據
常見的請求方法:
方法名稱 | 方法介紹 |
---|---|
GET | 主要用於獲取數據/查詢 |
POST | 主要用於增加、修改、刪除資源 |
PUT | 主要用於修改資源(全部更新) |
patch | 主要用於修改資源(部分更新) |
delete | 主要用於刪除資源 |
常見面試題:GET和POST方法的區別
- GET請求可以被緩存,POST不可以
- GET請求會保存在瀏覽器的歷史記錄中,POST不會
- GET請求可以被收藏為書籤,POST不會
- GET請求時,發送數據的長度一般都有限制,POST沒有限制
- GET請求一般用於獲取數據,POST請求主要用於提交數據
- GET請求發送的數據一般會在URL(接口地址)中,POST發送的數據放在請求體中
- POST發送請求一般比GET發送請求更加安全
3.參數
是需要接口程序處理的數據
主要考慮參數有哪些,叫什麼名字,那些是必填參數,那些是可選參數,參數的類型,參數長度,參數的約束
4.返回值/響應正文
響應頭包含響應狀態碼,簡稱狀態嗎、HTTP狀態碼
響應狀態碼 | 狀態碼介紹 |
---|---|
200 | 成功響應(服務器成功把結果發給客戶端,但是不確保結果正確性) |
301 | 永久重定向 |
302 | 臨時重定向 |
401 | 需要授權 |
403 | 客戶端錯誤,比如IP被封禁、客戶端無寫權限、無讀權限、客戶端證書錯誤等 |
404 | 客戶端請求的網頁文件不存在,URL地址錯誤 |
500 | 服務器端的錯誤,比如服務器代碼錯誤、服務器重啟、服務器關機、服務器太忙(拒絕服務) |
響應類型有三種類型,分別是:
text/html網頁版,類似於字符串
xml soap/webservice接口比較常見的響應類型
JSON類型是最常見的響應類型
響應體/響應正文是返回text/html網頁版、xml 、JSON類型內容,測試是否通過要看響應體
5.數據庫如果接口涉及到寫數據,必須要驗庫