深入了解接口測試:方法、工具和關鍵考慮因素(一)

接口測試是軟件測試中的一項重要工作,它涉及到系統與系統之間的交互點。接口可以是外部接口,也可以是內部接口,包括上層服務與下層服務接口以及同級接口。在接口測試中,我們需要確保接口能夠按照預期的方式進行通信和交互,并且能夠正確處理輸入和輸出數據。

什么是接口?

接口是具有特定輸入和輸出的一套邏輯處理單元,它不需要了解內部的實現邏輯,可以看作是黑盒處理邏輯。接口可以是外部系統與系統之間的交互點,也可以是系統內部不同子系統之間的交互點。

如果模塊請求由?HTTP?改為 HTTPS,測試方案應該如何制定和修改?

首先,嘗試使用 HTTP 和 HTTPS 分別進行登錄。如果使用 HTTPS 可以正常登錄,并且瀏覽器地址欄顯示一個鎖頭圖標,說明該網站已經部署了 SSL。如果 HTTP 和 HTTPS 都可以正常登錄,進一步說明該網站沒有設置強制使用 HTTPS 登錄,或者沒有設置 HTTP 自動跳轉到 HTTPS。

如果使用 HTTP 登錄后跳轉到 HTTPS 頁面,說明該網站已經部署了 SSL,并且設置了 HTTP 自動跳轉到 HTTPS。
根據實際情況和需求,可以調整測試方案并相應地修改模塊的請求方式。

常用的 HTTP?協議調試代理工具有哪些?詳細說明抓取 HTTPS 協議的設置過程。

常用的 HTTP 協議調試代理工具包括 Fiddler、Charles、Postman 等。以下以 Fiddler 為例,詳細說明抓取 HTTPS 協議的設置過程:

打開 Fiddler 工具,在菜單欄選擇 “Tools”,然后選擇 “Options”。

在 “Options” 窗口中,選擇 “HTTPS” 選項卡,并勾選 “Capture HTTPS CONNECTs” 和 “Decrypt HTTPS traffic” 選項。

根據需要選擇要解密的來源,可以選擇 “All Processes” 或者手動添加需要解密的進程。

可選擇是否忽略服務證書錯誤,根據測試需求進行設置。

完成以上設置后,可以在瀏覽器中設置代理地址為 “IP:8888”,然后安裝 Fiddler 提供的證書,即可在瀏覽器中抓取 HTTPS 協議的數據流量。

接口產生的垃圾數據如何清理?

利用數據庫操作進行數據的增刪改查,通過造數據和數據清理來處理垃圾數據。

在測試用例的前置操作中,可以使用 setUp 方法進行數據準備。

在后置操作中,可以使用 tearDown 方法進行數據清理。

在執行測試前整庫備份,測試完畢,備份還原(不推薦)

依賴第三方接口的處理方法是什么?

搭建一個模擬服務,以模擬第三方接口的返回數據。例如,可以使用 Moco 這樣的開源框架來搭建模擬服務。搭建模擬服務需要熟悉相關工具和框架,并能夠掌握如何模擬返回的數據、數據格式以及請求方式等。

利用一些模擬工具(如 JSON Server、EasyMock)來模擬第三方接口的數據返回,以盡可能減少對第三方數據接口的依賴。

測試數據應該放在哪里?

測試數據的存放位置可以根據實際情況和需求來決定。以下是一些常用的測試數據存放方法:

對于登錄賬戶數據、注冊賬戶數據、接口參數以及郵箱配置數據等不同類型的數據,可以根據其特點進行存放。例如,登錄賬戶數據和注冊賬戶數據可以使用配置文件(如 INI 文件)存放;接口參數可以使用 YAML、JSON、Excel 等格式進行存放。

對于一些需要多組測試參數的接口,可以采用參數化的方式進行數據存放。可以使用 YAML、文本、JSON、Excel 等文件來管理參數化數據。

對于需要反復使用的數據,例如訂單狀態數據,可以將其存放到數據庫中,在每次數據初始化之后使用,并在使用完畢后進行清理。

對于少量的靜態數據,如單個接口的測試數據,可以將其寫入到腳本的開頭部分,或者使用全局變量進行存儲。

