❤️【接口測試面試】精選50接口測試面試題目,或許能幫到金九銀十面試浪潮中的你❤️


@

基本理論知識

1、什么是(軟件)接口測試?
接口測試:是測試系統組件間接口的一種測試方法

接口測試的重點:檢查數據的交換,數據傳遞的正確性,以及接口間的邏輯依賴關系

接口測試的意義:在較早期開展,在軟件開發的同時實現並行測試,減少頁面層測試的深入問題,降低開發成本,縮短整個項目的測試周期;脫離頁面的限制,更全面的進行測試,發現更底層的問題。

2、為什么要做接口測試?
01、越底層越早期發現bug,它的修復成本是越低的。

02、測試時能夠跨越前端UI的限制,做更充分的測試,檢查系統的安全性、穩定性。

03、接口相對UI自動化也比較穩定,也相對容易實現自動化持續集成,且可以減少回歸測試人力成本,縮短測試周期,支持后端快速發版需求。

3、解釋API測試和單元測試之間的區別
API(Application Programming Interface,應用程序編程接口),指一個軟件組件與外界進行的交互的接口。它是一組功能和過程,可用於創建訪問應用程序或操作系統的功能或數據的應用程序。

API測試:屬於黑盒測試;一般測試人員執行;單元測試完成再執行API測試;API測試可以檢查系統的全部功能,以便最終用戶可以完美地使用它。

單元測試:屬於白盒測試;一般歸開發人員執行;在每個模塊准備就緒,則進行單元測試;執行單元測試以檢查每個隔離單元是否按預期執行。
4、UI測試和API測試之間的關鍵區別?

UI(用戶界面)是指測試圖形界面,如用戶如何與應用程序交互,測試應用程序元素,如字體,圖像,布局等。UI測試基本上側重於應用程序的外觀和感覺。

API可以實現兩個獨立的軟件系統之間的通信。實現API的軟件系統包含可由另一軟件系統執行的功能或子例程。

5、接口自動化測試的流程?
半自動化:了解接口—用例設計—選擇工具、實現用例—問題分析

自動化:需求分析–>用例設計–>自動化工具或框架選擇–>腳本開發–>測試執行–>結果分析–>維護—>持續集成。

6、接口測試的常用工具有哪些?

7、接口文檔一般有哪些內容?

接口文檔一般包括用戶使用接口時必備信息:

接口說明、調用url、使用的方式、使用舉例

請求參數列表、參數類型、請求參數說明

返回參數說明、錯誤碼說明。

8、沒有接口文檔怎么辦

抓包分析,或者源代碼、日志,或者根據數據庫設計,根據業務,溝通–梳理接口文檔,不規范—找到必備信息—自己簡要整理成文檔—確認。

9、接口測試一般測試哪些內容
一般要考慮到功能、性能、安全性、穩定性幾個不同的方面。

10、接口功能測試用例的編寫要點?
首先是接口的基本功能測試:正常場景和異常場景,

請求參數:

參數基本校驗:是否有默認值,類型要求、是否必填,合法性要求、邊界值

各參數之間是否有邏輯關系

業務邏輯測試:正向,反向,

響應內容:

對結果碼的覆蓋

響應數據校驗:格式和內容

11、對API執行哪些常見測試?
1通常根據請求響應驗證返回值是否基於請求。

2當API更新數據時,我們應驗證系統是否在驗證結果。

3我們將驗證API是觸發其他事件還是請求其他API。

4當沒有返回值時,我們將驗證API的行為。

12、在API測試期間,面臨哪些不同類型的挑戰?
1參數選擇、參數組合、調用順序、輸出驗證和確認

2鑒權、身份認證、協議

13、接口調用的步驟?
用戶:發送接口請求,然后接收響應內容;

Client發送請求<-------->Server處理並返回響應

在這里插入圖片描述

14 、API測試會發現哪些Bug?
功能缺失或重復;沒有友好處理錯誤情況;可靠性;安全性;性能;錯誤處理不一致;多線程問題;

