1、什麼是介面?
介面是連線前臺和後臺的橋樑,前臺通過介面呼叫後端已完成的功能,而無需關注內部的實現細節。藉助於介面,可以實現前後臺分離,各自完成開發工作後,進行聯調,提高工作效率。
2、介面的分類?
GET,POST,PUT,DELETE
3、介面的區別?
GET與POST的區別
答:GET的請求資料是在URL上,POST的請求資料是通過FROM表單。安全性:POST介面的比GET介面更安全。
PUT和DELETE的區別
答:PUT用於更新和建立資源;DELETE用於刪除資源。
4、介面測試流程?
答:需求溝通》》制定測試方案》》設計測試用例》》準備測試環境》》執行測試用例》》缺陷跟蹤與迴歸測試》》上線
5、為什麼要設計測試用例?
答:理清測試思路,避免漏測;
提高測試效率;
跟進測試進度;
告訴領導這件事情你做過(也可以避免出了問題後扯皮);
6、如何設計介面測試用例?
答:主要從功能,業務邏輯,安全,異常,介面文件等方面入手。
6.1、功能
介面的功能是否實現,比如呼叫建立叢集介面能正常建立叢集。
介面的實現是否與介面文件一致。比如介面的引數與文件中描述的完全一致。
6.2、業務邏輯
介面的呼叫是否符合業務邏輯。比如支付的時候,需要上游提供訂單號;建立叢集快照的時候,要校驗叢集的狀態是否可用。
6.3、異常場景
主要分為引數異常和資料異常
下面以一個簡單的登入介面為例,正常的請求如下
關鍵字異常:
a.請求URL或body中包含Python JAVA等語言的關鍵字。
b.引數為空,比如下圖中的引數usernam為空:
c.多引數或少引數:
多引數,請求body中多了引數loginmode
請求居然處理成功了,可見服務端並沒有做校驗。可以給開發同學提單了。
少引數,刪除username引數:
後臺返回錯誤資訊,這種情況是正常的。
d.引數不正確
比如我們把username改成userName
後臺給出了錯誤的提示資訊,正常。
資料異常:
a.資料長度
這種情況,後臺需要校驗長度,而不是直接進行查詢。
b.資料為空
c.資料不正確
6.3、安全
主要是header,cookie,唯一識別碼等。
比如我想建立一個叢集,那我是不是要先登入呢。在介面測試的時候可以使用錯誤的token,或已過期的Token下發建立叢集的請求並觀察服務端的響應。
建立叢集,是不是隻要登入了就能建立呢?答案顯然不是的,有的使用者只能檢視的許可權但無建立許可權。那我們就可以使用只有檢視許可權的使用者獲取Token後再去下發建立叢集的請求,看看結果如何。
關於登入,使用者的密碼必須要加密後才能傳輸,否則也是不安全的。可以使用抓包工具進行檢視。
還有如果因密碼錯誤導致的登入失敗,後臺的返回的錯誤資訊是:密碼不正確。這會降低暴力破解的難度,不安全。正確的提示資訊應該是:使用者名稱或者密碼不正確。
6.4、介面文件
介面的實現要和介面文件完全保持一致,方便前臺或其他子系統呼叫。比如介面呼叫的使用的關鍵字是username,文件中寫的確實usernmae,這是肯定不行的。
介面的返回資訊要清晰明確。
7、介面測試工具的選擇
postman:是谷歌瀏覽器的一款外掛,非常強大好用。
Fiddler:可以抓取介面資訊,也可以進行介面測試,自動回覆,mock等,很強大。
假如在介面文件還未完成的情況讓測試人員去做介面測試,這種情況下就可以使用Fiddler工具抓取介面資訊再進行測試。無需等介面文件完成後。
8、如何提供介面測試的效率?
假如領導讓你測試100個介面,你加班加點測試完成後,終於鬆了一口氣。過幾天,專案上線了,領導告訴你再去把介面迴歸測試一遍,這個時候你可能就比較頭大了。有沒有好的解決方案呢?答案就是API自動化
推薦使用Python+unittest+requests完成測試頻率高的介面自動化,如果有更成熟介面測試框架就更好了。一次編寫,可多次使用。