什么是數據驅動,如何進行參數化?

數據驅動是一種測試方法,通過將測試數據和測試邏輯分離,實現對測試數據的靈活管理和重復使用。參數化是數據驅動的一種常見方式,它通過在測試用例中引入參數,根據不同的參數生成多個測試用例。

在接口測試中,數據驅動和參數化的概念非常重要,可以提高測試效率和覆蓋率。以下是一些常用的數據驅動和參數化的實現方式:

在 Python 的 unittest 框架中,可以使用 ddt 模塊來實現數據驅動和參數化。通過使用 @ddt 和 @data 這兩個裝飾器,可以在測試用例中傳入不同的參數,并生成對應的測試用例。

在 pytest 框架中,可以使用 @pytest.mark.parametrize 裝飾器實現參數化。通過傳入不同的參數組合,生成對應的多個測試用例。

如何處理下一個接口請求參數依賴上一個接口的返回數據?

將不同的接口封裝為不同的函數或方法,讓其返回所需的數據。使用一個中間變量來接收上一個接口返回的數據,并將其傳遞給下一個接口。可以使用全局變量或者測試類的屬性來保存中間數據或者數據庫等等。

對于單接口測試中,如果依賴接口只需要在測試開始執行一次,可以將依賴接口的請求放在類級別的前置方法中,并通過全局變量或者當前用例類的屬性來傳遞依賴數據。例如,使用類屬性 cls.token = data[‘token’] 來保存依賴的 token 數據。

對于單接口測試中,如果依賴接口需要在每個用例前執行,可以將依賴接口的請求放在方法級別的前置方法中,并通過用例對象的屬性來傳遞依賴數據。例如,使用實例屬性 self.order_id= res[‘id’] 來保存依賴的 ID 數據。

對于多接口的業務流測試,可以通過當前用例類的屬性來傳遞下一個接口所需的依賴數據。例如,使用類屬性 self.class.order_id = self._response.json()[‘data’][‘id’] 來傳遞下一個接口需要的數據。

如何處理依賴登錄狀態的接口?

對于需要 token 的登錄接口,可以在登錄后將 token 存儲到一個 YAML、JSON 文件中,或者直接使用全局變量或測試類的屬性進行保存。后續的請求可以從存儲的位置獲取 token 并使用。

對于需要 cookies 參數的接口,可以使用 requests.session() 創建一個會話對象,并在后續的請求中使用該會話對象進行自動關聯 cookies。通過 s.get() 和 s.post() 方法發送請求,會話對象會自動關聯 cookies。

接口測試的步驟有哪些?

發送接口請求:使用合適的工具或框架發送請求,并攜帶請求參數。

測試接口獲取返回值:獲取接口返回的數據,包括響應狀態碼、響應頭和響應體等。

斷言:根據預期結果,對接口返回的數據進行斷言判斷,驗證實際結果是否符合預期。

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

在測試開始前先進行登錄操作,獲取有效的登錄憑證(如 token 或 cookies)。

在每個需要登錄狀態的接口測試用例中,先進行登錄操作,并獲取登錄憑證。

將獲取的登錄憑證保存在全局變量、測試類的屬性或者配置文件中,以便在后續的請求中使用。

在發送請求時,將登錄憑證作為請求參數或者請求頭的一部分進行攜帶。

在接口返回結果中驗證登錄狀態相關的信息,確保接口正確處理了登錄狀態。

解釋什么是 SOAP?

SOAP代表簡單對象訪問協議(Simple Object Access Protocol),它是一種基于XML的協議,用于在計算機之間交換結構化信息。SOAP被設計用于不同的應用程序和操作系統之間的通信,它使用XML格式來定義消息的結構和內容,并使用HTTP、SMTP等協議進行消息的傳輸。SOAP通常用于Web服務之間的通信,通過SOAP協議,應用程序可以以標準的方式進行遠程過程調用(RPC)。

解釋什么是 REST API?