15、接口測試的過程中,上下游接口有數據依賴如何處理?
可以用一個全局變量來處理依賴的數據

16、依賴於第三方數據的接口如何進行測試?
一般利用一些MOCK的工具來模擬第三方的數據返回,最大限度的降低對第三方數據接口的依賴。

17、接口測試中依賴登錄狀態的接口如何測試?

依賴登錄狀態的接口的本質上是在每次發送請求時需要帶上Sessionid或者Cookie才能發送成功,在構建請求時添加必要的Sessionid或者Cookie即可。

18、當一個接口出現異常時候,你是如何分析異常的?
抓包分析,用fiddler、F12,app上的話,那就用fiddler設置代理,去看請求報文和返回報文了

第二 查看后端日志

19、有那些類型的接口?
如內部接口和外部接口;單一接口,組合接口

根據協議划分:http接口,soap接口,

http接口: get, post, put, delete;

Web service接口: soap,rmi, rpc

20、什么是Web Service?
Web Service是一個SOA(面向服務的編程)的架構,它是不依賴於語言和平台,可以實現不同的語言間的相互調用,通過Internet進行基於Http協議的網絡應用間的交互;

Web Service = WSDL+SOAP+UDDI

21、什么是SOAP接口
SOAP簡單對象訪問協議,是一種基於 XML 的協議。SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議HTTP,簡單郵件傳輸協議SMTP。

22、什么是REST/RESTFUL接口?
在REST API中,通過HTTP協議進行交互。

REST - 表述性狀態轉移,它不是協議和標准而是表示一種風格, 將Http協議的設計初衷作了詮釋。它正快速成為API創建的標准。

HTTP協議

23、什么是HTTP協議
HyperText Transfer Protocol超文本傳輸協議,是因特網上應用最廣泛的應用層協議,傳輸層基於TCP協議。

24、HTTP協議特點
1.支持客戶/服務器模式;

2.簡單快速,向服務器請求服務時,只傳送請求方法和路徑,因而通信速度很快;

  1. 靈活,HTTP允許傳輸任意類型的數據對象;

  2. 無狀態,對於事務處理沒有記憶能力, 每個請求都是獨立的;

  3. 無連接,在1.1版本后默認保持連接;

25、Http請求的組成部分是什么?
請求報文包括三部分:

(1).請求行:包含請求方法,URI,HTTP版本協議

(2).請求首部字段,請求header

(3).請求內容實體,請求body

響應報文包含三部分:

(1).狀態行:包含HTTP版本,狀態碼,狀態碼原因短語

(2).響應首部字段,響應header

(3).響應內容實體,響應body
26、Http協議工作的原理

整個處理流程步驟:

(0) 地址欄輸入url地址后回車

(1) 域名解析,獲取ip地址

(2) 建立TCP連接,三次握手

(3) 瀏覽器端發起Http請求

(4) Server接收,處理,返回Http響應,

(5) 瀏覽器端接收響應,得到HTML代碼

(6) 瀏覽器解析HTML代碼,渲染呈現給用戶

(7) 瀏覽器端發起Http請求

(8) Server接收,處理,返回Http響應,

(9) 瀏覽器端接收響應,得到HTML代碼

(10) 瀏覽器解析HTML代碼,渲染呈現給用戶

(11) 斷開TCP連接,四次揮手

27、 HTTP協議的請求方式有哪些?
GET:GET用於從指定資源請求數據。
POST:POST用於將數據發送到服務器以創建或更新資源。
PUT:PUT用請求有效負載替換目標資源的當前表示。
DELETE:DELETE刪除指定的資源。
OPTION:選項用於描述目標資源的通信選項,讓客戶端查看服務器的性能。
HEAD:HEAD請求與GET請求相同的響應,但沒有響應主體,用於獲取報頭。
28、Http結果碼
1xx–提示, 2xx–正常,3xx–重定向,4xx–客戶端錯誤,5xx–服務端錯誤

