一、前言
接口測試最近幾年被炒的火熱了,越來越多的測試同行意識到接口測試的重要性。接口測試為什麼會如此重要呢? 主要是平常的功能點點點,大家水準都一樣,是個人都能點,面試時候如果問你平常在公司怎麼測試的,你除了說點點點,還能說什麼呢,無非就是這個項目點完了點那個項目, 這就是為什麼各行各業的隻要手指能點得動的人都來轉行軟體測試了。面試的時候面試官希望你除了點點點,還能更深入一點的思考頁面上看不到的功能,也就是接口測試了。接口測試可不是下圖的USB接口哈,接口是看不見的,但是可以通路!
二、2020非常全的接口測試面試題及參考答案
如果你覺得此文對你有幫助,如果你對此文有任何疑問,如果你對軟體測試、接口測試、自動化測試、面試經驗交流感興趣歡迎加入軟體測試技術群:695458161,群裡發放的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。
1、你們公司的接口測試流程是怎樣的?(有沒有感覺熟悉,貌似在哪裡聽過)
接口測試我們是在XX項目做的,主要有XX接口,XX接口,XX接口等。
1、首先是從開發那裡拿到API接口文檔,了解接口業務、包括接口位址、請求方式,入參、出參,token鑒權,傳回格式等資訊。
2、然後使用Postman或Jmeter工具執行接口測試,一般使用Jmeter的步驟是這樣的:
1、首先建立一個線程組。
2、然後就是建立一個HTTP請求預設值。(輸入接口伺服器IP和端口)
3、再建立很多HTTP請求,一個請求一個用例。(輸入接口路徑,通路方式,參數等。)
4、然後建立斷言和檢視結果樹。
3、最後調試并執行用例,最後編寫接口測試報告
4、其實我們做接口的時候也碰到了蠻多的問題,都是自己獨立解決的,比如傳回值亂碼(修改jmeter的配置檔案為UTF-8編碼方式),比如需要登入後才能取得token鑒權碼并且這個鑒權碼在下面的請求中需要用到(使用正規表達式提取器提取token的值等。
2、請簡述一下cookie、session以及token的差別(有沒有感覺整個是萬年不變的面試題)
(1)cookie資料存放在客戶的浏覽器上,session資料放在伺服器上。而token是接口測試時的鑒權碼,一般情況下登陸後才可以擷取到token,然後在每次請求接口時需要帶上token參數。
(2)cookie不是很安全,别人可以分析存放在本地的cookie并進行cookie欺騙,考慮到安全應當使用session,session會在一定時間内儲存在伺服器上。當通路增多,會比較占用你伺服器的性能,考慮到減輕伺服器性能方面應當使用cookie
(3)可以将登陸資訊等重要資訊存放為session;其他資訊需要儲存,可以放在cookie
3、接口測試如何設計測試用例?(必問)
接口測試一般考慮入參形式的變化和接口的業務邏輯,一般設計接口測試用例采用等價類、邊界值、場景法居多!
接口測試設計測試用例的思路如下:
1.接口業務邏輯測試?(正例)
接口邏輯測試是指根據業務邏輯、輸入參數、輸出值的描述,對正常輸入情況下所得的輸出值
是否正确的測試,也就是測試對外提供的接口服務是否正常工作。
2.子產品接口測試?(反例)
子產品接口測試是為了保證資料的安全及程式在異常情況下的邏輯的正确性而進行的測試。?
子產品接口測試的主要包括以下幾個方面:?
1)鑒權碼token異常(鑒權碼為空<沒有鑒權碼>,錯誤的鑒權碼,過期的鑒權碼)。
2)其他參數異常。
1、必填項檢查
2、參數的長度、類型、格式異常:
正常參數:(數字、字元串、日期)
參數長度:6-18位。或身份證、電話的長度。
參數類型:數字(精度),字母,中文,帶空格的參數,特殊字元。
日期格式:日期:年月日,年月日時分秒,日期格式(包括/,-,:等)。
3)錯誤碼異常覆寫。
4)接口測試其他的關注點
接口有翻頁時,頁碼與頁數的異常值測試
資料庫的增删改查,比如一個post接口操作完成後,通過清單頁接口看下新的資料是否和剛才的post一緻
接口傳回的圖檔位址能否打開,圖檔尺寸是否符合需求
當輸出參數有關聯性時,需要校驗傳回兩參數的實際結果是否都符合需求。
所有清單頁接口必須考慮排序值
所有功能都要考慮相容舊版本
4、接口測試執行中比對資料庫嗎?
肯定啊,因為接口傳回值的資料來源于資料庫,接口對資料的操作還要進行深層次的資料庫檢查!
5、談談你對HTTP協定的了解?
超文本傳輸協定,端口為80,特點(無記憶功能、快速)是由請求和響應兩部分組成請求由請求頭、請求行、請求正文組成;響應是由響應頭、響應行、響應正文組成,之前我們公司的接口是采用https協定的。
https http+ssl協定 端口443 面向安全的超文本傳輸協定
6、get和post請求有什麼差別?
get和post請求都是用戶端向伺服器送出的一種請求方式
get是明文傳輸參數、傾向于請求伺服器資源。比如打開網站
post傳輸資料不可見,安全性高,傾向于向伺服器送出資料,比如注冊等
7、響應狀态碼有哪些?
1xx:訓示資訊--表示請求已接受,繼續處理
2xx:成功--表示請求已被成功接收、了解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:用戶端錯誤--請求有文法錯誤或請求無法實作
5xx:伺服器端錯誤--伺服器未能實作合法的請求
8、在接口測試過程中發現的bug多不多?能舉幾個栗子?
這個問題其實回到起來很簡單,隻要做過接口測試的,總能發現幾個BUG吧,把你平常發現的bug說2-3個就可以了。 面試官出這個題,主要是想知道你是不是真的做過接口測試,畢竟現在很多小夥伴履歷都是寫的假的(你要不寫估計面試機會都沒有,沒辦法,為了生存,能了解) 比如,提現輸入框,在頁面上輸入負數,肯定是無法送出過去(前端頁面會判斷金額),如果我不走前端,直接用接口工具發請求,輸入一個負數過去。 (假設服務端沒做提現金額資料判斷) 餘額=目前餘額(100)-提現金額(-100),那麼提現-100,餘額就變成200了,也就是越提現,餘額越大了。
9、接口測試中有哪些要注意的測試點?
11.1)接口中傳回了圖檔位址,要手工去進行圖檔的測試(大小、内容)
11.2)接口完成查詢功能的時候,資料傳回的排序顯示
11.3)接口測試的時候,關注參數的預設值、必填項
10、接口執行測試後傳回結果做對比,一般比對哪部分内容?
之前必須要對比的就是傳回狀态碼,其次再去對比傳回其它關鍵内容
11、為什麼開展接口測試?
13.1)接口測試屬于內建測試、測試介入越早、就越能在項目早期發現問題,其修複問題的成本越低
13.2)接口測試非常快速、UI自動化執行一個測試用例10S左右、接口測試用例執行的話,需要的時間是毫秒級的
12、之前在接口測試過程中,使用的工具是什麼?
postman或jmeter(5.1)
13、之前用過抓包工具沒有?如何使用的?
之前在項目中用過fiddler抓包工具進行HTTP協定請求的抓取
打開fiddler之後,預設浏覽器配置了127.0.0.1 8888端口的代理,在fiddler設定好過濾政策後,打開需要進行抓包的網站進行操作,就可以進行抓包
14、json資料是什麼,你平時如何解析json資料?
一種開發常用的資料封包格式,由鍵值對和數組兩種格式構成。可以通過工具bejson網站等
15、postman你在工作中使用流程是什麼樣的?
1) 編寫好用例
2) 在postman先建好url環境變量
3) 根據接口用例所屬的子產品建立集合管理
4) 在集合中不同子產品下錄入測試用例
5) 錄入測試用例的時候根據預期結果在tests頁簽中增加斷言
6) 導出通過Newman去運作
16、postman中設定環境變量有什麼用?
在之前項目中,接口測試測試的環境有開發環境,測試環境等,為了測試的時候友善,就在postman設定環境變量,到時所有接口都引用該環境變量,這樣就不用為了切換環境導緻每次都去修改被測系統接口的主機位址;點選右上角環境變量管理按鈕-建立環境變量,在腳本中使用{{變量名}}去調用
17、在接口測試中關聯是什麼含義?如何用postman設定關聯?
關聯就是把上一個接口傳回值的部分截取出來,作為下一個接口的參數,能讓接口串聯運作
在postman中設定關聯的步驟如下:
1) 先通過正規表達式提取的方式或json取值的方式把下一個接口需要的資訊從上一個接口截取出來
2) 使用設定全局變量的代碼把取出來的值儲存到全局變量
3) 在下一個接口中,使用{{全局變量}}代替要替換的靜态值
18、postman支援什麼類型的協定測試?
http和https協定的
19、postman參數化有哪幾種方式?
内建變量、pre-scripts編寫js腳本、批量運作時導入csv或json格式的檔案
20、Newman如何執行postman腳本?
Newman run 腳本名稱 也可以添加參數生成html報表等
21、jmeter之前用的是什麼版本?如何安裝的?
jmeter用的是5.1.1版本,安裝如下:
先在電腦上安裝jdk1.8或以上的版本,然後從官網下載下傳最新的安裝包,解壓後,進行環境變量的配置,配置好後即安裝完成
22、在項目中如何用jmeter進行接口測試?
1) 把線程組數量設定為1,循環次數設定為1
2) 配置好全局變量URL通過配置元件---使用者自定義的變量添加
3) 增加配置元件http請求預設值,放置在使用者定義的變量之後
4) 添加事務控制器管理群組織測試用例
5) 在事務控制中添加http請求添加測試用例中的接口請求資訊
6) 添加對應的斷言元件進行斷言
23、jmeter中如何設定斷言?
右擊請求---斷言---響應斷言---響應斷言界面輸入要檢查比對的項,設定好斷言後,執行接口測試如果是通過的,檢視結果樹不會有任何提示,如果斷言失敗,就會有紅色報錯。如果接口傳回的資料是json資料,也可以添加json斷言
24、jmeter中如何實作關聯?
先從上一個接口中通過正規表達式提取器或jsonpath解析器截取下一個接口需要的參數值儲存到變量,然後在寫一個接口中通過${變量名}去擷取
25、jmeter添加http請求預設值元件有什麼作用?
添加并設定好後,相當于給所有的http請求取樣器都設定了預設值,既不用填寫取樣器中的比如主機位址、端口、代理等,都可以使用http請求預設值設定的
26、jmeter參數化的方式有哪幾種可以實作?
1) 配置元件---使用者定義的變量元件可以設定全局變量
2) 函數助手對話框中可以選擇比如随機字元串、随機日期、随機數字作為參數化
3) 可以使用csv檔案作為參數化,通過配置元件中的csv data set config元件進行設定即可
三、總結
如果你此文你也有同感,如果你覺得此文對你有幫助,如果你對軟體測試、接口測試、自動化測試、面試經驗交流感興趣歡迎加入:
軟體測試技術群:695458161,群裡發放的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。
作者:來自公衆号:軟測之家
出處:https://www.cnblogs.com/csmashang/p/12661361.html
歡迎轉載,但未經作者同意請保留此段聲明,并在文章頁面明顯位置給出原文連結。