REST API是一組用于實現網絡應用程序之間通信的功能集合。REST代表表現層狀態轉移(Representational State Transfer),它是一種基于HTTP協議的設計風格,被廣泛應用于構建分布式系統和互聯網應用。REST API使用HTTP方法(GET、POST、PUT、DELETE等)來實現對資源的訪問和操作,并使用URL來定位資源。相比于SOAP等復雜的協議,REST API更加簡單、輕量且易于理解,它已成為創建Web服務和移動應用程序的常用標準。

API測試發現的Bug類型是什么?

缺少或重復的功能:API未實現某些功能或存在重復的功能。

無法正常處理錯誤條件:API未能正確處理錯誤情況,如無效的輸入、異常情況等。

可靠性:API在高負載、并發或異常網絡情況下的表現不穩定或不可靠。

安全:API存在安全漏洞,如未經身份驗證的訪問、敏感數據泄露等。

未使用的標志:API中存在未使用或廢棄的標志或參數。

未實現錯誤:API中存在未實現或未正確實現的功能。

錯誤處理不一致:API對不同的錯誤條件沒有統一的處理方式或錯誤信息不一致。

性能:API在處理大數據量或高并發情況下性能下降或出現延遲。

多線程問題:API在多線程環境下出現數據競爭、同步問題等。

錯誤不正確:API返回的錯誤信息或狀態碼與預期結果不符。

你測試的接口屬于哪一類?

測試的接口屬于服務器接口,即基于HTTP協議的接口。這類接口通常是B/S架構的,由客戶端(如瀏覽器)調用或模擬客戶端調用服務器提供的請求接口,服務器完成處理并返回響應。例如,Web服務接口、HTTP接口、JMS接口、Hessian接口等都屬于這一類別。

Cookie 保存在哪里?

Cookie可以保存在不同的位置,具體取決于是否設置了過期時間:

如果設置了過期時間,Cookie將保存在客戶端的硬盤中,即存儲在瀏覽器的Cookie文件中。

如果沒有設置過期時間,Cookie將保存在客戶端的內存中,即存儲在瀏覽器的內存中。這種類型的Cookie通常稱為會話Cookie,它只在瀏覽器會話期間有效,關閉瀏覽器后會被刪除。

HTTP 有哪些請求方法?

GET:用于請求獲取指定資源的表示。通過URL傳遞參數,通常用于獲取數據。

POST:用于向指定資源提交數據,通常用于提交表單或進行資源創建。

PUT:用于向指定資源位置上傳新的表示,通常用于資源的更新。

DELETE:用于請求刪除指定的資源。

OPTIONS:用于獲取目標資源所支持的通信選項。

HEAD:類似于GET請求,但只返回響應頭部信息,不返回響應體。

PATCH:對資源進行部分修改。

接口自動化測試的流程?

需求分析:了解接口的功能和需求,明確測試的目標和范圍。

用例設計:根據需求編寫測試用例,包括正向測試、邊界測試、異常測試等不同場景的測試用例。

腳本開發:使用合適的編程語言和測試框架編寫自動化測試腳本,實現接口的請求和響應驗證等功能。

測試執行:執行自動化測試腳本,發送接口請求并獲取響應結果。

結果分析:對測試結果進行分析和比對,判斷接口是否符合預期結果。

缺陷跟蹤:如果發現接口存在缺陷,及時記錄并跟蹤缺陷,確保問題得到解決。

報告生成:生成測試報告,包括測試覆蓋率、測試結果、缺陷統計等信息,供團隊和管理層查閱。

接口測試用例的編寫要點有哪些?

必填字段:測試請求參數的必填項和可選項。

合法性:驗證輸入和輸出數據的合法性,包括合法的參數值、數據類型等。

邊界:測試請求參數的邊界值,例如最大值、最小值、臨界值等。

容錯能力:測試接口在大容量數據、頻繁請求、重復請求等異常情況下的處理能力。

響應數據校驗:對接口的響應數據進行斷言和校驗,驗證返回結果是否符合預期。

邏輯校驗:測試不同接口之間的邏輯關系,如某些請求需要按嚴格的先后順序調用。

性能:進行接口的并發測試,逐步增加負載,分析系統的性能瓶頸點。

安全性:測試接口的安全性,如輸入惡意字符、注入攻擊、敏感信息泄露等。

