介面測試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.資料庫如果介面涉及到寫數據,必須要驗庫