1.什么是接口測試?
2.接口自動化測試的流程,? 基本的接口功能自動化測試流程為:需求分析-->用例設(shè)計-->腳本開發(fā)-->測試執(zhí)行-->結(jié)果分析 3.GET請求和POST請求區(qū)別是什么?
誤區(qū): 4.接口測試的常用工具有哪些,? Postman、JMeter,、SoapUI,、Poster、RESTClient,、WireMock 5.HTTP接口的請求參數(shù)類型有哪些,?
6.如何從上一個接口獲取相關(guān)的響應(yīng)數(shù)據(jù)傳遞到下一個接口,? 先從上一個接口中的響應(yīng)數(shù)據(jù)獲取對應(yīng)的返回值,然后使用正則表達(dá)式or使用JSON解析來提取需要獲取的值,,然后存儲在一個變量中,,最后在下一個接口中直接引用該變量即可 7.接口測試用例的編寫要點有哪些? 1)必填字段:請求參數(shù)必填項,、可選項 8.接口測試的步驟有哪些,? 1)發(fā)送接口請求 9.接口測試中依賴登錄狀態(tài)的接口如何測試? 依賴登最狀態(tài)的接口,,本質(zhì)上是在每次發(fā)送請求時需要帶上存儲有賬戶有效信息的Session或Cookie才能發(fā)送成功,,在構(gòu)建POST請求時添加必要的Session或Cookie 10.依賴于第三方數(shù)據(jù)的接口如何進(jìn)行測試? 可以利用一些MOCK工具(如:JSON Server,、Easy Mock)來模擬第三方的數(shù)據(jù)返回,,最大限度的降低對第三方數(shù)據(jù)接口的依 11.當(dāng)一個接口出現(xiàn)異常時候,你是如何分析異常的,? 1.抓包,,用fiddler工具抓包,或者瀏覽器上f12,app上的話,,那就用fiddler設(shè)置代理,,去看請求報文和返回報文了 12. 如何模擬弱網(wǎng)測試 fiddler和charles都可以模擬弱網(wǎng)測試,,平常說的模擬丟包,,也是模擬弱網(wǎng)測試 13.如何分析一個bug是前端還是后端的,? 平常提bug的時候,前端開發(fā)和后端開發(fā)總是扯皮,,不承認(rèn)是對方的bug 這種情況很容易判斷,,先抓包看請求報文,對著接口文檔,,看請求報文有沒問題,,有問題就是前端發(fā)的數(shù)據(jù)不對 請求報文沒問題,那就看返回報文,,返回的數(shù)據(jù)不對,,那就是后端開發(fā)的問題。 14.cookie和session的區(qū)別 (1)cookie數(shù)據(jù)存放在客戶的瀏覽器上,,session數(shù)據(jù)放在服務(wù)器上,。 (2)cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙,,考慮到安全應(yīng)當(dāng)使用session,。 (3)session會在一定時間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,,會比較占用你服務(wù)器的性能,,考慮到減輕服務(wù)器性能方面應(yīng)當(dāng)使用cookie (4)單個cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie,。 (5)可以將登陸信息等重要信息存放為session,;其他信息需要保存,,可以放在cookie。 15. 在手工接口測試或者自動化接口測試過程中,,上下游接口有數(shù)據(jù)依賴如何處理,? 答:在工具中可以使用全局變量等方式將需要的數(shù)據(jù)進(jìn)行傳送 16.依賴第三方數(shù)據(jù)的接口如何進(jìn)行測試? 答:可以使用SoapUI等工具直接調(diào)用第三方數(shù)據(jù)接口的webservice,,通過返回值來查看第三方數(shù)據(jù)的接口是否調(diào)用正常 也可以利用一些MOCK的工具來模擬第三方的數(shù)據(jù)返回,,最大限度的降低對第三方數(shù)據(jù)接口的依賴 17.? 接口測試中,依賴登錄狀態(tài)的接口如何測試,? 答:依賴登錄狀態(tài)的接口的本質(zhì)上是在每次發(fā)送請求時需要帶上session或者cookie才能發(fā)送成功,,在構(gòu)建POST請求時添加必要的session或者cookie 18.什么是API? API是(Application Programming Interface)首字母縮略詞,,即應(yīng)用程序編程接口,。 API是一組用于構(gòu)建軟件應(yīng)用程序的規(guī)程,協(xié)議和工具,。API充當(dāng)軟件應(yīng)用程序之間的接口,,并允許兩個軟件應(yīng)用程序相互通信。 API是一組軟件功能,,可以由其他軟件執(zhí)行. 19.列舉一些最常用的HTTP方法,? GET:從服務(wù)器檢索數(shù)據(jù) POST:將數(shù)據(jù)添加到服務(wù)器中的現(xiàn)有文件或資源 PUT:它允許您替換服務(wù)器中的現(xiàn)有文件或資源 DELETE:它允許您從服務(wù)器中刪除數(shù)據(jù) PATCH:用于對資源進(jìn)行部分修改 選項:用于描述目標(biāo)資源的通信選項 HEAD:它要求響應(yīng)與GET請求相同,但沒有響應(yīng)正文 20.接口測試能發(fā)現(xiàn)哪些問題,,你平常做接口測試的過程中發(fā)現(xiàn)過哪些bug? 這個問題其實回到起來很簡單,,只要做過接口測試的,總能發(fā)現(xiàn)幾個BUG吧,,把你平常發(fā)現(xiàn)的bug說2-3個就可以了,。 面試官出這個題,主要是想知道你是不是真的做過接口測試,,畢竟現(xiàn)在很多小伙伴簡歷都是寫的假的(你要不寫估計面試機(jī)會都沒有,,沒辦法,為了生存,,能理解) 比如上面說的,,提現(xiàn)輸入框,在頁面上輸入負(fù)數(shù),,肯定是無法提交過去(前端頁面會判斷金額),,如果我不走前端,直接用接口工具發(fā)請求,,輸入一個負(fù)數(shù)過去,。 (假設(shè)服務(wù)端沒做提現(xiàn)金額數(shù)據(jù)判斷) 余額=當(dāng)前余額(100)-提現(xiàn)金額(-100),那么提現(xiàn)-100,,余額就變成200了,,也就是越提現(xiàn),,余額越大了. 21.對于接口測試中產(chǎn)生的垃圾數(shù)據(jù)如何處理?對于不可逆操作,,比如刪除訂單,,如何保證數(shù)據(jù)可用性? 這個問題考察的是你,,能否在接口測試過程中動態(tài)的去處理測試數(shù)據(jù),。具體來說就是:在需要測試數(shù)據(jù)的時候,能夠自動生成,。在測試完畢后,,能清除測試過程產(chǎn)生的垃圾數(shù)據(jù)(尤其對于生成環(huán)境)。 接口的請求數(shù)據(jù),,很多都是需要依賴前面一個狀態(tài)的 比如工作流這種,,流向不同的人狀態(tài)不一樣,操作權(quán)限不一樣,,測試的時候,,每種狀態(tài)都要測到,就需要自己會造數(shù)據(jù)了,。 平常手工測試造數(shù)據(jù),,直接在數(shù)據(jù)庫改字段狀態(tài)。那么自動化也是一樣,,造數(shù)據(jù)可以用python連數(shù)據(jù)庫做增刪改查的操作,。如果沒有數(shù)據(jù)庫的直接操作權(quán)限,,可以間接的調(diào)用其他接口(比如下單接口)生成數(shù)據(jù),。在自動化測試中測試用例前置操作,setUp做數(shù)據(jù)準(zhǔn)備,。 對于垃圾數(shù)據(jù)的處理,,和上面說到的生成數(shù)據(jù)的方式一樣,調(diào)用相關(guān)接口(比如刪除訂單接口)或直接鏈接數(shù)據(jù)庫進(jìn)行數(shù)據(jù)刪除,。在自動化測試中使用后置操作,,tearDown做數(shù)據(jù)清理。對于非生產(chǎn)環(huán)境,,如果不想造成數(shù)據(jù)污染也可以切換影子數(shù)據(jù)庫或者使用mock服務(wù),,不真實生成數(shù)據(jù)。 22.說一說你所知道的接口安全測試,? 安全這個問題,,所有的團(tuán)隊都很看重。接口的安全測試主要有以下幾個方面: 接口對于請求參數(shù)篡改的預(yù)防 引入簽名,、參數(shù)MD5加密等 關(guān)于接口身份認(rèn)證存在的漏洞 cookie仿冒,、session劫持,、平行和垂直越權(quán) 完善接口的防刷機(jī)制 比如暴力破解短信驗證碼、找回密碼功能的枚舉破解安全問題 競爭條件—利用線程并發(fā)漏洞 超過限制下單,、同時申請多筆退款 注入類攻擊 sql注入,、sqlmap 接口注入檢查 23. 你用過哪些測試工具,它們的特點分別是什么,? 回答提示: ① Jmeter: 是一個100%的純java桌面應(yīng)用,,能夠?qū)TTP和FTP服務(wù)器進(jìn)行壓力和性能測試, 它原先用于Web應(yīng)用測試,,后來擴(kuò)展到其他測試領(lǐng)域,;另外Jmeter一般用于接口測試,驗證接口的輸入值請求是否返回了期望輸出的結(jié)果,。 ② JUnit:是一個Java語言的單元測試框架,,用于編寫和運行可重復(fù)的測試。Junit測試即所謂的白盒測試,,它包括以下特性:用于測試期望結(jié)果的斷言(Assertion),;用于共享共同測試數(shù)據(jù)的測試工具;用于方便的組織和運行測試的測試套件,;圖形和文本的測試運行器,。 ③ TestLink: TestLink 是基于web的測試用例管理系統(tǒng),主要功能包括有測試需求管理,、 測試用例管理,、測試用例對測試需求的覆蓋管理、測試計劃的制定,、測試用例的執(zhí)行,、大量測試數(shù)據(jù)的度量和統(tǒng)計功能。目前在XLS導(dǎo)入上存在缺陷,,但可以使用第三方的“Testlink Convert”工具實現(xiàn)XLS/TXT/XML導(dǎo)入導(dǎo)出,。 24.接口測試是目前最主流的自動化測試手段,它向服務(wù)器發(fā)送請求,,接收和解析響應(yīng)結(jié)果,,通過驗證響應(yīng)報文是否滿足需求規(guī)約來驗證系統(tǒng)邏輯正確性。接口的響應(yīng)類型通過Content-Type指定,,常見的響應(yīng)類型有: · text/html : HTML格式 · text/plain :純文本格式 · text/xml : XML格式 · application/xml : XML數(shù)據(jù)格式 · application/json : JSON數(shù)據(jù)格式 25.接口測試匯總響應(yīng)斷言:模式匹配 · 包括:支持純文本和正則,,驗證返回包括指定的內(nèi)容 · 匹配:支持純文本和正則,正則需全匹配(正則必須匹配全部返回,,而非部分返回) · Equals:字符串相等,,純文本匹配,驗證返回結(jié)果和指定結(jié)果完全一致 · SubString:字符串包含,,純文本匹配,,驗證返回結(jié)果包含指定結(jié)果 · 否:結(jié)合上述條件取反,,若上述斷言結(jié)果為false,取否后,,最終斷言結(jié)果為true Json斷言 Json斷言是針對Json報文的斷言方式,,通Json Path提取出Json響應(yīng)報文中的字段,再采用純文本或者正則去驗證Json Path的提取結(jié)果,,Json結(jié)合了Json Path和正則表達(dá)式,,有如下選項: · Additionally assert value:文本驗證,此處是完全匹配,,勾選上此選項后再勾選Match as regular ,,可以觸發(fā)正則匹配。 · Match as regular :支持正則表達(dá)式匹配 · Expect null:判定返回為null · Invert assertion:倒置斷言結(jié)果 ? 來源:https://www./content-4-821801.html |
|