異常處理:測試接口在各種異常情況下的處理能力,如網絡異常、服務器錯誤等。

UI 級別測試和 API 測試之間的關鍵區別?

目標、方法、技術。

UI級別測試(User Interface Testing)關注于測試應用程序的用戶界面,驗證用戶如何與應用程序進行交互,測試應用程序元素的外觀和行為,例如按鈕、表單、布局等。UI級別測試主要關注應用程序的外觀和用戶體驗。

API測試(Application Programming Interface Testing)關注于測試應用程序接口,驗證接口的功能、性能、可靠性等。API測試主要關注應用程序的功能和內部邏輯,獨立于用戶界面。API測試可以通過直接調用接口發送請求并驗證響應結果來進行,無需依賴UI界面。

UI級別測試和API測試是在不同層面上進行的測試,UI級別測試更加關注應用程序的外觀和用戶交互,而API測試更加關注應用程序的功能和內部實現。

最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/165388.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165388.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165388.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【攻防世界-misc】can_has_stdio?

1.用記事本打開文件是這樣子的, 這是一段BF(Brainfuck)編程語言代碼,屬于一種極簡化的編程語言,用于演示計算機程序設計概念。這段代碼包含了一些操作符,如">"表示指針向右移動,&q…

【C++破局】泛型編程|函數模板|類模板

?作者主頁 📚lovewold少個r博客主頁 ??本文重點:c模板初階知識點講解 👉【C-C入門系列專欄】:博客文章專欄傳送門 😄每日一言:花有重開日,人無再少年 目錄 前言 泛型編程 函數模板 函數模…

用Java實現簡易的圖書管理系統(超詳細)

目錄 1.設計背景 2.設計思路 3.模塊展示及代碼演示 3.1 Book類的實現 3.2 BookList類的實現(書架) 3.3 異常類的實現(OperationException) 3.4 用戶類的實現 3.5 操作接口的實現(定義規范) 3.6 操作類的具體實現 3.6.1 增加操作 3.6.2 查找操作 3.6.3 刪除操作 3.6…

標簽打印機打印標簽時出現,數據處理過程中錯誤 無法設置項目 圖片1的內容無法打印

環境: Win10專業版 NiceLabel Designer 10.1 問題描述: 標簽打印機打印標簽時出現,數據處理過程中錯誤 無法設置項目 圖片1的內容無法打印 解決方案: 1.刪除標簽部分文字打印測試 還是一樣(未解決) …

已解決java.lang.IllegalStateException異常的正確解決方法,親測有效!!!

已解決java.lang.IllegalStateException異常的正確解決方法,親測有效!!!文章目錄 報錯問題解決思路解決方法交流 報錯問題 java.lang.IllegalStateException 解決思路 java.lang.IllegalStateException通常表示程序的當前狀態與…

jenkins 參數構建

