接口测试总结
閱讀目錄
?
1. 請求模型
2. 請求結果
3. 接口的請求會發(fā)向哪里
4. 復雜一點的接口,RESTful
5. 接口測試
6. 測試用例
?
序章
??????? 說起接口測試,網上有很多例子,但是當初做為新手的我來說,看了不不知道他們說的什么,覺得接口測試,好高大上。認為學會了接口測試就能屌絲逆襲,走上人生巔峰,迎娶白富美。
因此學了點開發(fā)知識后,發(fā)現接口測試其實都是人們玩的名詞罷了。接口測試,真心很簡單。它只不過是數據傳遞是一種表現而已。
?
1. 請求模型
看下圖中“A”線,可以理解為接口就是一個電燈的開關,它在接口里面給你提供了一個參數,參數的值一個是“開”,一個是“關”。
說起來,怎么才能讓燈亮?一個燈頭接兩根線,一根線接火線,一根線接零線這時燈就亮了。反之,不接零線、火線燈就滅了。
其實接口呢,就把這些復雜的操作簡化了,讓你看到的就只有一個開關,而你來操作這個開關就好了。我們做接口測試也只需要測試這個開關就完成任務了,接口測試就是這么簡單。
?
2. 請求結構
看到這里我們大致就明白了接口測試是怎么一回事了。接下來需要理解一下HTTP的URL是怎么組成為一個接口的。如圖:
一個URL就是一個接口:接口大致會分為一下幾個部分:
請求協議:
- http --- 普通的http請求
- https --- 加密的http請求,傳輸數據更加安全
- ftp --- 文件傳輸協議,主要用來傳輸文件
請求IP:就是指提供接口的系統(tǒng)所部署的服務器地址
請求端口:如果不填端口,默認是80,否則需要填寫端口號
接口路徑:指系統(tǒng)提供的接口在什么位置
接口參數:參數在接口路徑后,用“?”來表示路徑地址完了,剩下的都是參數了,用“&”來區(qū)分參數個數,
如下示例:
http://127.0.0.1:8080/light?opt=open&use=yy&pwd=123456
假設要操作這個燈,需要用戶密碼,則可以增加新的參數"use"、"pwd",用"&"來隔開。可以看到這個示例有3個參數:
"opt":"open"
"use":"yy"
"pwd":"123456"
接口HTTP參數【url看不見等隱藏參數】
http請求方式
? ? POST --- 用于添加新的內容? PUT --- 用于修改某個內容? DELETE --- 刪除某個內容? CONNECT --- 用于代理進行傳輸,如使用SSL? OPTIONS --- 詢問可以執(zhí)行哪些方法? PATCH --- 部分文檔更改? PROPFIND (wedav) --- 查看屬性? PROPPATCH (wedav) --- 設置屬性? MKCOL (wedav) --- 創(chuàng)建集合(文件夾)? COPY (wedav) --- 拷貝? MOVE (wedav) --- 移動? LOCK (wedav) --- 加鎖? UNLOCK (wedav) --- 解鎖? TRACE --- 用于遠程診斷服務器? HEAD --- 類似于GET, 但是不返回body信息,用于檢查對象是否存在,以及得到對象的元數據http請求頭
請求頭包含許多有關的客戶端環(huán)境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度。示例:
? ? Accept-Language:zh-cn? Connection:Keep-Alive? Host:localhost? User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)? Accept-Encoding:gzip,deflate.http請求體
請求體就是請求等正文了,可以有很多種請求體。
- json格式
- xml格式
- html格式
- 二進制格式( 多數用于圖片 )
- 字符串格式
看到上面的請求結構,就能接口測試了,只需要修改接口的參數,就可以像功能測試一樣測了。可以用功能測試設計用例的方法來設計接口測試的用例。可以使用各種測試用具輔助測試,下圖為“postman”測試工具。
?
3. 接口的請求會發(fā)向哪里?
我們可以看看這樣一個接口,用Java的Servlet怎么來實現
? ? ? // 接口的名稱與路徑,urlPatterns中的/light,就是說在輸入地址與ip后,定義的接口名字http://127.0.0.1:8080/light? ? ? ? ? ? ? }上面的代碼大致做了如下幾個操作:
- 如果是"open"就返回"開燈啦!"
- 如果是"close"就返回"關燈啦!"
??????? 看到上面的代碼,就能發(fā)現,我們將opt的值,傳進"http://127.0.0.1:8080/light"這個接口中,當你拿到你想要的值,想做什么都可以了,對吧。我這邊的代碼就是簡單的進行了返回,當你訪問了我“開燈”的接口,我就直接告訴你“開燈了” ( 其實我什么都沒做,這已經算是一個BUG了。所以測試接口要看看它到底生效了沒有,也就是說,燈真的開了嗎?),我們做接口測試,需要開發(fā)提供接口文檔。最重要的有一下幾點:
確定了這些,才能做好接口測試。好的接口文檔如下:
?
4. 復雜一點的接口,RESTful
??????? 當年聽到RESTful時,覺得這又是什么新技術,肯定很高大上,其實RESTful它只是一種設計風格。一個接口用不同的請求方式,來做不同的事情。最典型的就是下面這張圖了。
我們測試的RESTful接口,就是復雜一點的開關。比如下圖B線的用戶接口:
一個用戶接口可以通過以下4種不同方式的請求,來做不同的事情:
??????? 你完全可以像“燈”的那個例子,用GET請求來傳遞不同的參數來實現,但是這樣如果接口多了,就會很混亂,很難管理。
這時,我們需要一種規(guī)則:
這樣子的規(guī)則,我們稱它為“RESTful”標準。
下圖是RESTful的狀態(tài)碼返回
5. 接口測試
前面的搞清楚了,接口測試就簡單了,其實就是幾個步驟。
??????? 這個是正常的一套流程,異常的情況,就不用我多說來吧。比如參數不傳值呀,傳的值不正確呀,明明要求用"GET"請求發(fā)送,偏要用"POST"請求發(fā)送呀。等等有很多異常情況,一般懂功能測試都能想到很多的異常情況,這里不再舉例來。
下面我以百度翻譯的接口為例子:
請求地址:http://fanyi.baidu.com/v2transapi 請求方式:POST 請求參數: ??????? from --- 哪國語言 ??????? to --- 翻譯成哪國語言 ??????? query --- 翻譯都內容我使用Python語言來進行接口測試,使用"requests"庫來編寫代碼比較簡答易懂,如果沒有安裝"requests"庫,可以打開cmd,輸入"pip install requests"來安裝
import?requests ? # 接口的url? url?=?"http://fanyi.baidu.com/v2transapi" ? # 接口的參數? params?=? :,? :,? } ? # 發(fā)送接口? r?=? ? # 打印返回結果? print(r.text) ? # 其實到上面就已經完了,因為百度不是我自己寫的接口,為了讓結果看的更加清楚一點,我取來翻譯的字段? import?json d?=? print()返回結果
?
可以試著將"query"的參數改成"student",返回結果也隨之改變
import?requests ? url?=?"http://fanyi.baidu.com/v2transapi" params?=? :,? :,? } ? r?=? ? import?json d?=? print()返回結果
?
當然,要是不懂代碼,也可以使用工具進行測試,只要記住填寫的幾個點,就可以做好接口測試,下圖是使用"postman"進行測試:
?
接口測試就是這么簡單
?
6. 接口測試用例
接口測試用例的設計就沒什么好講的了,與功能測試一樣設計就好了。我是用Excel來編寫的,主要是為了方便管理,只要寫的干凈,讓人看的很舒服就好了。我自己設計的用例是這樣的:
這樣的用例比較好管理,如圖:
整個接口測試就這么多了。接口測試其實很簡單,在功能測試眼里,接口測試那么高大上,其實不也過如此了。
from:?http://www.cnblogs.com/yyhh/p/6083159.html#yy01
總結
- 上一篇: pinpoint 安装部署
- 下一篇: Jmeter + Grafana + I