今天,成都樂搏軟件測(cè)試培訓(xùn)學(xué)校的小編來給大家來講講軟件測(cè)試之接口自動(dòng)化面試題,下面這篇文章是由成都樂搏軟件測(cè)試培訓(xùn)學(xué)校的小編精心撰寫的,快來看看吧!希望能夠?qū)δ阌兴鶐椭?br />
請(qǐng)問你是如何做接口測(cè)試的?
大體來說,經(jīng)歷以下過程:接口需求調(diào)研、接口測(cè)試工具選擇、接口測(cè)試用例編寫、接口測(cè)試執(zhí)行、接口測(cè)試回歸、接口測(cè)試自動(dòng)化持續(xù)集成。具體來說,接口測(cè)試流程分成以下九步:
步:分析出測(cè)試需求,并請(qǐng)開發(fā)提供接口說明文檔;
第二步:從接口說明文檔中整理出接口測(cè)試用例,里面要包括詳細(xì)的入?yún)ⅲㄕG闆r,異常情況包括輸入?yún)?shù)個(gè)數(shù),類型,可選/必選,考慮參數(shù)有互斥或關(guān)聯(lián)的情況)和出參數(shù)據(jù)(符合接口文檔需求)以及明確的格式和檢查點(diǎn);
第三步:與開發(fā)一起對(duì)接口測(cè)試用例進(jìn)行評(píng)審;
第四步:結(jié)合開發(fā)庫,準(zhǔn)備接口測(cè)試用例中的入?yún)?shù)據(jù)和出參數(shù)據(jù),并整理成Excel格式的文件;
第五步:結(jié)合接口測(cè)試用例文檔和Excel格式的數(shù)據(jù)文檔,編寫接口自動(dòng)化測(cè)試的業(yè)務(wù)邏輯代碼;
第六步:開始執(zhí)行接口自動(dòng)化測(cè)試用例;
第七步:執(zhí)行如有bug,提交至缺陷管理平臺(tái);
第八步:開發(fā)修改完成后,回歸bug,跟蹤狀態(tài);
第九步:完成后進(jìn)行自動(dòng)化持續(xù)集成;
二
接口測(cè)試如何設(shè)計(jì)測(cè)試用例?
主要從四個(gè)方面來設(shè)計(jì)接口用例:功能,業(yè)務(wù)邏輯,異常,安全。
功能:是否符合需求
1)從用戶角度出發(fā)看接口能否實(shí)現(xiàn)業(yè)務(wù)需求,功能是否正常;
2)功能是否按照接口文檔實(shí)現(xiàn);
舉例:比如博客園添加隨筆,需要登錄才能添加。也就是業(yè)務(wù)要求不支持游客添加隨筆功能,如果設(shè)計(jì)一個(gè)沒有登錄的用戶,然后去測(cè)試添加隨筆接口,結(jié)果接口能添加到隨筆,說明功能不正常,不符合需求和接口文檔描述。
業(yè)務(wù)邏輯:是否依賴業(yè)務(wù)
1)接口實(shí)現(xiàn)邏輯;
2)業(yè)務(wù)邏輯覆蓋(語句/條件/分支/判定/…);
舉例:該接口調(diào)用之前,需要調(diào)用登錄接口,如果不登錄也能請(qǐng)求數(shù)據(jù),不符合業(yè)務(wù)邏輯。
異常:參數(shù)異常和數(shù)據(jù)異常
1)參數(shù)異常:關(guān)鍵字參數(shù),參數(shù)為空,多,少參數(shù),錯(cuò)誤參數(shù);
2)數(shù)據(jù)異常:關(guān)鍵字?jǐn)?shù)據(jù),數(shù)據(jù)為空,長(zhǎng)度不一致,錯(cuò)誤數(shù)據(jù);
舉例:不管數(shù)據(jù)異常還是參數(shù)異常,測(cè)試點(diǎn)差不多,一個(gè)參數(shù)有key和value,key表示參數(shù),value表示數(shù)據(jù)。,看看參數(shù)和數(shù)據(jù)能不能支持關(guān)鍵字,例如Java中的保留關(guān)鍵字等等;第二就是參數(shù)和數(shù)據(jù)都為空,看看是否做了判斷;第三,參數(shù)多和少,例如有兩個(gè)參數(shù)的接口,需要設(shè)計(jì)一個(gè)包含三個(gè)參數(shù)的用例,一個(gè)只有一個(gè)參數(shù)的用例。數(shù)據(jù)長(zhǎng)度不一致,例如設(shè)計(jì)很長(zhǎng)的字符串是否支持,因?yàn)閿?shù)據(jù)庫創(chuàng)建表過程都設(shè)置好了每個(gè)字段的長(zhǎng)度。輸入錯(cuò)誤的參數(shù)和數(shù)據(jù),如故意輸錯(cuò)單詞等等。
安全測(cè)試用例設(shè)計(jì):
1)cookie:有cookie才能獲取數(shù)據(jù),如果不帶cookie還有信息返回,說明有問題;
2)header:正常接口帶header信息,刪除header看是否能夠返回?cái)?shù)據(jù);
3)唯一識(shí)別碼:app手機(jī)識(shí)別碼,一般是唯一的;
4)文本輸入框sql注入和xss攻擊。
三
接口測(cè)試執(zhí)行中需要比對(duì)數(shù)據(jù)庫嗎?
接口的返回關(guān)鍵字段和字段值是需要校驗(yàn)的,不然接口測(cè)試就沒有意義了。
一般有兩種方式:
1)數(shù)據(jù)庫預(yù)置數(shù)據(jù),接口校驗(yàn)返回;
2)接口調(diào)用,比對(duì)數(shù)據(jù)庫查詢結(jié)果。
四
接口測(cè)試質(zhì)量評(píng)估標(biāo)準(zhǔn)是什么?
一般來說,從以下八個(gè)方面評(píng)估:
1)業(yè)務(wù)功能覆蓋是否完整;
2)業(yè)務(wù)規(guī)則覆蓋是否完整;
3)參數(shù)驗(yàn)證是否達(dá)到要求(邊界、業(yè)務(wù)規(guī)則);
4)接口異常場(chǎng)景覆蓋是否完整;
5)接口覆蓋率是否達(dá)到要求;
6)代碼覆蓋率是否達(dá)到要求;
7)性能指標(biāo)是否滿足要求;
8)安全指標(biāo)是否滿足要求;
五
接口產(chǎn)生的垃圾數(shù)據(jù)如何清理
造數(shù)據(jù)和數(shù)據(jù)清理,需用Python連數(shù)據(jù)庫了,做增刪改查的操作測(cè)試用例前置操作。
setUp做數(shù)據(jù)準(zhǔn)備后置操作;
tearDown做數(shù)據(jù)清理;
六
其他接口要先獲取接口信息,如何讓登錄的接口只在其他接口調(diào)用一次?
解決方法如下:
使用單例模式;
使用自定義緩存機(jī)制;
使用測(cè)試框架中的setup機(jī)制;
pytest中fixture機(jī)制;
七
接口測(cè)試斷言從哪些方面去設(shè)計(jì)?
接口測(cè)試斷言可以從以下五個(gè)方面進(jìn)行設(shè)計(jì):
圖片
1)響應(yīng)碼:檢查響應(yīng)碼是否符合預(yù)期,用來判斷測(cè)試用例是否執(zhí)行成功(針對(duì)http接口);
2)關(guān)鍵字:驗(yàn)證關(guān)鍵字是否符合預(yù)期,用來判斷測(cè)試用例是否執(zhí)行成功;
3)正則匹配:當(dāng)一個(gè)接口返回的內(nèi)容較多,并且有一定規(guī)律時(shí),可通過正則表達(dá)式來校驗(yàn)接口返回的信息來判定測(cè)試用例是否執(zhí)行成功;
4)數(shù)據(jù)庫匹配核對(duì):比如對(duì)查詢一個(gè)接口返回的數(shù)據(jù)進(jìn)行驗(yàn)證時(shí),可通過編寫sql語句查詢結(jié)果,然后將sql語句執(zhí)行后數(shù)據(jù)庫返回的結(jié)果與接口返回的結(jié)果進(jìn)行核對(duì),以此來判定測(cè)試用例是否執(zhí)行成功;
5)通過相關(guān)接口進(jìn)行輔助驗(yàn)證:比如,當(dāng)測(cè)試一個(gè)刪除接口時(shí),刪除一條記錄后,想驗(yàn)證這條記錄真的被刪除,可調(diào)用查詢接口,若刪除的記錄沒被查詢到,則說明刪除這條記錄成功。
八
依賴于第三方數(shù)據(jù)的接口如何進(jìn)行測(cè)試?
可以利用一些Mock工具(如:JSON Server、Easy Mock)來模擬第三方的數(shù)據(jù)返回,限度的降低對(duì)第三方數(shù)據(jù)接口的依賴。Mock服務(wù)是指在測(cè)試過程中對(duì)于某些復(fù)雜(或者不太好構(gòu)造)的對(duì)象,用一個(gè)虛擬的對(duì)象替代它。如現(xiàn)在有A和B兩個(gè)接口,A需要調(diào)用接口B才能完成業(yè)務(wù)需求。這個(gè)時(shí)候B接口有如下三種情況:
1)B接口還沒有開發(fā)完成:需要等待接口的數(shù)據(jù)來進(jìn)行開發(fā),這時(shí)候完善的接口Mock服務(wù)能大大縮短開發(fā)聯(lián)調(diào)等待時(shí)間。
2)B的某些場(chǎng)景很難去模擬:比如超時(shí)、未知錯(cuò)誤或者不穩(wěn)定的第三方接口。
3)性能測(cè)試中隔離B接口(第三方接口):在進(jìn)行壓測(cè)的時(shí)候就會(huì)遇到問題。
九
API測(cè)試有哪些優(yōu)勢(shì)?
API是(Application Programming Interface),即應(yīng)用程序編程接口。API是一組用于構(gòu)建軟件應(yīng)用程序的規(guī)程,協(xié)議和工具。API充當(dāng)軟件應(yīng)用程序之間的接口,并允許兩個(gè)軟件應(yīng)用程序相互通信。API是一組軟件功能,可以由其他軟件執(zhí)行。API測(cè)試具備如下優(yōu)勢(shì):
更快及更高的測(cè)試覆蓋率。
API測(cè)試有助于我們降低測(cè)試成本。通過API測(cè)試,我們可以在GUI測(cè)試之前找到小錯(cuò)誤。在GUI測(cè)試期間,這些小錯(cuò)誤將變得更大。因此,在API測(cè)試中發(fā)現(xiàn)這些錯(cuò)誤將對(duì)企業(yè)具有成本效益。
API測(cè)試與語言無關(guān)。
API測(cè)試在測(cè)試核心功能方面非常有用。我們可以在沒有用戶界面的情況下測(cè)試API。在GUI測(cè)試中,我們需要等到應(yīng)用程序可用于測(cè)試核心功能。
API測(cè)試有助于我們降低風(fēng)險(xiǎn)。
十
接口調(diào)不通,如何去排查?
接口調(diào)不通的原因:
圖片
1)接口沒有任何響應(yīng)
很多時(shí)候在做接口測(cè)試時(shí),會(huì)發(fā)現(xiàn)接口沒有任何返回,比如瀏覽器一直在轉(zhuǎn)圈,或者返回一個(gè)空白頁面。用接口測(cè)試工具時(shí),工具報(bào)錯(cuò),提示“no response”。
排查思路:
1.先檢查接口ip是否正確,可以通過在本機(jī)ping接口的ip,檢查網(wǎng)絡(luò)是否通暢;
2.檢查接口的端口號(hào)是否正確,可以通過在本機(jī)telnet接口的ip和端口號(hào),檢查端口是否能連通;
3.檢查項(xiàng)目是否啟動(dòng)或者部署成功,可以找研發(fā)確認(rèn),或者自己登錄到服務(wù)器上,通過ps命令檢查項(xiàng)目的進(jìn)程是否存在,然后用tail命令查看部署日志;
4.檢查服務(wù)器防火墻是否關(guān)閉,如果因?yàn)榘踩蛘邫?quán)限問題不能關(guān)閉,需要找運(yùn)維進(jìn)行策略配置,開放對(duì)應(yīng)的ip和端口號(hào);
5.檢查你的客戶端(瀏覽器/測(cè)試工具),是否設(shè)置了網(wǎng)絡(luò)代理,網(wǎng)絡(luò)代理可能會(huì)造成請(qǐng)求失敗;
6.檢查操作系統(tǒng)的host文件,是否綁定了一個(gè)錯(cuò)誤的ip映射;
2)接口有響應(yīng)但是返回了錯(cuò)誤的狀態(tài)碼
有些時(shí)候接口會(huì)返回一些錯(cuò)誤的HTTP狀態(tài)碼,需要根據(jù)不同的狀態(tài)碼來確定具體的原因。
排查思路:
400:客戶端請(qǐng)求錯(cuò)誤,比如請(qǐng)求參數(shù)格式錯(cuò)誤(如json字符串不合法);
401:未授權(quán),比如在請(qǐng)求header里,缺乏必要的信息頭(如token、auth等字段);
403:禁止,常見的原因是用戶的賬號(hào)沒有對(duì)應(yīng)的url權(quán)限,還有就是項(xiàng)目所用的中間件,不允許遠(yuǎn)程訪問(比如Apache);
404:資源未找到,導(dǎo)致這種情況的原因很多,比如:
url拼寫錯(cuò)誤;
url后有空格;
項(xiàng)目沒有啟動(dòng)成功;
請(qǐng)求協(xié)議不對(duì),如http/https;
405:方法不允許,常見的原因是請(qǐng)求方式不正確,比如GET類型接口,使用POST方式去請(qǐng)求;
415:不支持的媒體類型,常見原因是請(qǐng)求數(shù)據(jù)的類型和服務(wù)端支持的類型不匹配,比如json接口,需要添加一個(gè)信息頭Content-type:application/json;
500:服務(wù)器內(nèi)部錯(cuò)誤,出現(xiàn)這種情況,說明服務(wù)端內(nèi)部報(bào)錯(cuò)了,需要登錄到服務(wù)器上,檢查錯(cuò)誤日志,根據(jù)具體的提示信息再進(jìn)行排查;
502/503/504(Bad Gateway/錯(cuò)誤的網(wǎng)關(guān)、Service Unavailable/服務(wù)無法獲得、Gateway Timeout/網(wǎng)關(guān)超時(shí))。從以下兩種情況分析:
如果單次調(diào)用接口就報(bào)該錯(cuò)誤,說明是后端服務(wù)器配置有問題,或者服務(wù)不可用,掛掉了;
如果并發(fā)壓測(cè)時(shí)出現(xiàn)此錯(cuò)誤,說明是后端壓力太大,出現(xiàn)異常,此問題一般是后端出現(xiàn)響應(yīng)時(shí)間過長(zhǎng)或者無響應(yīng)造成。