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完成測試頻率高的接口自動化,如果有更成熟接口測試框架就更好了。一次編寫,可多次使用。