100:Continue,收到了請求的初始部分,請客戶端繼續
200:OK,請求被正常處理
301:Moved Permanently,永久性重定向
302:Found,臨時重定向
304:Not Modified,發送附帶條件的請求時,表示文件未變化
400:Bad Request,請求報文語法有誤,服務器無法識別
401:Unauthorized,未授權,需要客戶端對自己認證
403:Forbidden,禁止,請求被服務器拒絕
404:Not Found,服務器無法找到對應資源
500:Internal Server Error,服務器內部錯誤
29、Http協議首部字段
1、通用首部字段(請求報文與響應報文都會使用的首部字段)

Date:創建報文時間

Connection:連接的管理

Cache-Control:緩存的控制

2、請求首部字段

Host:請求資源所在服務器

Accept:可處理的媒體類型

Accept-Charset:可接收的字符集

Accept-Encoding:可接受的壓縮方式

Accept-Language:可接受的自然語言

Authrization:認證信息

Referer:當前請求路徑的獲取渠道

User-Agent:客戶端信息

3、響應首部字段

Set-Cookies:客戶端應該保存的cookies

Location:令客戶端重新定向到的URI

Server:HTTP服務器的安裝信息

4、實體首部字段

Content-Type:實體主類的類型

Content-Encoding:實體主體適用的壓縮方式

Content-Length:實體主體的的字節數

30、GET請求和POST請求區別是什么?
1 GET一般從服務器上獲取資源,POST一般往服務器發送數據(不是絕對的)

2 GETGET方式主要是對數據庫進行查詢,GET是冪等和安全的,而POST主要用於讓數據庫增加數據或者刪除,修改數據,所以會有一定的安全性問題;

3 GET請求數據是通過URL傳送,POST請求數據通常在請求BODY中;

4 GET,因為受URL長度限制,數據量有限;POST可以傳輸大量數據,可用於文件上傳

5 GET是不安全的,因為URL是可見的;POST較安全

6 GET請求參數會被完整保留在瀏覽器歷史記錄里,而POST中的參數不會被保留

31、Http與Https相比的不足?
1通信使用明文不加密,內容可能被竊聽,也就是被抓包分析

2不驗證通信方身份,可能遭到偽裝

3無法驗證報文完整性,可能被篡改

HTTPS=SSL+HTTP

32、http和https的比較
1 HTTP 的URL 以http:// 開頭,而HTTPS 的URL 以https:// 開頭

2 HTTP 是不安全的,而 HTTPS 是安全的

3 HTTP 標准端口是80 ,而 HTTPS 的標准端口是443

4在OSI 網絡模型中,HTTP工作於應用層,而HTTPS 的安全傳輸機制工作在傳輸層

5 HTTP 無法加密,而HTTPS 對傳輸的數據進行加密

6 HTTP無需證書,而HTTPS 需要CA機構wosign的頒發的SSL證書

33、HTTP接口的請求參數類型有哪些?
查詢字符串參數(Query String Parameters參數)一般用於GET請求,會以url string的形式進行傳遞。
請求體參數(Request Body)一般用於POST請求,可以使用Content-Type來指定不同參數類型。
34、常見的 POST 提交數據方式
請求body;請求url+請求body:

Content-type:

application/x-www-form-urlencoded: 表單提交–鍵值對, form

multipart/form-data:文件上傳—文件 ,MIME

application/json,text/xml:

35、如何對請求數據加密?為什么要加密,常規加密方式
Jmeter–找它的對應組件或函數;如果沒有寫代碼,
Requests–寫代碼,利用python自帶的或第三方的模塊
36、HTTP協議無狀態?怎么解決Http協議無狀態?
1、無狀態指對於事務處理沒有記憶能力,每個http請求都是完全獨立的。

2、無狀態協議解決辦法:通過Cookie或Session。

A. client發送登錄請求,server判斷登錄成功,生成cookie並返回響應

