介面測試再思考

2022-06-03 04:51:07 字數 2807 閱讀 8146

寫在前面

為什麼要做介面測試?這個命題本身就是乙個比較寬泛的範疇,我也是在工作和學習中對這個命題常思考、常更新,不斷豐富對介面測試的理解。

端午假期,沒有外出安排,放下火熱的俄羅斯世界盃,正是學習總結的好時間,在testerhome論壇上看到了一篇雖然篇幅短小,但是質量很好的文章,促使自己也想寫點東西,當作記錄。

先搬運一下維基百科上的英文解釋:

翻譯過來就是:

一、介面測試的意義

1. 更早的發現問題

測試工作應該更早地介入到專案開發中,測試應該更早的介入到專案開發中,因為越早的發現 bug,修復的成本越低。然而功能測試必須要等到系統提供可測試的介面才能對系統進行測試。而介面測試可以功能介面開發出來之前對系統進行測試。系統介面是上層功能的基礎,介面測試可以更早更低成本的發現和解決問題。

然而,在實際的開發過程中,開發人員並沒有充足的時間去編寫單元測試,並且他們往往對自己編寫的 **有足夠的信心,不願意將「浪費」時間在編寫單元測試上面。這個時候介面測試的作用就會變得更加重要。

2.縮短產品研發週期

對於產品研發週期來說,如果將所有測試工作都集中在功能測試階段。那麼測試的問題和修復週期就會變長。因為測試可以更早的介入產品開發中,所以,可以有效的控制功能階段 bug的數量;從而有效的縮短產品開發周期。

3.發現更底層的問題

系統的有些底層邏輯是在ui功能測試中不太容易觸發的,那麼這些邏輯可能會存在問題。介面測試可以更容易更全面的測試到這些底層的邏輯。

4.檢查伺服器的異常處理能力

通常把前端的驗證稱為弱驗證,因為它很容易被繞過,這個時候如果只站在功能的層面進行測試, 就很難發現一些安全的問題。不以功能為入口的介面測試就會很容易的驗證這些異常情況。

二、案例

某公司發現,價值100元的商品,在該公司網上**被以0.01元買走了很多。攻城獅們火速定位,問題原因很快被找到了,原來是購買商品介面的bug。該介面需要3個引數:商品id、商品單價、購買數量,而伺服器根據介面傳過來的商品單價(0.01元)生成了訂單。伺服器本應根據資料庫中的商品單價100元來生成訂單。如下圖,我們將頁面上的單價修改後,再購買,提交到伺服器的商品單價就是0.01元。

作為測試工程師的你,有做過這種測試嗎?

如果沒有強烈建議你趕緊補充測試。僥倖是測試工程師的最大天敵之一

2.1 介面是什麼

介面測試是測試系統元件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的互動點。測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。舉個例子,我提供加法的計算介面,你給我兩個數,我就給你返回乙個和。

2.2 什麼是介面測試

狹義的介面測試指的是對介面進行測試,上個例子中測試的是不同輸入引數時,我加法的返回是否正確。一般講的介面測試是這種。

廣義的介面測試包含介面提供方、介面呼叫方的測試。 比如,你呼叫我的介面執行加法,我返回錯誤的響應,或者我響應超時,這時你的處理是否正確。(也就是客戶端容錯)

2.3 為什麼要做介面測試

上面的案例就能說明做介面測試的重要性。一般做介面測試有如下原因:

一般的功能測試,覆蓋不到多種情況。(如上例所示)

從安全的角度考慮,使用者密碼、其他使用者隱私資訊傳輸時都需要進行加密。

很多系統是沒有介面的,只提供介面功能,沒法通過介面的方式進行測試。

2.4 介面測試流程

1、 專案啟動後,測試人員要盡早找到開發人員拿到介面測試文件

2、 獲取介面測試文件後,就可以進行介面用例的編寫和除錯

3、 介面用例編寫除錯完成後,部署到持續整合測試環境

4、 設定指令碼執行頻率告**式等基本引數,進行介面的日常監控

5、 每日進行介面指令碼的維護更新介面異常的處理

2.5 怎麼做介面測試

「怎麼做介面測試」這個問題可以分解為兩個問題:

2.5.1 怎麼設計介面測試用例:

2.5.2 怎麼執行介面測試:

1.fiddler、soapui、postman等可以做半自動的介面自動化測試;

2.使用robot framework做全自動化的介面自動化測試;

3.自己用**做全自動的介面自動化測試,如python + unittest;

'''通過持續整合的介面監控能夠及時的發現專案中存在的問題,這對持續運營的專案來說,非常重要。'''

二、例項中大部分內容來自:

任何舉動之前,先思考,思考,再思考

windows 使用者態程式高效排錯 之讀書筆記 之所以會讀 windows 使用者態程式高效排錯 這本書,是因為某個賣儲存的技術大拿不停地給我丟 case 一些雖然看起來很容易,但是設計細節部分的 case 讓人崩潰。在這段時間陸續重新開始使用 netmon windbg 等工具來幫助排錯。無奈,...

雜湊表 再思考

雜湊表具有和陣列相同的可以根據下標實現隨機訪問的特性。陣列查詢的特性 陣列的儲存空間是連續的,因此對取值 訪問 操作比較友好,支援根據下標實現隨機訪問,時間複雜度為 o 1 雜湊表 雜湊表採用了陣列可以根據下標實現隨機訪問,時間複雜度為 o 1 的特性。問 1 那雜湊表是怎樣將陣列的特性應用到自身的...

執行緒安全再思考

當多執行緒併發訪問乙個方法 函式 時的執行緒安全問題 首先,所有執行緒訪問的是同乙個方法嗎?no,方法之於執行緒 就好像 程式之於程序一樣,每一次執行都是獨立的,是在某乙個資料集上的一次執行.這樣來看 方法是一段程式 在記憶體某個空間,假設是0000h到0100h,執行緒a執行到0050h時被打斷,...