接口測試項目實例網址:http://www.testingedu.com.cn:8081/inter/index.html
。
接口簡略說明:
- 鑒權接口:
http://www.testingedu.com.cn:8081/inter/HTTP/auth
該接口返回一個token值,之后的所有接口請求均需添加token頭域使用該token。 - 注冊接口:
http://www.testingedu.com.cn:8081/inter/HTTP/register
- 登錄接口:
http://testingedu.com.cn:8081/inter/HTTP/login
該接口返回一個userid,在請求用戶信息時使用,因此保存為變量。 - 獲取用戶信息接口:
http://testingedu.com.cn:8081/inter/HTTP/getUserInfo
該接口需要使用登錄后所獲取的userid,因此使用之前保存的userid變量值。 - 注銷接口:
http://testingedu.com.cn:8081/inter/HTTP/logout
說明:
接口測試項目實例中,訪問注冊、登錄、獲取用戶信息、登出接口之前,均需要調用auth接口獲取token數據。
因此需要通過auth接口獲取的token信息之后,存為變量供后續接口調用。
(一)項目接口文檔
1、鑒權接口
鑒權接口路徑:/inter/HTTP/auth
。
-
功能說明
獲取接口授權信息返,回授權后token。
本接口是訪問平台所有接口之前必須要調用的授權接口,只有通過該接口初始化token之后,才能訪問平台其他接口。
(auth接口就是獲取token接口,作用是鑒權。) -
接口格式
Json數據格式 -
HTTP請求方式
POST -
輸入參數說明
1)接口接收參數
無
2)頭部校驗參數參數名稱 是否必須 類型 描述 token N string 授權接口的token參數,如果已經存在有效token,則需要帶上,此時不重新分配token;如果沒有有效的token,或者不帶token,都會重新分配token。 -
請求示例
http://www.testingedu.com.cn:8081/inter/HTTP/auth
-
返回參數說明
參數名稱 類型 描述 status int 請求結果狀態碼:
200:success token不存在或失效,創建token並返回
201:success token未登錄
202:success token已授權登錄,返回token。msg string 請求結果提示信息。與status對應。 token string 請求授權成功,返回token給客戶端。200和202狀態,會返回token。 -
正確返回示例
{ "status": 200, "msg": "success", "token": "109f1a34bdcf4785b6c70a9917d7a49d" }
-
錯誤返回示例
無
2、注冊接口
注冊接口路徑:/inter/HTTP/register
。
-
功能說明
注冊用戶。
通過接口,向服務器提交參數,然后在平台注冊自己的用戶賬號。 -
接口格式
json -
HTTP請求方式.
POST -
輸入參數說明
(1)接口接收參數如下:參數名稱 是否必須 類型 描述 username Y string 用戶名參數,范圍[3,16] pwd Y string 密碼參數,范圍[3,16] nickname Y string 昵稱參數,范圍[3,36] describe N string 個人描述參數,范圍[0,127] (2)頭部校驗參數 參數名稱 是否必須 類型 描述 -------- -------- ------ -------------------------------- token Y string 鑒定請求是否合法,用戶是否登錄。 -
請求示例
http://www.testingedu.com.cn:8081/inter/HTTP/register
參數如下:
username
: Will
pwd
: will
nickname
: Will
describe
: Will -
返回參數說明
參數名稱 類型 描述 status int 請求結果狀態碼:
200:恭喜您,注冊成功
400:參數錯誤
401:用戶名已經注冊
402:參數錯誤.
405:非法請求
406:登錄狀態,不能注冊msg string 請求結果提示信息。與status對應。 -
正確返回示例
{ "status": 200, "msg": "恭喜您,注冊成功" }
-
錯誤的返回示例
{ "status": 405, "msg": "非法請求" }
3、登錄接口
登錄接口路徑:/inter/HTTP/login
。
-
功能說明
向服務器發送登錄鑒權。
接口向服務器發送用戶名和密碼參數,通過登錄接口,去登錄平台。登錄成功后,當前使用的token會備注為已登錄狀態。 -
接口格式
json -
HTTP請求方式.
POST -
輸入參數說明
(1)接口接收參數如下:參數名稱 是否必須 類型 描述 username Y string 用戶名參數,范圍[3,16] pwd Y string 密碼參數,范圍[3,16] (2)頭部校驗參數 參數名稱 是否必須 類型 描述 -------- -------- ------ ------------------------------------------------------------ token Y string 登錄接口的token參數,如果沒有該參數,不能請求登錄接口。如果有該參數,登錄成功后,該token會具備已登錄的狀態。 -
請求示例
http://testingedu.com.cn:8081/inter/HTTP/login
參數如下:
username
: xiaoming
password
: 123456 -
返回參數說明
參數名稱 類型 描述 status int 請求結果狀態碼:
200:恭喜您,登錄成功
401:用戶名密碼錯誤
402:參數錯誤
405:非法請求
406:用戶已經在別處登錄msg string 請求結果提示信息。與status對應。 id string 登錄成功后,返回當前用戶的userid,其他情況不返回該字段。 -
正確返回示例
{ "status": 200, "msg": "恭喜您,登陸成功", "userid": "1" }
-
錯誤的返回示例
{ "status": 406, "msg": "非法請求" }
4、用戶信息接口
用戶信息接口路徑:/inter/HTTP/getUserInfo
。
- 功能說明
向服務器獲取指定id的用戶信息。
該用戶的id必須與當前用token登錄用戶一致,否則不能獲取。 - 接口格式
json - HTTP請求方式.
POST - 輸入參數說明
(1)接口接收參數如下:參數名稱 是否必須 類型 描述 username Y string 用戶id,范圍[1,10] (2)頭部校驗參數 參數名稱 是否必須 類型 描述 -------- -------- ------ ------------------------------------------ token Y string 用來校驗查詢信息的用戶是否是已經登錄狀態。 - 請求示例
http://testingedu.com.cn:8081/inter/HTTP/getUserInfo
參數如下:
id
: 1 - 返回參數說明
參數名稱 類型 描述 status int 請求結果狀態碼:
200:查詢成功
401:您還未登錄
402:參數錯誤
404:非法查詢
405:非法請求
406:token已失效msg string 請求結果提示信息。與status對應。 id string 查詢成功,返回用戶id;失敗不返回。 nickname string 查詢成功,返回用戶昵稱信息;失敗不返回。 describe string 查詢成功,返回用戶個人描述信息;失敗不返回。 - 正確返回示例
{ "status": 200, "msg": "查詢成功", "userid": "1", "nickname": "xiaohuahua", "describe": "擅長Python、Java自動化開發" }
- 錯誤的返回示例
{ "status": 405, "msg": "非法請求" }
5、注銷接口
注銷接口路徑:/inter/HTTP/logout
。
- 功能說明
注銷登錄(退出)。
接口向服務器注銷當前token登錄的用戶。 - 接口格式
json - HTTP請求方式.
POST - 輸入參數說明
(1)接口接收參數
無
(2)頭部校驗參數參數名稱 是否必須 類型 描述 token Y string 用來校驗用戶是否是已經登錄狀態。 - 請求示例
http://testingedu.com.cn:8081/inter/HTTP/logout
- 返回參數說明
參數名稱 類型 描述 status int 請求結果狀態碼:
200:注銷成功
406:token已失效msg string 請求結果提示信息。與status對應。 - 正確返回示例
{ "status": 200, "msg": "用戶已退出登錄" }
- 錯誤的返回示例
{ "status": 406, "msg": "token已失效" }
(二)網站上手動驗證
在實際的工作中,我們查看完文檔之后,需要到網站上進行手動操作,調用一下文檔中的接口,還可以借助抓包工具,來檢查一下文檔中有沒有表述上的問題。(也就是最基本的流程判斷)
通過實際操作得知如下流程:
- 用戶注冊的前后會調用auth(鑒權)接口。
- 用戶登陸后會調用查詢用戶信息接口,在調用查詢用戶信息接口前也會調用auth(鑒權)接口。
也就是一個登陸操作,執行了登陸,鑒權,查詢三個接口。 - 注銷用戶后會調用auth(鑒權)接口,使用戶鑒權失效。
(三)Postman測試實現
簡述整體思路:
- 我們需要創建5個請求,鑒權、注冊、登陸、查詢、注銷。
- 創建一個Collection測試集管理以上請求。
- 創建一個環境變量,對該項目的公共變量進行管理。
- 先調用鑒權接口,把獲得的token存儲環境變量中,方便后續接口使用。
- 每個請求都需要編寫斷言。
1、准備工作
(1)創建一個Collection測試集
因為是新的項目,我們需要為該項目創建一個新的測試集,方便請求的管理。
例如:叫“綜合練習”。
(2)創建一個環境變量
創建一個環境變量,方便對該項目的公共變量進行管理。
一般與Collection測試集同名。
2、 創建請求
(1)創建auth鑒權請求
通過前面接口文檔可以分析得出:
auth鑒權接口如果不傳遞token參數,就重新分配一個token並返回。
如果傳遞有效的token參數,此時不再重新分配token;
所以我們就創建一個不帶參數的auth鑒權請求即可。
(只填寫請求方式和請求參數即可)
如下圖:
然后我們編寫請求后置腳本Tests
:
步驟1:編寫斷言
// 斷言鑒權操作成功
// 返回值中msg是否等於success
pm.test("鑒權接口請求成功", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.msg).to.eql("success");
});
步驟2:把返回值中的token數據保存到環境變量中,提后后續接口使用。
// 把鑒權接口返回數據中的token信息,保存到環境變量中
pm.environment.set("authToken", pm.response.json().token);
編寫完成后,我們再Send
驗證一次:
可以看到Tests
中的腳本是沒有問題,我們再來看看“綜合練習”環境變量中的內容。
如下圖:
看到以上信息,說明auth鑒權請求實現完成。
(2)用戶注冊接口實現
先填寫請求方式和請求地址,並填寫請求數據,如下圖:
然后在請求頭中填寫token信息。
最后在編寫后置腳本Tests
斷言
// 斷言用戶注冊操作是否成功
pm.test("注冊操作成功", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.msg).to.include("注冊成功");
});
發送請求並查看結果,如下圖:
以上就完成了用戶注冊接口的實現。
(3)用戶登陸接口實現
先填寫請求方式和請求地址,並填寫請求數據,如下圖:
然后在請求頭中填寫token信息。
最后在編寫后置腳本Tests
斷言和數據處理
斷言:
// 斷言用戶登陸成功
pm.test("用戶登錄成功", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.msg).to.include("登錄成功");
});
數據處理:
// 把返回用戶的userid,添加到環境變量中。
// 方便后續的接口使用。
pm.environment.set("userid", pm.response.json().userid);
發送請求並查看結果,如下圖:
查看環境變量userid已被添加。
以上就完成了用戶登錄接口的實現。
(4)查詢用戶信息接口實現
先填寫請求方式和請求地址,並填寫請求數據,如下圖:
然后在請求頭中填寫token信息。
最后在編寫后置腳本Tests
斷言
// 斷言查詢用戶信息成功
pm.test("查詢用戶信息成功", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.msg).to.include("查詢成功");
});
發送請求並查看結果,如下圖:
以上就完成了查詢用戶信息接口的實現。
(5)用戶注銷接口實現
先填寫請求方式和請求地址,而logout(注銷)接口並不需要傳遞參數,只需要傳請求頭中有效的token。
編寫后置腳本Tests
斷言
// 斷言用戶注銷成功
pm.test("用戶退出登錄成功", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.msg).to.include("退出登錄");
});
發送請求並查看結果,如下圖:
這樣就完成了用戶注銷接口的實現。
提示:如果再次調用登錄接口進行用戶登錄,就會出現登錄失敗的現象。需要重新auth鑒權,再進行登錄。
以上綜合項目中的接口我們都創建完成了。
(四)加入數據驅動
1、准備數據文件
更具上面的5個接口,來編輯數據文件,如下:
usernane | password | registerMsg | loginUser | loginPwd | loginMsg | userMsg |
---|---|---|---|---|---|---|
xiaoming3 | 123456 | 注冊成功 | xiaoming3 | 123456 | 登錄成功 | 查詢成功 |
xiaoming3 | 123456 | 用戶已被注冊 | xiaoming3 | 12345666 | 用戶名密碼錯誤 | 您還未登陸 |
xiaoming3@ | 123456 | 參數錯誤 | xiaoming3@ | 123456 | 參數錯誤 | 您還未登陸 |
xiaoming3aaaaaaaaaaaaaa | 123456 | 參數錯誤 | xiaoming3aaaaaaaaaaaaaa | 123456 | 參數錯誤 | 您還未登陸 |
當我們用到數據驅動的時候,首先要想清楚,測試的輸入數據是哪些,還有預期的返回信息是什么。
提示:
- 要把Excel文件另存為
.cvs
文件。- 使用Notepad++打開數據文件,然后將數據文件
轉為UTF-8編碼
。
2、修改請求中的參數
我們以注冊接口為例,其他接口同理。
修改請求參數如下:
修改請求后置腳本Tests
,如下:
3、使用測試驅動方式執行測試集
點擊測試集,然后進入Collection Runner
界面。
執行如下操作:
提示:每次上傳完數據文件后,需要Preview一下,確保上傳的數據信息的准確性。
如下圖:
最后點擊Run綜合練習DDT
執行測試集。
4、分析測試結果
通過分析測試結果,可以判斷接口的是否正確,也可以對測試數據重新進行補充或者修改。
最后得出接口測試的結果。
以上就是在工作中我們使用Postman進行接口測試的基礎流程。