一、前言
接口測試最近幾年被炒的火熱了,越來越多的測試同行意識到接口測試的重要性。接口測試為什么會如此重要呢? 主要是平常的功能點點點,大家水平都一樣,是個人都能點,面試時候如果問你平常在公司怎么測試的,你除了說點點點,還能說什么呢,無非就是這個項目點完了點那個項目, 這就是為什么各行各業的只要手指能點得動的人都來轉行軟件測試了。面試的時候面試官希望你除了點點點,還能更深入一點的思考頁面上看不到的功能,也就是接口測試了。接口測試可不是下圖的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
歡迎轉載,但未經作者同意請保留此段聲明,並在文章頁面明顯位置給出原文鏈接。