B. Client保存cookie,並在接下來的請求時,帶上cookie

C. Server接收到請求,對請求中的cookie做驗證。

37、Cookies機制和session機制的區別
cookies數據保存在客戶端,session數據保存在服務器端;

cookies可以減輕服務器壓力,但是不安全,容易進行cookies欺騙;

session較安全,但占用服務器資源;

Cookie實現方式:
登錄成功,server返回cookie—響應的header的set-cookie字段

下次請求,請求header中通過cookie字段帶上需要的cookie session實現方式—cookie,Url回寫

登錄成功,server創建session並返回sessionid

下次請求時,請求報文中帶上sessionid

JMeter接口測試

38、為什么選擇用JMeter進行接口測試?
JMeter剛開始覺得難用,但是習慣了發現挺好用的,它功能很強大,滿足基本功能測試和壓力測試的需求。

39、什么是斷言?斷言的類型有哪些?
自動化測試中通過斷言做結果判斷,用於檢查測試中的數據與預期是否一致。一致則結果為pass,否則為fail狀態。

JMeter中一些常用的斷言有:響應斷言、Json斷言

40、正則表達式中包括和匹配區別
包括:目標字符串包括正則表達式的內容

匹配:目標字符串包括與正則表達式的內容完全一致

41 、Json斷言如何使用
首先響應內容應該是json格式;

然后添加json斷言,通過json路徑表達式,匹配到需要的內容,再把它與預期結果的比對

42、什么是參數化
是自動化過程中,將腳本中的輸入數據使用參數來代替,在腳本運行時指定參數的取值

簡化操作, 實現測試代碼和測試數據的分離

jmeter實現方式有—用戶參數User Parameters,函數csv_reader, 配置元件csv data set config。

43、如何保持登錄狀態
如果登錄狀態是通過cookie實現的,jmeter中可以通過cookie管理器實現登錄狀態保持,也可以以關聯的方式解決這個問題。

44、什么是關聯
多個請求/響應間的數據可能會有相互依賴的關系。

B需要A的數據-----Server返回的,動態變化,必須使用

關聯:將服務器返回的數據包中滿足條件的數據保存到一個參數中的過程。

45、正則表達式提取器的用途是什么?
主要用於關聯的場景,一般從響應中獲取我們需要的數據,存儲到指定變量中,以備后續使用。

46、 Json提取器怎么使用?
對於json格式的響應數據,做數據提取時,可以用json路徑表達式選取數據,並保存到變量中。47、如何通過接口上傳一個文件?

通過接口上傳文件,首先content_type值為multipart/form-data

需要確定文件的名稱和路徑,文件的類型,參數名稱三個數據

48、需要重定向如何處理
JMeter會自動處理重定向,重新發送一個請求到指定url,我們一般勾選跟隨重定向,以查看重定向的過程

49、接口數據需要加密怎么處理?
JMeter早期版本有加密功能,目前移除掉了,要加密我們得寫代碼實現了。Beanshell, groove

第四 Requests接口測試

50、為什么用requests做接口測試?
使用工具和寫代碼各自優劣。

如:我熟悉python語言,通過requests測試很靈活很方便。Jmeter能實現的python中我都能夠實現。也可以借用很多現有的自動化相關工具實現自己響應的效果

51、如何保持登錄狀態
假設登錄狀態是通過cookie保持的:

1.手工做關聯,獲取到登錄成功的cookie,保存到變量,后續請求時,帶上cookie即可

2.requests的Session類自動進行cookie的處理。創建session對象,通過session.post(), session.get()發送連續多個請求。

52、如果返回json格式的數據怎么處理
通過response.json()方法,把json字符串轉換為字典對象;

通過json模塊的loads()方法,進行反序列化操作;

53、怎么判斷響應是否正確
unittest框架,使用TestCase類的assertxx斷言方法進行結果判斷,把預期結果和實際結果進行比對即可。

pytest框架,使用常規的assert語句進行結果判斷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM