你一個(gè)項(xiàng)目做過哪些接口?舉例說一下你的接口測(cè)試是怎么做的?
參考答案:
1)、每個(gè)版本都會(huì)新增一些功能,對(duì)應(yīng)的接口也要進(jìn)行測(cè)試,一個(gè)項(xiàng)目的所有接口都要進(jìn)行測(cè)試,比如,查詢,下單,登陸,修改信息等等,開發(fā)寫好一個(gè)接口后,給到我們接口文檔我們就會(huì)去測(cè)試。
2)、我以下單這個(gè)接口說下是怎么測(cè)試的吧:下單這個(gè)接口用的是http協(xié)議,使用post請(qǐng)求方式,發(fā)送給服務(wù)器的參數(shù)有token,產(chǎn)品ID,購買數(shù)量,收貨人地址等等,這些參數(shù)都是必傳的參數(shù)。我們是使用Jmeter來做接口測(cè)試的,首先,要新建一個(gè)線程組,在線程組下面添加一個(gè)http的請(qǐng)求,然后填寫好服務(wù)器地址,接口路徑,請(qǐng)求方式,請(qǐng)求參數(shù),因?yàn)閠oken值是用來標(biāo)識(shí)用戶是否合法并且是動(dòng)態(tài)變化的,這個(gè)值從登陸接口中返回來的,所以,我們要在下單這個(gè)接口的前面增加一個(gè)登陸的接口,在登陸接口中使用正則表達(dá)式把token值關(guān)聯(lián)出來,然后在下單接口中使用${參數(shù)名}的方式引用;接下來還要對(duì)其他參數(shù)進(jìn)行參數(shù)化,構(gòu)造各種正常和異常的數(shù)據(jù),我們先在本地創(chuàng)建一個(gè)txt文檔,把參數(shù)填寫到文檔里面,在Jmeter中添加一個(gè)csv文件,填寫好txt文檔的路徑,然后在請(qǐng)求參數(shù)中使用${字段名}的方式引用;接下來添加斷言,檢查服務(wù)器返回的結(jié)果和預(yù)期結(jié)果是不是一致的,如果斷言的內(nèi)容會(huì)根據(jù)發(fā)給服務(wù)器參數(shù)變化而變化,就要把斷言的內(nèi)容也參數(shù)化;為了遍歷所有的參數(shù),我們接下來還要添加一個(gè)循環(huán)控制器,把下單接加入到這個(gè)循環(huán)控制器里面,并設(shè)定循環(huán)次數(shù);最后,添加查看結(jié)果樹查看測(cè)試結(jié)果。
面:那你們是怎么驗(yàn)證接口是通過的?
我:首先會(huì)去看服務(wù)器返回給客戶端的信息是不是和預(yù)期結(jié)果一致;向系統(tǒng)提交的數(shù)據(jù)是否正確寫進(jìn)數(shù)據(jù)庫
面:接口返回的數(shù)據(jù)格式有哪些?
我:一般是json格式和文本格式,常見的是json格式
面:你覺得為什么要做接口測(cè)試
我:接口測(cè)試是在程序的開發(fā)階段進(jìn)行的,越早進(jìn)行測(cè)試就能越早發(fā)現(xiàn)系統(tǒng)的底層缺陷,降低修復(fù)的成本,隨著系統(tǒng)的越來越復(fù)雜,單純的UI層面的功能測(cè)試無法覆蓋所有的參數(shù),存在安全隱患
面:那常見的頭部信息有哪些?
我:user-agent和accept encoding
面:在進(jìn)行接口測(cè)試時(shí),如果接口報(bào)錯(cuò)怎么處理?
我:(首先,我會(huì)先檢查一下請(qǐng)求參數(shù)啊,還有其他的填入的數(shù)據(jù)是否有問題,如果這些都沒問題,我會(huì)ping一下網(wǎng)絡(luò),看網(wǎng)絡(luò)通不通(面試官點(diǎn)了點(diǎn)頭),如果網(wǎng)絡(luò)也沒問題的話,我會(huì)去看看系統(tǒng)服務(wù)器有沒有啟動(dòng),如果服務(wù)器也沒問題的話,那可能就要發(fā)給開發(fā)定位一下了。)
檢查網(wǎng)絡(luò)是否有問題
Ping 服務(wù)器,與服務(wù)器的網(wǎng)絡(luò)是否有問題
檢查接口的參數(shù)是否有誤
檢查接口是否做了ip的限制
檢查是單單這個(gè)接口掛掉了,還是所有接口掛掉了
如果是接口本身的bug,就獲取日志提單給開發(fā)修改
面:寫過多少個(gè)接口,接口測(cè)試負(fù)責(zé)什么模塊
我:基本上所有模塊的功能都做接口測(cè)試,我們都是根據(jù)開發(fā)給到的接口文檔,熟悉接口文檔后小組再進(jìn)行分工,拿到自己的接口就根據(jù)文檔編寫接口的測(cè)試用例,然后再用jmeter工具進(jìn)行測(cè)試,我大概做過五十多個(gè)接口
面:什么樣的接口是好的接口
我:功能準(zhǔn)確無誤的,響應(yīng)速度快的,安全性好的,支持多用戶并發(fā)操作
面:那不同版本的系統(tǒng),接口怎么調(diào)用
我:在頭部信息里,傳入版本或者系統(tǒng)類型
面:在做接口的時(shí)候有沒有遇到什么問題?
我:遇到比較多的就是接口的互相依賴,存在數(shù)據(jù)的交互,比如說有一個(gè)a接口的數(shù)據(jù)需要從b接口獲取,那我們會(huì)把b接口放到a接口前面,然后再b接口添加一個(gè)css提取器或者是json提取器,然后把a(bǔ)接口要用到的數(shù)據(jù)關(guān)聯(lián)出來,保存到參數(shù)中。然后在a接口中使用${字段名} 的方式引用參數(shù)
面:接口的自動(dòng)化怎么做的?
我:我們?cè)賘meter做好接口之后呢,會(huì)使用Jenkins這個(gè)持續(xù)集成工具定時(shí)去跑腳本
1、用到哪些工具做接口測(cè)試?
參考答案:jmeter
2、接口測(cè)試怎么測(cè)試的。
參考答案:
1、拿到接口文檔熟悉:(服務(wù)端開發(fā)人員把接口文檔寫出來,我們就可以拿過來熟悉):
1)每個(gè)接口對(duì)應(yīng)要實(shí)現(xiàn)的功能是什么
2)服務(wù)器的地址、端口、接口地址(確定訪問哪個(gè)接口)
3)請(qǐng)求方式,請(qǐng)求參數(shù)有哪些,參數(shù)的約束是什么(工作當(dāng)中了解請(qǐng)求參數(shù)的各種約束)
4)熟悉響應(yīng)數(shù)據(jù):
<1>響應(yīng)的字段個(gè)數(shù)是否足夠(可以看需求文檔中對(duì)應(yīng)的功能需要顯示的個(gè)數(shù),只能多不能少)
<2>正確和錯(cuò)誤的響應(yīng)碼(errcode)有哪些,對(duì)應(yīng)的響應(yīng)信息(message)是什么。例如 :errcode:4403 message:錯(cuò)誤的請(qǐng)求信息
2、編寫接口測(cè)試用例(接口測(cè)試用跟功能類似,只多了一個(gè)請(qǐng)求報(bào)文,響應(yīng)報(bào)文)
1)考慮正常異常的請(qǐng)求參數(shù)的請(qǐng)求報(bào)文
2)考慮正常和異常請(qǐng)求后的響應(yīng)報(bào)文(例如 :異常的錯(cuò)誤碼是什么,對(duì)應(yīng)的錯(cuò)誤信息是否正確)
3、執(zhí)行測(cè)試用例:
我們是用jmeter執(zhí)行測(cè)試用例,先建立一個(gè)線程組,再添加http請(qǐng)求,填寫好請(qǐng)求地址,端口,和請(qǐng)求參數(shù),設(shè)置參數(shù)化,添加斷言等,最后添加查看結(jié)果樹再運(yùn)行。運(yùn)行完后,檢查接口是否通過,如果不通過,先定位下原因,如果是請(qǐng)求的參數(shù)有問題,修改后再進(jìn)行測(cè)試,如果是接口本身存在bug,就把服務(wù)器上的日志取下來,提單給開發(fā)修改。
3、JMeter測(cè)試環(huán)境怎么搭建
1)、因?yàn)镴Meter是JAVA程序開發(fā)的,所以要先安裝JDK;
2)、配置JAVA環(huán)境變量,包括:JAVA_HOME,PATH,CLASSPATH;
3)、雙擊jmeter的bin目錄里面的jmeter.bat文件,就可以啟動(dòng)Jmeter。
4、什么時(shí)候會(huì)用到使用Fiddler
1)、做安全測(cè)試,檢測(cè)敏感信息是否加密,攔截篡改數(shù)據(jù);
2)、當(dāng)測(cè)試時(shí)發(fā)現(xiàn)缺陷,用fiddler抓包,定位該問題是前端還是后臺(tái)的問題;
3)、模擬弱網(wǎng)環(huán)境。
5、Fiddler怎么攔截篡改數(shù)據(jù)
參考答案:
可以在請(qǐng)求之前,或響應(yīng)之后攔截篡改數(shù)據(jù),比如登錄,在用戶發(fā)出登錄請(qǐng)求前,攔截下用戶的數(shù)據(jù),可以修改用戶名或者密碼,用戶就會(huì)登錄失敗,或者在用戶發(fā)出登錄請(qǐng)求后,在數(shù)據(jù)庫返回?cái)?shù)據(jù)給用戶前,攔截下數(shù)據(jù)庫返回的數(shù)據(jù),可以修改返回的數(shù)據(jù),比如把返回的用戶名改成別人,用戶收到的數(shù)據(jù)會(huì)變成改后的。
6、Fiddler怎么模擬弱網(wǎng)測(cè)試
參考答案:結(jié)合實(shí)際案例和使用步驟來講
首先手機(jī)和電腦連接同一個(gè)路由器,手動(dòng)設(shè)置電腦IP為服務(wù)器,添加端口,用fiddler把延時(shí)加大
7、問:用jmeter做接口可以通過,但在手機(jī)上用到這接口時(shí)用不了,什么原因:
參考答案:抓包,查看從手機(jī)發(fā)出去的數(shù)據(jù)有沒有問題。
8、問:接口測(cè)試的關(guān)注點(diǎn)(怎么驗(yàn)證接口是通過的)
1、接口返回的數(shù)據(jù)是否正確;
2、向系統(tǒng)提交的數(shù)據(jù)是否正確寫入了數(shù)據(jù)庫。
9、在進(jìn)行接口的自動(dòng)化測(cè)試,如果遇到token校驗(yàn),你是怎么處理的?
首先需要獲取token,獲取token的整個(gè)思路為:
A.先進(jìn)行登錄
B.登錄成功后
C.獲取token
D.把獲取的token當(dāng)作下一個(gè)接口的請(qǐng)求參數(shù)
10、Jmeter的斷言怎么做?
首先查看正確異常的響應(yīng)碼是多少,將響應(yīng)碼參數(shù)化,寫在記事本中,然后在jmeter中用CSV DATA導(dǎo)入記事本,添加響應(yīng)斷言,在響應(yīng)斷言中添加參數(shù)${}。如果是斷言多條,就要添加循環(huán)控制器。
11、接口自動(dòng)化做了多久呢
開發(fā)寫好接口,我們拿到接口文檔之后,我們就開始做著。
12、jenkins怎么做接口自動(dòng)化?
設(shè)置定時(shí)任務(wù)去跑腳本
1、接口測(cè)試在什么時(shí)候做:
服務(wù)端開發(fā)實(shí)現(xiàn)接口功能,聯(lián)調(diào)之前完成
為什么在聯(lián)調(diào)之前執(zhí)行:很多開發(fā)不懂,經(jīng)常說等我跟前端聯(lián)調(diào)完成之后再測(cè)試。
聯(lián)調(diào)之后執(zhí)行的問題:前端跟后端聯(lián)調(diào)時(shí)由于這個(gè)接口還有很多問題沒有測(cè)試過,所以經(jīng)常得幫端發(fā)現(xiàn)bug而且還要等待后端解決,白白的耽誤時(shí)間,如果在兩條之前就測(cè)試完那就聯(lián)調(diào)會(huì)很流暢
2、接口測(cè)試的好處:
1、測(cè)試盡早的執(zhí)行(因?yàn)?服務(wù)端剛把接口實(shí)現(xiàn),整個(gè)項(xiàng)目都還沒做完)
? ? ? ? 2、節(jié)省聯(lián)調(diào)的時(shí)間
3、一個(gè)接口問題,可以導(dǎo)致界面多個(gè)問題
3、接口流程需要上臺(tái)講出來的(做完項(xiàng)目二需要切入項(xiàng)目中):
2、接口測(cè)試怎么測(cè)試的。
參考答案:
1、拿到接口文檔熟悉:(服務(wù)端開發(fā)人員把接口文檔寫出來,我們就可以拿過來熟悉):
1)接口功能對(duì)應(yīng)的需求
2)服務(wù)端地址、端口、接口地址(確定訪問哪個(gè)接口)
3)熟悉請(qǐng)求方式,請(qǐng)求參數(shù)有哪些(工作當(dāng)中了解請(qǐng)求參數(shù)的各種約束)
4)熟悉響應(yīng)數(shù)據(jù):
<1>響應(yīng)數(shù)的字段個(gè)數(shù)是否足夠(可以看需求文檔中對(duì)應(yīng)的功能需要顯示的個(gè)數(shù),只能多不能少)
<2>錯(cuò)誤碼(errcode)有哪些,對(duì)應(yīng)的錯(cuò)誤信息(message)。例如 :errcode:4403 message:錯(cuò)誤的請(qǐng)求信息
2、編寫接口測(cè)試用例(接口測(cè)試用跟功能類似,只多了一個(gè)請(qǐng)求報(bào)文,響應(yīng)報(bào)文)
1)考慮正常異常的請(qǐng)求參數(shù)的請(qǐng)求報(bào)文
2)考慮正常和異常請(qǐng)求后的響應(yīng)報(bào)文(例如 :異常的錯(cuò)誤碼是什么,對(duì)應(yīng)的錯(cuò)誤信息是否正確)
3、執(zhí)行測(cè)試用例(項(xiàng)目二中要切入的項(xiàng)目中):
我們是用jmeter執(zhí)行測(cè)試用例,先建立一個(gè)線程組,再添加http請(qǐng)求,填寫好請(qǐng)求地址,端口,和請(qǐng)求參數(shù),設(shè)置參數(shù)化,添加斷言等,最后添加查看結(jié)果樹再運(yùn)行。運(yùn)行完后,檢查接口是否通過,如果不通過,先定位下原因,查看接口返回的數(shù)據(jù)為什么不正確,然后,把服務(wù)器上的日志取下來,提單給開發(fā)修改。
? 注意:別的公司使用其他工具我們不管,我們就使用這個(gè),常用的接口測(cè)試工具有:jmeter postman soapui(web service)? python編寫腳本測(cè)試。