一、什么是(軟件)接口測試?
接口測試:是測試系統組件間接口的一種測試方法
接口測試的重點:檢查數據的交換,數據傳遞的正確性,以及接口間的邏輯依賴關系
接口測試的意義:在較早期開展,在軟件開發的同時實現并行測試,減少頁面層測試的深入問題,降低開發成本,縮短整個項目的測試周期;脫離頁面的限制,更全面的進行測試,發現更底層的問題。
二、為什么要做接口測試?
1)越底層越早期發現bug,它的修復成本是越低的。
2)測試時能夠跨越前端UI的限制,做更充分的測試,檢查系統的安全性、穩定性。
3)接口相對UI自動化也比較穩定,也相對容易實現自動化持續集成,且可以減少回歸測試人力成本,縮短測試周期,支持后端快速發版需求。
三、解釋API測試和單元測試之間的區別
API(Application Programming Interface,應用程序編程接口),指一個軟件組件與外界進行的交互的接口。它是一組功能和過程,可用于創建訪問應用程序或操作系統的功能或數據的應用程序。
API測試:屬于黑盒測試;一般測試人員執行;單元測試完成再執行API測試;API測試可以檢查系統的全部功能,以便最終用戶可以完美地使用它。
單元測試:屬于白盒測試;一般歸開發人員執行;在每個模塊準備就緒,則進行單元測試;執行單元測試以檢查每個隔離單元是否按預期執行。
四、UI測試和API測試之間的關鍵區別?
UI(用戶界面)是指測試圖形界面,如用戶如何與應用程序交互,測試應用程序元素,如字體,圖像,布局等。UI測試基本上側重于應用程序的外觀和感覺。 API可以實現兩個獨立的軟件系統之間的通信。實現API的軟件系統包含可由另一軟件系統執行的功能或子例程。
五、接口自動化測試的流程?
半自動化: 了解接口—用例設計—選擇工具、實現用例—問題分析
自動化: 需求分析–>用例設計–>自動化工具或框架選擇–>腳本開發–>測試執行–>結果分析–>維護—>持續集成。
六、接口文檔一般有哪些內容?
接口文檔一般包括用戶使用接口時必備信息:
接口說明、調用url、使用的方式、使用舉例
請求參數列表、參數類型、請求參數說明
返回參數說明、錯誤碼說明。
七、沒有接口文檔怎么辦
抓包分析,或者源代碼、日志,或者根據數據庫設計,根據業務,溝通–梳理接口文檔,
不規范—找到必備信息—自己簡要整理成文檔—確認。
八、接口功能測試用例的編寫要點?
首先是接口的基本功能測試:正常場景和異常場景,
請求參數:
參數基本校驗:是否有默認值,類型要求、是否必填,合法性要求、邊界值
各參數之間是否有邏輯關系
業務邏輯測試:正向,反向,
響應內容:
對結果碼的覆蓋
響應數據校驗:格式和內容
九、對API執行哪些常見測試?
1)通常根據請求響應驗證返回值是否基于請求。
2)當API更新數據時,我們應驗證系統是否在驗證結果。
3)我們將驗證API是觸發其他事件還是請求其他API。
4)當沒有返回值時,我們將驗證API的行為。
十、在API測試期間,面臨哪些不同類型的挑戰?
1)參數選擇、參數組合、調用順序、輸出驗證和確認
2)鑒權、身份認證、協議
十一、接口調用的步驟?
用戶:發送接口請求,然后接收響應內容;
Client發送請求<-------->Server處理并返回響應
十二、API測試會發現哪些Bug?
功能缺失或重復;沒有友好處理錯誤情況;可靠性;安全性;性能;錯誤處理不一致;多線程問題;
十三、接口測試中依賴登錄狀態的接口如何測試?
依賴登錄狀態的接口的本質上是在每次發送請求時需要帶上Sessionid或者Cookie才能發送成功,在構建請求時添加必要的Sessionid或者Cookie即可。
十四、當一個接口出現異常時候,你是如何分析異常的?
抓包分析,用fiddler、F12,app上的話,那就用fiddler設置代理,去看請求報文和返回報文了
查看后端日志
十五、有那些類型的接口?
如內部接口和外部接口;單一接口,組合接口
根據協議劃分:http接口,soap接口,
http接口: get, post, put, delete;
Web service接口: soap,rmi, rpc
十六、什么是Web Service?
Web Service是一個SOA(面向服務的編程)的架構,它是不依賴于語言和平臺,可以實現不同的語言間的相互調用,通過Internet進行基于Http協議的網絡應用間的交互;
Web Service = WSDL+SOAP+UDDI
十七、什么是SOAP接口
SOAP簡單對象訪問協議,是一種基于 XML 的協議。 SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議HTTP,簡單郵件傳輸協議SMTP。
十八、什么是REST/RESTFUL接口?
在REST API中,通過HTTP協議進行交互。
REST - 表述性狀態轉移,它不是協議和標準而是表示一種風格, 將Http協議的設計初衷作了詮釋。它正快速成為API創建的標準。
十九、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中的參數不會被保留
二十、HTTP接口的請求參數類型有哪些?
-
查詢字符串參數(Query String Parameters參數)一般用于GET請求,會以url string的形式進行傳遞。
-
請求體參數(Request Body)一般用于POST請求,可以使用Content-Type來指定不同參數類型。
二十一、常見的 POST 提交數據方式
請求body;請求url+請求body:
Content-type:
application/x-www-form-urlencoded: 表單提交–鍵值對, form
multipart/form-data:文件上傳—文件 ,MIME
application/json,text/xml:
二十二、、如何對請求數據加密?
為什么要加密,常規加密方式
-
Jmeter–找它的對應組件或函數;如果沒有寫代碼,
-
Requests–寫代碼,利用python自帶的或第三方的模塊
二十三、HTTP協議無狀態?怎么解決Http協議無狀態?
1)無狀態指對于事務處理沒有記憶能力,每個http請求都是完全獨立的。 2、無狀態協議解決辦法: 通過Cookie或Session。
A. client發送登錄請求,server判斷登錄成功,生成cookie并返回響應
B. Client保存cookie,并在接下來的請求時,帶上cookie
C. Server接收到請求,對請求中的cookie做驗證
二十四、Cookies機制和session機制的區別
cookies數據保存在客戶端,session數據保存在服務器端;
cookies可以減輕服務器壓力,但是不安全,容易進行cookies欺騙;
session較安全,但占用服務器資源;
Cookie實現方式:
- 登錄成功,server返回cookie—響應的header的set-cookie字段
2)下次請求,請求header中通過cookie字段帶上需要的cookie
session實現方式—cookie,Url回寫
1)登錄成功,server創建session并返回sessionid
2)下次請求時,請求報文中帶上sessionid