前言
最近在找工作淘捡,因?yàn)槭亲黾兎?wù)端測(cè)試的藕各,所以面試過程中面試官難免會(huì)問,怎么設(shè)計(jì)接口測(cè)試用例焦除,怎么做接口自動(dòng)化測(cè)試激况?會(huì)象征性的考一下基本功。
下面就接口測(cè)試,或者說服務(wù)端測(cè)試乌逐,梳理一下我的思路吧~
一竭讳、什么是接口
Q:什么是接口?
A:舉個(gè)例子吧浙踢,渴了想喝水绢慢,旁邊剛好有個(gè)飲水機(jī),水龍頭就是一個(gè)接口
那么在程序中道理也是一樣的洛波,你在應(yīng)用程序上買衣服胰舆、訂餐、租房子蹬挤、訂機(jī)票這些衣食住行缚窿,其實(shí)都在訪問對(duì)應(yīng)程序的接口。
以我下面要舉的例子說明:
有個(gè)登錄頁面焰扳,你要登上網(wǎng)站倦零,就需要輸入你的賬號(hào)密碼,把賬號(hào)密碼作為請(qǐng)求參數(shù)打登錄接口吨悍,這時(shí)客戶端會(huì)給服務(wù)器發(fā)個(gè)登錄請(qǐng)求扫茅,服務(wù)器鑒權(quán)和校驗(yàn)通過之后,就登上去了畜份。
到這里就完成了一次接口的請(qǐng)求诞帐,或者說跑完了一條接口測(cè)試用例。
二爆雹、常見的接口請(qǐng)求類型有哪些停蕉?
常用的接口請(qǐng)求類型有:post get put delete
平常面試會(huì)問到get和post的區(qū)別,不懂百度一下
那么钙态,要設(shè)計(jì)接口測(cè)試用例慧起,首先需要接口契約,也就是接口文檔册倒。
接口文檔長(zhǎng)啥樣蚓挤,看下面~
三、接口文檔范例
測(cè)試功能為登錄頁面:https://xxx/account/signin(url我打碼了)
接口地址:https://xxx/account/signin(想了想接口也打碼吧驻子,畢竟是要收費(fèi)的)
請(qǐng)求方式:POST
接口描述:某網(wǎng)站登錄接口
【接口入?yún)ⅰ?/p>
【接口返回】
【接口請(qǐng)求示例】
{
"account": "1801367@qq.com",
"password": "191004"
}
【接口返回示例】
{
"code": 0,
"msg": "",
"data": {
"name": null,
"avatar": null,
"id": "7",
"account": "18067@qq.com",
"role": 3
}
}
了解了接口契約灿意,怎么設(shè)計(jì)接口測(cè)試用例呢,請(qǐng)繼續(xù)往下看崇呵。
四缤剧、怎么設(shè)計(jì)接口測(cè)試用例
首先你得有個(gè)框架
測(cè)接口也測(cè)了好幾年了,梳理一份用例模板域慷,簡(jiǎn)單參考下荒辕,不全的歡迎補(bǔ)充~
所以基于這套模板汗销,我們可以設(shè)計(jì)一下接口契約中的登錄接口的用例
五、基于登錄接口設(shè)計(jì)測(cè)試用例
1.參數(shù)校驗(yàn)
-
account
- 必填:不填抵窒,空字符串弛针,傳null,不傳該字段
- 字符串類型:傳int型或其他類型
- 長(zhǎng)度校驗(yàn):假如范圍[1-20]李皇,小于1削茁、大于20,在1-20范圍內(nèi),傳超長(zhǎng)
- 枚舉:無
-
password
- 必填:不填,空字符串刨肃,傳null孽文,不傳該字段
- 字符串類型:傳int型或其他類型
- 長(zhǎng)度校驗(yàn):假如范圍[1-20],小于1璧帝、大于20捍岳,在1-20范圍內(nèi),傳超長(zhǎng)
- 枚舉:無
2.參數(shù)組合
- 賬號(hào)密碼正確睬隶,登錄成功锣夹,返回?cái)?shù)據(jù)拿到用戶角色及用戶信息
- 賬號(hào)錯(cuò),密碼對(duì)苏潜,登錄失敗银萍,code1
- 賬號(hào)對(duì),密碼錯(cuò)恤左,登錄失敗贴唇,code1
- 賬號(hào)錯(cuò),密碼錯(cuò)飞袋,登錄失敗戳气,code1
3.業(yè)務(wù)邏輯
- 數(shù)據(jù)流轉(zhuǎn):登錄賬號(hào)為數(shù)據(jù)庫(kù)成員,登上去后接口返回data為數(shù)據(jù)庫(kù)查到的數(shù)據(jù)
- 權(quán)限:管理員賬號(hào)巧鸭、普通用戶賬號(hào)瓶您、運(yùn)營(yíng)賬號(hào)
- 賬號(hào)類型:qq郵箱、企業(yè)郵箱或其他類型郵箱纲仍,正常登錄呀袱,手機(jī)號(hào)不支持
- 多端登錄是否有邏輯處理,要不要限制有最多幾個(gè)用戶登錄
4.安全性
- 密碼明文可見
- 抓包不能抓到
- 登錄鑒權(quán)郑叠,前端和服務(wù)端都要做
- token時(shí)效性
- sql注入
5.性能
- 響應(yīng)時(shí)間200ms
- 并發(fā)數(shù)(登錄我感覺沒必要考慮高并發(fā)夜赵,具體業(yè)務(wù)場(chǎng)景具體分析)
6.日志
- 測(cè)接口時(shí),關(guān)注日志
7.監(jiān)控
- 接口功能上線了锻拘,要關(guān)注下業(yè)務(wù)請(qǐng)求和各種異常監(jiān)控
六油吭、接口測(cè)試常用什么工具
- postman
- jmeter
- linux命令 curl 發(fā)一個(gè)接口請(qǐng)求
- python击蹲、java寫腳本
以上都可以,第四個(gè)用于做接口自動(dòng)化測(cè)試
七婉宰、接口自動(dòng)化測(cè)試思路
第一步:把手工case通過寫代碼的方式歌豺,轉(zhuǎn)成自動(dòng)化測(cè)試的case心包,設(shè)置case的斷言类咧,然后去跑這批case讓他自動(dòng)執(zhí)行,先讓代碼可以粗陋的跑起來
第二步:減少重復(fù)性代碼蟹腾,把測(cè)試數(shù)據(jù)整合做成參數(shù)化讀取痕惋,進(jìn)行數(shù)據(jù)驅(qū)動(dòng)
第三步:優(yōu)化代碼可讀性,抽離通用模塊
八娃殖、接口自動(dòng)化測(cè)試實(shí)戰(zhàn)演練
完成第一步值戳,很簡(jiǎn)單,寫出來一個(gè)炉爆,其他的復(fù)制粘貼堕虹,改斷言,改參數(shù)
那么問題是什么芬首?
- 新增一條用例赴捞,我要在代碼里改一條,參數(shù)也放在代碼里郁稍,看起來累赦政,改起來也很累。
完成第二步耀怜,把用例放在excel中恢着,通過pytest自帶的裝飾器進(jìn)行參數(shù)化
這里解決了第一步改參數(shù)的問題,但是這里依然存在問題
- 代碼重復(fù)量大封寞,后面再增加一條用例然评,那塊重復(fù)的要再寫一遍
- 獲取excel數(shù)據(jù)的方法放在測(cè)試用例中,代碼可讀性差狈究,我們的測(cè)試用例最好不要包含前置條件碗淌。
完成第三步,提取讀excel數(shù)據(jù)部分抖锥,放在單獨(dú)的文件中亿眠,把參數(shù)轉(zhuǎn)換和發(fā)起請(qǐng)求這部分提起來。
同時(shí)優(yōu)化了一下獲取excel數(shù)據(jù)部分磅废,上一步我們是讀區(qū)域纳像,這樣可擴(kuò)展性差,如果后期我要在excel里加用例拯勉,就需要改這塊的區(qū)域竟趾,所以讓他直接讀這一列憔购,這樣后期隨便加不影響。
這樣看著就清爽多了岔帽,加用例玫鸟,只需要改excel,然后在testcase中加用例犀勒,而用例里基本上就實(shí)現(xiàn)斷言就行屎飘。
如果還想加一些日志,或者需要查庫(kù)做斷言等等贾费,可以再優(yōu)化下钦购。
碼字不易,轉(zhuǎn)載請(qǐng)注明出處褂萧,謝謝~
閱完可以留個(gè)小心心押桃,關(guān)注一下,還有公眾號(hào)导犹,謝謝~
說明一下文中用到的示例是「靈題庫(kù)」的接口怨规,有前端刷題需要的可以關(guān)注下