




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Python接口自動(dòng)化淺析登錄接口測(cè)試實(shí)戰(zhàn)目錄1、什么是接口?那么,接口測(cè)試和功能測(cè)試的區(qū)別在哪呢?2、如何開展接口測(cè)試?3、如何設(shè)計(jì)接口用例?1.獲取接口文檔Fiddler2.分析接口文檔的接口,提取測(cè)試點(diǎn)3.接口測(cè)試用例設(shè)計(jì)思路4.接口測(cè)試其他范圍接口業(yè)務(wù)測(cè)試接口的性能測(cè)試接口安全測(cè)試在項(xiàng)目下新建一個(gè)文件夾common編寫登錄接口用例,調(diào)用封裝的請(qǐng)求類。對(duì)于用例的一些總結(jié):4、接口測(cè)試用例實(shí)戰(zhàn)在上一篇Python接口自動(dòng)化測(cè)試系列文章:Python接口自動(dòng)化淺析unittest單元測(cè)試原理,主要介紹單元測(cè)試,unittest模塊特性、大致流程、源碼及實(shí)戰(zhàn)例子。
以下主要介紹接口概念、接口用例設(shè)計(jì)及登錄接口測(cè)試實(shí)戰(zhàn)。
1、什么是接口?
接口:檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。
通俗來說,接口就是連接前后端的橋梁,接口測(cè)試可以簡(jiǎn)單理解為脫離了前端的功能測(cè)試。
一個(gè)又一個(gè)的接口就對(duì)應(yīng)功能測(cè)試內(nèi)一個(gè)又一個(gè)的功能。
但注意,一個(gè)功能有可能不是一個(gè)接口就能實(shí)現(xiàn)。
那么,接口測(cè)試和功能測(cè)試的區(qū)別在哪呢?
其實(shí)功能測(cè)試就是在頁面上輸入我們的參數(shù)值,點(diǎn)點(diǎn)點(diǎn);
而接口測(cè)試沒有前端,而是通過接口文檔上的調(diào)用地址、請(qǐng)求參數(shù)等,校驗(yàn)返回的結(jié)果值,
也就是說,接口可以看成沒有界面的功能測(cè)試。
因此,可以分析,系統(tǒng)間的接口包含三部分:輸入、處理邏輯、輸出。
2、如何開展接口測(cè)試?
接口測(cè)試流程如下:
1.需求評(píng)審,熟悉業(yè)務(wù)和需求;
2.開發(fā)提供API接口文檔;
3.根據(jù)開發(fā)交付的接口文檔,編寫接口測(cè)試用例;
4.接口測(cè)試用例評(píng)審;
5.開始執(zhí)行接口測(cè)試;
6.提交測(cè)試報(bào)告;
3、如何設(shè)計(jì)接口用例?
1.獲取接口文檔
一般公司的開發(fā)會(huì)提供接口文檔,沒有接口文檔的自行抓包吧(摸摸頭),不知道怎么抓包的小伙伴,可以看看之前的Fiddler系列文章。
Fiddler
接口文檔是我們測(cè)試時(shí)最重要的一個(gè)依據(jù),一個(gè)規(guī)范的接口文檔至少包括:
1.接口說明;
2.調(diào)用URL;
3.請(qǐng)求方法(get、post等);
4.請(qǐng)求參數(shù)、參數(shù)類型、請(qǐng)求參數(shù)說明等;
5.返回參數(shù)說明;
如下為一個(gè)簡(jiǎn)單的登錄接口文檔:
2.分析接口文檔的接口,提取測(cè)試點(diǎn)
接口測(cè)試用例跟常規(guī)的功能測(cè)試用例基本一樣,
可以從接口功能測(cè)試、接口業(yè)務(wù)測(cè)試、接口性能測(cè)試、接口安全測(cè)試等角度考慮。
接口的邏輯校驗(yàn),可以參照接口流程圖來進(jìn)行設(shè)計(jì),一個(gè)分支需要作為一個(gè)場(chǎng)景去進(jìn)行測(cè)試,需要覆蓋到流程圖里面所有的邏輯分支。
接口的參數(shù)校驗(yàn),可以參照接口文檔中的參數(shù)定義去進(jìn)行驗(yàn)證,需要覆蓋到所有參數(shù)對(duì)應(yīng)的枚舉值以及錯(cuò)誤碼等信息。
3.接口測(cè)試用例設(shè)計(jì)思路
接口功能的關(guān)注點(diǎn)是:
1.接口參數(shù)正確與否:接口傳入的參數(shù)是否有正確填寫;
2.接口參數(shù)缺失:接口參數(shù)有必填、選填參數(shù),傳參時(shí),測(cè)試參數(shù)缺失對(duì)結(jié)果的影響;
3.接口參數(shù)邊界值:比如用戶名、密碼有長(zhǎng)度限制,需要測(cè)試不同長(zhǎng)度的參數(shù)對(duì)結(jié)果的影響;
4.接口參數(shù)類型:比如接口文檔中用戶名為String類型,測(cè)試傳入其他數(shù)據(jù)類型對(duì)結(jié)果的影響。
4.接口測(cè)試其他范圍
接口業(yè)務(wù)測(cè)試
主要是從業(yè)務(wù)的角度出發(fā),把接口組合成一條業(yè)務(wù)鏈,比如登錄之后充值,在數(shù)據(jù)庫中金額是否正確等等
接口的性能測(cè)試
是指接口是否滿足業(yè)務(wù)的要求,比如業(yè)務(wù)要求系統(tǒng)可以滿足50個(gè)人同時(shí)下單,那么下單這個(gè)接口就要可以承擔(dān)50TPS,目前業(yè)內(nèi)一般使用JMETER去做接口性能測(cè)試,jmeter接口性能后續(xù)會(huì)單獨(dú)在Jmeter系列文章里介紹。
接口安全測(cè)試
接口的安全性主要圍繞Token、Timestamp和Sign三個(gè)機(jī)制展開設(shè)計(jì),保證接口的數(shù)據(jù)不會(huì)被篡改和重復(fù)調(diào)用。
注意:本文主要涉及接口功能測(cè)試,相信做過功能測(cè)試的童鞋,設(shè)計(jì)接口測(cè)試用例也是沒問題的。
4、接口測(cè)試用例實(shí)戰(zhàn)
以下,我們以登錄接口進(jìn)行實(shí)戰(zhàn)。
隨著代碼模塊越來越多,混在一起,雜亂無章,這時(shí)我們考慮架構(gòu)分層了,上篇文章:Python接口自動(dòng)化之requests請(qǐng)求封裝,封裝的requests請(qǐng)求類,每個(gè)用例都要調(diào)用,可以放在公共模塊里。
在項(xiàng)目下新建一個(gè)文件夾common
放入請(qǐng)求模塊requests_handler.py
requests_handler.py
importrequests
classRequestsHandler:
def__init__(self):
"""session管理器"""
self.session=requests.session()
defvisit(self,method,url,params=None,data=None,json=None,headers=None):
result=self.session.request(method,url,params=params,data=data,json=json,headers=headers)
try:
#返回json結(jié)果
returnresult.json()
exceptException:
return'notjson'
defclose_session(self):
self.session.close()
編寫登錄接口用例,調(diào)用封裝的請(qǐng)求類。
登錄用例,新建一個(gè)test_cases文件夾,用來存放用例模塊。
test_Login.py
importunittest
fromcommon.requests_handlerimportRequestsHandler
classLoginTest(unittest.TestCase):
defsetUp(self):
#請(qǐng)求類實(shí)例化
self.req=RequestsHandler()
deftearDown(self):
self.req.close_session()
deftest_login_success(self):
login_url=':8000/user/login'
payload={
"mobile_phone":"1530272****",
"pwd":"12345678"
res=self.req.visit('post',login_url,json=payload)
self.assertEqual(0,res['code'])
if__name__=='__main__':
unittest.main()
運(yùn)行結(jié)果為:
Ran1testin0.213s
OK
對(duì)于用例的一些總結(jié):
setUp,tearDown
前置條件,后置條件,setUp實(shí)例化,在運(yùn)行測(cè)試用例前獲取session管理器,tearDown,在測(cè)試用例執(zhí)行結(jié)束后關(guān)閉session管理器。
小伙伴們可能不知道到底用返回結(jié)果中的哪個(gè)字段斷言。個(gè)人意見,如果code、msg比較詳細(xì)的話,可以利用code、msg其中一個(gè)來斷言,當(dāng)然code、msg一起做斷言也可以,甚至你覺得返回結(jié)果中某個(gè)數(shù)據(jù)符合你的預(yù)期,也是可以拿來斷言,斷言手段是靈活多變的,自行選擇最優(yōu)方案。
小伙伴們看到總結(jié),退出微信,打開王者榮耀,一氣呵成,其實(shí)還沒完呢,我們寫了正向用例,還有異常用例也寫兩條,更多的異常用例可以自行擴(kuò)展下。
importunittest
fromcommon.requests_handlerimportRequestsHandler
classLoginTest(unittest.TestCase):
defsetUp(self):
#請(qǐng)求類實(shí)例化
self.req=RequestsHandler()
deftearDown(self):
#關(guān)閉session
self.req.close_session()
deftest_login_success(self):
正確手機(jī)號(hào),正確密碼
login_url=':8000/user/login'
payload={
"mobile_phone":"1530272****",
"pwd":"12345678"
res=self.req.visit('post',login_url,json=payload)
#根據(jù)請(qǐng)求結(jié)果中的code進(jìn)行斷言
self.assertEqual(0,res['code'])
deftest_phone_is_null(self):
手機(jī)號(hào)為空,密碼正確
login_url=':8000/user/login'
payload={
"mobile_phone":"",
"pwd":"12345678"
res=self.req.visit('post',login_url,json=payload)
#根據(jù)返回結(jié)果中的msg進(jìn)行斷言
self.assertEqual("手機(jī)號(hào)碼為空",res['msg'])
deftest_pwd_is_null(self):
正確用戶名,密碼為空
login_url=':8000/user/login'
payload={
"mobile_phone":"1530272****",
"pwd":""
res=self.req.visit('post',login_url,json=payload)
#根據(jù)返回結(jié)果中的msg進(jìn)行斷言
self.assertEqual("密碼為空",res['m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 天氣預(yù)報(bào)介紹課件
- 2025年鋼鐵板材市場(chǎng)分析報(bào)告
- 中國(guó)鋰固態(tài)電池行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 奶牛酮病研究進(jìn)展
- 教師志愿者合同協(xié)議書
- 健康搞笑課件
- 創(chuàng)業(yè)計(jì)劃書基于人工智能的智能家居解決方案
- 轉(zhuǎn)租協(xié)議書范本合同
- 2025年中國(guó)海產(chǎn)干貨制品原料市場(chǎng)分析研究報(bào)告
- 新版污水處理站建設(shè)項(xiàng)目可行性研究報(bào)告
- 發(fā)電機(jī)組行業(yè)商業(yè)計(jì)劃書
- 《公路斜拉橋設(shè)計(jì)規(guī)范》(JTGT 3365-01-2020)正式版
- 南京市小學(xué)英語六年級(jí)小升初期末試卷(含答案)
- 脫碳塔CO2脫氣塔設(shè)計(jì)計(jì)算
- 國(guó)開電大本科《理工英語3》機(jī)考真題(第005套)
- 學(xué)校生活垃圾清運(yùn)合同范本
- 水文地質(zhì)學(xué)基礎(chǔ) 15.地下水與環(huán)境
- 地質(zhì)災(zāi)害治理工程施工質(zhì)量驗(yàn)收表
- 葫蘆島市白狼山新一代天氣雷達(dá)塔樓及配套基礎(chǔ)設(shè)施建設(shè)項(xiàng)目環(huán)評(píng)報(bào)告
- 2023-2024學(xué)年云南省開遠(yuǎn)市小學(xué)數(shù)學(xué)三年級(jí)下冊(cè)期末深度自測(cè)考試題
- 新時(shí)代三會(huì)一課(講解)
評(píng)論
0/150
提交評(píng)論