應用保存 [rootjenkins-node1 .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved i…

【嵌入式面試】2022年嵌入式經典面試題匯總(C語言)

📜作者:不想脫發的基兄 📺專欄:《嵌入式面試》 📣格言:不管前方的路有多苦,只要走的方向正確,不管多么崎嶇不平,都比站在原地更接近幸福。 前言: 2022年秋招我…

C++之初始化列表詳細剖析

一、初始化列表定義 初始化列表:以一個冒號開始,接著是一個以逗號分隔的數據成員列表,每個"成員變量"后面跟一個放在括號中的初始值或表達式。 class Date { public:Date(int year, int month, int day): _year(year), _month(mont…

OpenCV快速入門:圖像分析——圖像分割和圖像修復

文章目錄 前言一、圖像分割1.1 漫水填充法1.1.1 漫水填充法原理1.1.2 漫水填充法實現步驟1.1.3 代碼實現 1.2 分水嶺法1.2.1 分水嶺法原理1.2.2 分水嶺法實現步驟1.2.3 代碼實現 1.3 GrabCut法1.3.1 GrabCut法原理1.3.2 GrabCut法實現步驟1.3.3 代碼實現 1.4 Mean-Shift法1.4.1…

論文閱讀 (106):Decoupling maxlogit for out-of-distribution detection (2023 CVPR)

文章目錄 1 概述1.1 要點1.2 代碼1.3 引用 2 預備知識3 方法3.1 MaxLogit3.2 改進MaxCosine和MaxNorm3.3 DML 1 概述 1.1 要點 題目:解耦最大logit分布外檢測 (Decoupling maxlogit for out-of-distribution detection) 方法: 提出了一種心機基于log…

多級緩存快速上手

哈嘍~大家好,這篇來看看多級緩存。 🥇個人主頁:個人主頁????? 🥈 系列專欄:【微服務】 🥉與這篇相關的文章: JAVA進程和線程JAVA進程和線程-CSDN博客Http…

不做機器視覺工程師,轉行,轉崗的建議與想法

正所謂外行看熱鬧,內行看門道。提前咨詢前輩們,多問問,多看看。要做就做,一定要提前做好防范。 無論你是要轉行或者是轉崗,看你有沒有本錢和試錯成本 有些人,家庭好,可以一直去試錯和從頭再來。…

無線WiFi安全滲透與攻防(國外篇):使用 Aircrack-ng 破解 WEP 密碼

使用 Aircrack-ng 破解 WEP 密碼 使用 Aircrack-ng 破解 WEP 密碼一. 用 Aircrack-ng 破解 WEP 密碼 - 背景知識網卡與網卡芯片WEP 加密協議WEP 所使用的身份認證協議二. 使用 Aircrack-ng 破解 WEP 密碼 - 破解原理破解機理三. 使用 Aircrack-ng 破解 WEP 密碼 - aircrack-ng …

學習.NET驗證模塊FluentValidation的基本用法(續1:其它常見用法)

FluentValidation模塊支持鏈式驗證方法調用,也就是說,除了 RuleFor(r > r.UserName).NotEmpty()調用方式之外,還可以將對單個屬性的多種驗證函數以鏈式調用方式串接起來,比如UserName屬性不能為空,長度在5~10之間&a…

__attribute__((constructor))用法解析

__attribute__((constructor))是GCC和兼容的編譯器中的一個特性,用于指示編譯器將一個函數標記為在程序啟動時自動執行的初始化函數。 同樣的還有__attribute__((destructor))在main()函數后調用。 當你在一個函數聲明或定義前加上__attribute__((constructor))屬…

淺談 Guava 中的 ImmutableMap.of 方法的坑

作者:明明如月學長, CSDN 博客專家,大廠高級 Java 工程師,《性能優化方法論》作者、《解鎖大廠思維:剖析《阿里巴巴Java開發手冊》》、《再學經典:《EffectiveJava》獨家解析》專欄作者。 熱門文章推薦&…

vue項目下.env.development環境變量配置文件

.env.development 文件是一個用于開發環境配置的文件。在許多應用程序中,開發環境和生產環境具有不同的配置需求。.env.development 文件允許你在開發環境中定義特定的環境變量和配置選項。 一般來說,.env.development 文件用于存儲開發環境相關的配置信…

國自然項目基金撰寫的隱藏技巧、范例分析及提交前的自我審查

目錄 一、基金項目申請要求、重點及項目介紹 二、基金的撰寫技巧 三、基金撰寫的隱藏技巧 四、范例分析及提交前的自我審查 更多應用 基金項目申請需要進行跨學科的技術融合,申請人需要與不同領域結合,形成多學科交叉的研究。基金項目申請在新時期更…

由紅黑樹引出的HashMap擴容機制的思考

紅黑樹是什么? 三大特點: 根節點是黑色,葉節點是不存儲數據的黑色空節點 任何相鄰的兩個節點不能同時為紅色 任意節點到其可到達的節點間包含相同數量的黑色節點 聯想:Java HashMap底層紅黑樹原理 HashMap基于哈希表Map接口實…

快速掌握Pyqt5的三種主窗口

PyQt5是一個強大的跨平臺GUI框架,它提供了多種不同類型的主窗口類,以滿足不同的應用需求。下面是PyQt5中最常見的幾種主窗口類型及其創建方式的簡介: 1. QMainWindow QMainWindow是用于創建具有菜單欄、工具欄、狀態欄和中心窗口部件&#…