功能測試從頁面發(fā)起請求進(jìn)行測試,接口測試可以借助工具或代碼直接將數(shù)據(jù)發(fā)送到服務(wù)端進(jìn)行測試。
?功能測試和接口測試對應(yīng)的時間
接口測試的流程
?URL的組成
一、HTTP協(xié)議講解
HTTP:超文本傳輸協(xié)議,基于請求與響應(yīng)的應(yīng)用層協(xié)議
作用:規(guī)定了客戶端與服務(wù)器之間信息傳遞規(guī)范,是二者共同遵守的協(xié)議。
組成:
HTTP請求:定義請求數(shù)據(jù)格式:請求行、請求頭、請求體
HTTP響應(yīng):定義響應(yīng)數(shù)據(jù)格式:狀態(tài)行、響應(yīng)頭、響應(yīng)體
1.1、HTTP請求
1.1.1請求行
位置:請求數(shù)據(jù)第一行
作用:說明請求方法、訪問的資源、協(xié)議版本
常用請求方法:
GET:從服務(wù)器獲取資源
POST:在服務(wù)器新建一個資源
PUT:在服務(wù)器更新資源
DELETE:從服務(wù)器刪除資源
1.1.2、請求頭
位置:請求數(shù)據(jù)第二行到空白行之間
作用:通知服務(wù)器客戶端請求信息
特點(diǎn):請求頭部由鍵值對組成,每行一對
Content-Type:決定請求體數(shù)據(jù)類型?
text/html:HTML格式
image/jpeg:jpg圖片格式
application/json:JSON數(shù)據(jù)格式
application/x-www-form-urlencoded: 表單默認(rèn)的提交數(shù)據(jù)格式?
multipart/form-data:在表單中進(jìn)行文件上傳時使用
1.1.3、請求體?
位置:空白行之后的內(nèi)容
作用:傳輸數(shù)據(jù)實(shí)體
注意:請求體常在POST、PUT方法中使用
常配合的請求頭: Content-Type和Content-Length
1.2、HTTP響應(yīng)
1.2.1、狀態(tài)行
位置”響應(yīng)數(shù)據(jù)第一行
作用“描述服務(wù)器處理結(jié)果
內(nèi)容”狀態(tài)行由協(xié)議版本號、狀態(tài)碼、狀態(tài)消息組成
狀態(tài)碼:三位數(shù)字組成,第一個數(shù)字定義響應(yīng)類別
1XX:指示信息
2XX:成功
3XX:重定向
4XX:客戶端錯誤
5XX:服務(wù)端錯誤?
1.2.2、響應(yīng)頭?
位置:第二行開始到空白行之間
作用:描述客戶端端要使用的一些附加信息
特點(diǎn):響應(yīng)頭由鍵值對組成,每行一對
1.2.3、響應(yīng)體?
位置:響應(yīng)數(shù)據(jù)空白行之后
作用:服務(wù)器返回的數(shù)據(jù)實(shí)體
特點(diǎn):有圖片、json、xml、html等多種類型
二、接口規(guī)范?
作用:讓前端開發(fā)與后臺接口開發(fā)人員更好的配合,提高工作效率?
RESTful:一種網(wǎng)絡(luò)應(yīng)用程序的設(shè)計風(fēng)格和開發(fā)方式,提供了一組設(shè)計原則和約束條件。
特點(diǎn):請求API的URL用來定位資源;通過標(biāo)準(zhǔn)HTTP方法對資源進(jìn)行增刪改查操作;利用HTTP狀態(tài)碼返回狀態(tài)信息。
RESTful和傳統(tǒng)風(fēng)格的區(qū)別
三、Postman實(shí)現(xiàn)單個接口測試?
問題:拿到一個項目之后,我們是先測業(yè)務(wù)流程還是先測單模塊(接口)?
答案:先測試業(yè)務(wù)流程,確保核心功能正常。
?3.1、針對“合同新增業(yè)務(wù)”設(shè)計接口測試用例
如何測試業(yè)務(wù)接口?
根據(jù)業(yè)務(wù)流程圖梳理業(yè)務(wù)路徑;
設(shè)計測試用例覆蓋每一條業(yè)務(wù)路徑
3.1.1、業(yè)務(wù)流程梳理
業(yè)務(wù)流程圖如下:
合同新增業(yè)務(wù)流程如下:
3.1.2、解析接口文檔示例
為什么要進(jìn)行接口文檔解析?
熟悉接口信息,為設(shè)計接口用例準(zhǔn)備
接口API文檔:一般由后端開發(fā)編寫、用來描述接口信息的文檔
如何進(jìn)行接口文檔解析?
1、分析接口之間的依賴關(guān)系
2、分析接口請求(如:URL、請求方法、請求頭、請求參數(shù)類型、請求參數(shù)等)
3、分析接口響應(yīng)(如:響應(yīng)狀態(tài)碼、響應(yīng)數(shù)據(jù)等)
根據(jù)接口文檔的信息即業(yè)務(wù)的執(zhí)行流程,可以給出新增合同成功的測試用例。這七個接口就相當(dāng)于完成新增合同業(yè)務(wù)的正向流程。
3.2、登錄接口調(diào)式——獲取驗證碼
1、需求:使用Postman訪問驗證碼接口,并查看響應(yīng)結(jié)果。
2、地址:http://kdtx-test.itheima.net/api/captchalmage?
3、請求方法:Get
4、實(shí)現(xiàn)步驟:設(shè)置請求方式;輸入接口地址;點(diǎn)擊發(fā)送請求;查看響應(yīng)結(jié)果。
如下圖所示:
3.3、登錄接口調(diào)試——登錄
1、需求:使用Postman訪問驗證碼接口,并查看響應(yīng)結(jié)果。
2、地址: http://kdtx-test.itheima.net/api/login
3、請求方法:Post
4、請求數(shù)據(jù):
請求頭: Content-Type: application/json
請求體:{"username":"manager","password","123456","code","2","uuid":"驗證碼接口返回結(jié)果中的數(shù)據(jù)值"}
5、實(shí)現(xiàn)步驟:設(shè)置請求方式;輸入接口地址;設(shè)置請求數(shù)據(jù);點(diǎn)擊發(fā)送請求;查看響應(yīng)結(jié)果
如圖所示:
3.4、如何使用Postman發(fā)送請求并查看響應(yīng)結(jié)果
1、設(shè)置請求方法
2、設(shè)置URL
3、設(shè)置請求頭
4、設(shè)置請求數(shù)據(jù)
5、點(diǎn)擊Send發(fā)送請求
6、查看響應(yīng)狀態(tài)碼
7、查看響應(yīng)體數(shù)據(jù)
3.5、Postman自動關(guān)聯(lián)
在3.2和3.3節(jié)中的操作,我們能發(fā)現(xiàn)以下問題,問題:每次登錄之前都需要手動復(fù)制驗證碼數(shù)據(jù)(uuid)。
可以使用以下思路解決該問題
關(guān)于公共容器的實(shí)現(xiàn),postman使用的是環(huán)境變量,如下所示:
切換到QA之后,就可以使用環(huán)境里面的數(shù)據(jù)?
案例分析:
需求:
1、驗證碼接口: /api/captchalmage
2、登錄接口: /api/login
3、登錄接口請求體uuid字段---》驗證碼接口返回uuid字段
分析:
1、驗證碼接口響應(yīng)體中提取uuid
2、設(shè)置環(huán)境變量保存uuid
3、登錄接口引用uuid
?
實(shí)現(xiàn):?
第一步,在獲取驗證碼接口輸入以下代碼,將uuid數(shù)據(jù)保存到環(huán)境變量
第二步,在登錄接口獲取uuid,直接在請求體中使用{{uuid}},即可引用環(huán)境變量中保存的uuid
總結(jié)
Postman自動關(guān)聯(lián)解決了什么技術(shù)問題?
接口之間需要自動傳遞數(shù)據(jù)。Postman自動關(guān)聯(lián)實(shí)現(xiàn)思路:
1、提取關(guān)聯(lián)數(shù)據(jù):var jsonData = pm.response.json()
2、保存關(guān)聯(lián)數(shù)據(jù):pm.environment.set("變量名", jsonData.屬性)3、引用關(guān)聯(lián)數(shù)據(jù):{{變量名}}
3.6、課程添加接口調(diào)試
接口信息:
URL:http://kdtx-test.itheima.net/api/clues/course
方法:Post
請求數(shù)據(jù):
請求頭:{"Content-Type":"application/json","Authorization":"xxx"}
請求體:{"name":"測試開發(fā)提升課01","subject":"6","price":899,"applicablePerson":"2","info":"測試開發(fā)提升課01"}
如圖所示:
設(shè)置請求方式,URL,請求體
添加課程接口需要登錄接口響應(yīng)的token值,因此需要通過Postman自動關(guān)聯(lián)技術(shù),將token值寫入環(huán)境變量。
在請求頭中引用token
3.7、上傳合同接口調(diào)試
接口信息:
URL:http://kdtx-test.itheima.net/api/common/upload
方法:Post
請求數(shù)據(jù):
請求頭:{"Content-Type":"multipart/form-data","Authorization":"xxx"}
請求體:{"file":"合同文件"}
思考:如何提交multipart/form-data數(shù)據(jù)?(multipart/form-data:多消息體數(shù)據(jù),可以有文字,可以有文件)
如圖所示:
設(shè)置請求方式,URL,請求頭,對于multipart/form-data格式在Postman中不需要手動設(shè)置,選對請求體中的位置即可。
在Body中選擇?form-data
?總結(jié):
Postman如何提交multipart/form-data請求數(shù)據(jù)?
1、設(shè)置請求方法2、設(shè)置URL
3、設(shè)置請求頭
4、設(shè)置請求數(shù)據(jù):[body -> form-data -> file選擇上傳文件
5、點(diǎn)擊Send發(fā)送請求
6、查看響應(yīng)狀態(tài)碼
7、查看響應(yīng)體數(shù)據(jù)
3.8、新增合同接口調(diào)試
接口信息:
地址:http://kdtx-test.itheima.net/api/contract
方法:Post
請求數(shù)據(jù):
請求頭:{"Content-Type":"application/json","Authorization":"xxx"}
請求體:{"name":"測試888","phone":"13612345678","contractNo":"HT10012003","subject":"6","courseld":" 99","channel":"0","activityId":77,"fileName":"xxx"}
設(shè)置請求方式,URL,請求頭
fileName來自于合同上傳接口的響應(yīng)數(shù)據(jù),因此需要通過Postman自動關(guān)聯(lián)技術(shù)將fileName寫入環(huán)境變量。
設(shè)置請求體數(shù)據(jù):
3.9、查詢合同列表接口調(diào)試
接口信息:
地址:http://kdtx-testitheima.net/api/contract/list
方法:Get
請求數(shù)據(jù):
請求頭:{"Authorization":"xxx"}
查詢參數(shù):"phone"="13612345678
思考:如何提交查詢參數(shù)?
設(shè)置請求方式,URL,請求頭
?方式一:通過url中拼接查詢參數(shù)?
方式二:在Postman的Params中添加
總結(jié):
Postman如何提交查詢參數(shù)?
設(shè)置在URL中
設(shè)置在Params區(qū)域
3.10、Postman批量執(zhí)行實(shí)現(xiàn)合同新增成功用例?
作用:通過運(yùn)行測試集的方式批量運(yùn)行測試用例
步驟:
1、點(diǎn)擊測試集中的“Run”按鈕,批量運(yùn)行測試用例;
2、彈出Collection Runner窗口,點(diǎn)擊運(yùn)行按鈕;
3、給出測試結(jié)果。
四、針對登錄接口進(jìn)行詳細(xì)測試
4.1、接口用例設(shè)計思路
單接口測試:
正向測試:1、必填參數(shù),P2;2、全部參數(shù),P2。
逆向測試:1、參數(shù)數(shù)據(jù)為空,P3;2、參數(shù)類型不符,P3;3.參數(shù)長度不符,P3;4.業(yè)務(wù)規(guī)則不符,P3。
4.2、項目登錄接口用例設(shè)計
需求:
已注冊正確的用戶名和密碼,登錄成功
用戶名或密碼錯誤,登錄失敗,提示"用戶名或密碼錯誤"
要求:
1、按照接口測試思路進(jìn)行測試點(diǎn)分析
2、從測試點(diǎn)轉(zhuǎn)化為測試用例
3、使用Postman進(jìn)行接口測試
4.2.1、提取測試點(diǎn)
?4.2.2、設(shè)計測試用例
以登錄成功,登錄失?。ㄓ脩裘麨榭眨?,登錄失?。ㄓ脩裘淮嬖冢?/p>
ID | 模塊 | 優(yōu)先級 | 用例名稱 | 接口名稱 | 前置條件 | 請求url | 請求方法 | 請求頭 | 請求參數(shù)類型 | 請求參數(shù) | 預(yù)期結(jié)果 |
KDTX-login-001 | 登錄 | P2 | 登錄成功 | 登錄 | 1、獲取驗證碼成功 | /api/login | POST | {"content-Type":"application/json"} | json | { "username":"manager", "password","123456", "code","2", "uuid":"a5762bc30ec74055a58dba2c63b01087" } |
①響應(yīng)狀態(tài)碼:200 ②響應(yīng)數(shù)據(jù): 登錄成功:{"msg":"操作成功","code":200,"token": "xxxxxx"} |
KDTX-login-002 | 登錄 | P3 | 登錄失敗(用戶名為空) | 登錄 | 1、獲取驗證碼成功 | /api/login | POST | {"content-Type":"application/json"} | json | { "username":"", "password","123456", "code","2", "uuid":"a5762bc30ec74055a58dba2c63b01087" } |
①響應(yīng)狀態(tài)碼:200 ②響應(yīng)數(shù)據(jù): 用戶名或密碼錯誤:{“msg":"用戶名或察碼錯誤”,"code": 500} |
KDTX-login-003 | 登錄 | P3 | 登錄失敗(未注冊的用戶名) | 登錄 | 1、獲取驗證碼成功 2、用戶名未注冊 |
/api/login | POST | {"content-Type":"application/json"} | json | { "username":"manager_auto", "password","123456", "code","2", "uuid":"a5762bc30ec74055a58dba2c63b01087" } |
①響應(yīng)狀態(tài)碼:200 ②響應(yīng)數(shù)據(jù): 用戶名或密碼錯誤:{“msg":"用戶名或察碼錯誤”,"code": 500} |
?4.2.3、使用Postman進(jìn)行接口測試
步驟:
? ? ? ? 1、點(diǎn)擊測試集中的“Add folder”添加文件夾管理測試用例
? ? ? ? 2、點(diǎn)擊文件夾上的“Add Request”添加請求實(shí)現(xiàn)測試用例
以登錄成功示例
前置條件獲取驗證碼成功,獲取驗證碼接口放入登錄文件夾
在登錄接口中引用uuid2
比較預(yù)期結(jié)果與響應(yīng)結(jié)果是否一致
總結(jié)
如何針對單個接口設(shè)計測試用例?
????????正向:必填參數(shù)、全部參數(shù)?
????????逆向:空、類型錯誤、長度錯誤、規(guī)則不符
五、Postman斷言
Postman斷言:讓Postman工具代替人工自動判定預(yù)期結(jié)果和實(shí)際結(jié)果是否一致。
用法:
5.1、?Postman斷言一一響應(yīng)狀態(tài)碼斷言
模板名稱:Status code: Code is 200
模板內(nèi)容:
5.2、Postman斷言--包含指定字符串?dāng)嘌?/h3>
模板名稱:Response body:Contains string
模板內(nèi)容:
5.3、Postman斷言——JSON數(shù)據(jù)斷言
模板名稱:Response body:JSON value check
模板內(nèi)容:
5.4、案例測試
針對KDTX項目登錄成功接口用例完成斷言設(shè)置
需求及分析:
1、斷言響應(yīng)狀態(tài)碼為200
2、斷言響應(yīng)數(shù)據(jù)中包含'成功'
3、斷言JSON數(shù)據(jù)中msg值為'操作成功'
postman設(shè)置:
?
?總結(jié):
1、斷言的作用是什么?
????????讓工具代替人工自動判斷預(yù)期結(jié)果和實(shí)際結(jié)果是否一致2、Postman常見斷言方式有哪些?
????????響應(yīng)狀態(tài)碼斷言????????包含字符串?dāng)嘌?/p>
????????JSON數(shù)據(jù)斷言
六、Postman參數(shù)化?
場景:測試腳本中僅測試數(shù)據(jù)不一樣,使用參數(shù)化提高腳本復(fù)用。
步驟:
1、測試數(shù)據(jù)保存在數(shù)據(jù)文件單獨(dú)維護(hù);
2、引用數(shù)據(jù)文件實(shí)現(xiàn)腳本循環(huán)調(diào)用。
6.1、Postman參數(shù)化實(shí)現(xiàn)
準(zhǔn)備數(shù)據(jù)文件
引用數(shù)據(jù)文件數(shù)據(jù)
?選擇數(shù)據(jù)文件:運(yùn)行測試集時選擇數(shù)據(jù)文件
6.2、針對KDTX項目登錄接口參數(shù)化實(shí)現(xiàn)
1、把設(shè)計的測試用例的json數(shù)據(jù)寫入文件
2、 修改請求體和斷言
修改請求體
修改斷言?
運(yùn)行時選擇數(shù)據(jù)文件
?
總結(jié):
1、參數(shù)化的作用是什么?
????????提高測試腳本復(fù)用性?2、Postman如何實(shí)現(xiàn)參數(shù)化?
? ? ? ? 1、準(zhǔn)備數(shù)據(jù)文件
? ? ? ? 2、引用數(shù)據(jù)文件????????????????請求參數(shù)中獲取:{{變量名}}
????????????????代碼中獲取: data.變量名? ? ? ? 3、批量執(zhí)行測試用例
七、 針對課程添加接口進(jìn)行詳細(xì)測試
7.1、課程添加接口文檔
7.2、設(shè)計測試用例?
需求:
必填參數(shù):
????????課程名稱(不超過30個字符)
????????課程學(xué)科(1位數(shù)字,0-->java,1-->前端,6-->測試)
????????課程價格(1~5位數(shù)字)
????????適用人群(1位數(shù)字,1-->小白,2-->中級程序員)
非必填參數(shù):
????????課程介紹(不超過200個字符)
要求:
1、按照接口測試思路進(jìn)行測試點(diǎn)分析
2、從測試點(diǎn)轉(zhuǎn)化為測試用例
3、使用Postman進(jìn)行接口測試?
正向測試:1、必填參數(shù),P2;2、全部參數(shù),P2。
逆向測試:1、參數(shù)數(shù)據(jù)為空,P3;2、參數(shù)類型不符,P3;3.參數(shù)長度不符,P3;4.業(yè)務(wù)規(guī)則不符,P3。
測試點(diǎn):
根據(jù)測試點(diǎn)設(shè)計測試用例,參考第四節(jié)。?
八、? 針對查詢課程列表接口進(jìn)行詳細(xì)測試
8.1、查詢課程列表接口文檔
8.2、設(shè)計測試用例?
需求
支持課程名稱、課程學(xué)科、課程價格、適用人群、課程介紹的單條件查詢?
支持課程名稱、課程學(xué)科、課程價格、適用人群、課程介紹的組合條件查詢
查詢存在滿足條件課程信息時,返回該課程信息
查詢不存在滿足條件課程信息時,返回空值
要求:
1、按照接口測試思路進(jìn)行測試點(diǎn)分析
2、從測試點(diǎn)轉(zhuǎn)化為測試用例
3、使用Postman進(jìn)行接口測試
測試點(diǎn)分析:
?
?九、? 針對課程修改接口進(jìn)行詳細(xì)測試
9.1、課程修改接口文檔
9.2、設(shè)計測試用例?
需求:
課程ID (數(shù)字、必填)?
要求:
1、按照接口測試思路進(jìn)行測試點(diǎn)分析
2、從測試點(diǎn)轉(zhuǎn)化為測試用例
3、使用Postman進(jìn)行接口測試?
測試點(diǎn)分析:
?
?十、? 針對課程刪除接口進(jìn)行詳細(xì)測試
10.1、課程刪除接口文檔
10.2、設(shè)計測試用例
需求:
課程ID (數(shù)字、必填)?
要求:
1、按照接口測試思路進(jìn)行測試點(diǎn)分析
2、從測試點(diǎn)轉(zhuǎn)化為測試用例
3、使用Postman進(jìn)行接口測試?
提取測試點(diǎn):文章來源:http://www.zghlxwxcb.cn/news/detail-802952.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-802952.html
到了這里,關(guān)于Postman實(shí)現(xiàn)接口自動化測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!