本文你將瞭解到 python
1、接口測試基本概念,包含什麼是接口,什麼是接口測試,爲何要作接口測試shell
2、接口測試用例設計數據庫
3、怎樣不用寫代碼,也能快速的根據開發的API文檔完成接口自動化測試腳本後端
注:若是你對接口基本概念和接口測試用例已熟悉,能夠直接跳過,其實看一遍也無防,就看成 溫故知新了。api
適合本文人羣 數組
1、以前學習接口測試從入門到放棄的初級測試工程師安全
2、想快速完成 接口測試腳本編寫的測試工程師(強烈推薦)服務器
3、因某種緣由(好比公司沒有專職測試人員),須要本身寫接口測試腳本的開發人員(強烈推薦)cookie
1、接口測試基本概念 ide
首先了解被 測試對象:接口
接口是指外部系統與系統之間以及內部各子系統之間的交互點。
包括外部接口、內部接口,內部接口又包括:上層服務與下層服務接口(好比serivce層調用DAO層接口)、同級接口(好比用戶註冊,會先調用查詢用戶信息的接口,查看該用戶是否已經註冊)。
不論是內部接口仍是外部接口,通常是以API形式出現,一般在規範的API接口文檔中,應該包含:接口描述、接口URL、請求方式、請求參數、參數類型、參數含義說明、取值限制、是否必填、返回參數、成功與失敗示例等。
而後瞭解對接口進行的測試活動:接口測試
廣義的理解 接口測試就是,對模塊或系統間接口進行測試;
狹義的理解接口測試就是,對接口的入參、接口處理邏輯、設計的返回內容進行測試。
接口測試形式:單個接口測試(包含性能測試)和經過接口調用進行場景測試。
接口測試原理:經過工具或本身擼代碼,模擬客戶端(根據測試用例定義請求參數)向服務器端請求訪問接口,檢查服務器端返回內容是否與預期值一致。
接口測試流程(僅指迭代中的流程):需求評審 -> 接口定義 -> 用例設計 -> 腳本編寫 -> 執行腳本 -> 結果分析
最後瞭解作接口測試的意義,即:爲何要作接口測試
簡單來講就是,下降測試成本,提升開發效率。
充分來講就是:
1、接口測試相對容易實現自動化持續集成。
2、接口測試能讓測試提前介入,發現潛在問題;保證接口質量,提升先後端聯調開發效率。
3、接口測試進行安全驗證比較容易:先後端是否統一校驗和敏感信息打印(接口返回內容中的敏感信息)是否加密過。
2、接口測試 用例設計
這裏只說單個接口測試用例設計,場景接口測試用例設計和UI功能的場景測試用例同樣,只是經過調用接口來實現而已。
設計接口測試用例,主要從接口入參、接口處理邏輯、接口返回參數等3個方面入手:
1、設計接口入參測試用例,常見參數類型有:數值、字符串、數組或鏈表、結構體
針對這些類型入參,一般咱們經過等價類方法和邊界值方法 去設計測試用例
等價類方法:關注取值爲範圍內、取值爲範圍外的狀況;一般會出現 取值在範圍外時,接口沒有正確返回錯誤信息的問題。
邊界值方法:關注取值範圍的邊界值、入參的數據類型邊界值;一般會出現數據類型邊界值溢出問題,好比int類型數據的最大值和最小值時。
爲了補充用例,還要考慮特殊值的狀況,好比0、空、null、負數、非特定類型值和重複值等;一般會出現接口沒有正確處理邏輯致使異常退出的問題。
2、設計接口處理邏輯測試用例,主要是驗證先後端是否統一校驗
針對接口處理邏輯,經過從以角度分析:
約束條件分析,常見的約束條件:數值限制、狀態限制(登錄狀態)、關係限制(綁定了某種關係)、權限限制(會員、非會員等)。
操做對象分析,好比項目ID爲PJ000屬於用戶A的,訪問這個項目的接口,須要傳項目ID,用戶B傳參時,使用PJ000這的ID時,檢查是否應該不能訪問這個項目。
狀態轉換分析,好比優惠券已使用,是否經過接口仍能使用等狀況。
時序分析,好比不按流程順序執行,是否出現數據異常狀況。
3、設計接口返回參數測試用例
針對接口處理邏輯,經過從如下角度分析:
返回結果分析,覆蓋全部返回碼。
接口超時分析,接口超時一般會出現,未進行超時處理,致使流程阻塞或超時後,又收到接口返回,致使邏輯出錯。
3、不用寫代碼,也能作好接口測試:No Code, Still API Test
不用寫代碼,也能作好接口測試,固然須要藉助神器,才能完成這項工做,這個神器叫作:eolinker,官網 https://www.eolinker.com
在用eolinker以前,我是用jmeter作接口測試的,用jmeter以前是用python requests,以爲jmeter效率更高,效率高體如今:
1、測試不須要寫代碼,你們知道 測試用代碼寫測試腳本跟開發寫產品代碼同樣,須要編寫-調試-測試-維護,對於測試來說,須要消耗太多時間和精力,除非公司有專人作測試開發。
2、UI模式,填空就能夠,很簡單,最多就是用Beanshell寫少許的函數調用或斷言
作接口測試只是用到eolinker的自動化測試功能模塊,其餘功能去官網註冊帳號後,自行了解,這裏只說下eoLinker 自動化測試功能模塊的特色,也是我選用的理由:
1、開發的API文檔編寫和測試的接口測試腳本編寫,能夠都在eolinker上進行,因此寫測試腳本時,能夠直接從eolinker的API文檔功能模塊中,導入API接口,寫測試腳本只需添加斷言,和要傳的參數便可。
2、支持UI和Code兩個編寫模式,就是說能夠經過UI填空方式完成測試腳本設計,也能夠經過寫JS代碼,完成測試腳本設計,官方有教程。
3、調用以前接口的返回參數內容,做當前接口的請求參數,eolinker提供了 關聯功能,只要點點點就能夠完成,比Jmeter還要便捷。
4、還提供比較高級的代碼注入功能,能夠在請求接口前,作一些前置處理,好比請求參數值加密等,也能夠把返回內容進行後置處理,好比把接口的返回內容中某個字段值,設成全局變量
5、測試結果斷言提供4種方式:Json校驗、XML校驗、徹底匹配、正則匹配,用的最可能是Json校驗,若是想校驗某個字段內容,不需寫正則,只要直接要校驗的字段名就能夠了。
6、能夠定時執行測試用例,執行完後,發送測試報告到指定人員郵箱中。
編寫接口測試用例腳本 工做流程:開發編寫API接口文檔 -> 導入開發的API接口,測試根據編寫好的測試用例,編寫測試用例
拿eolinker的一個「添加接口項目接口」測試爲例,作如下工做:
1、編寫添加名爲「添加接口項目」和「查詢項目列表」API接口文檔
2、導入API接口,編寫「添加項目成功」測試用例:
a. 添加項目,校驗返回碼。
b. 調用「查詢項目列表接口」,檢查項目是否成功添加。(像這種新增接口,我之前校驗,用過鏈接數據庫,而後查表內容,發現執行腳本的時候,速度有點慢,後來改用調用查詢列表接口的方法校驗)
3、執行測試腳本,查看測試報告。
Pre 準備
接口1:添加接口項目接口
添加接口項目接口的請求頭
添加接口項目接口的返回內容
接口2:查詢項目列表接口
查詢項目列表接口的請求頭
查詢項目列表接口的返回內容
從上面獲得2個接口API文檔信息:
注:實際項目中是有一份開發寫好的API文檔,多是Word上,多是RAP上,也有多是在eolinker上,我在這裏只是爲了舉例,經過F12取了2個接口的信息(以下面),寫了2個不完整的API文檔做爲本文的操做示例。
接口1:添加接口項目接口
接口URL:https://www.eolinker.com/apiManagementPro/Project/addProject
請求方法:POST
請求參數:
companyHashKey
projectName
projectVersion:1.0
projectType:0
返回內容:
{"type":"project","statusCode":"000000","projectHashKey":"Nr2PNlf82c6a7995d30286e041944fd40e4c01d58b3edeb"}
接口2:查詢項目列表接口
接口URL:https://www.eolinker.com/apiManagementPro/Project/getProjectList
請求方法:POST
請求參數:companyHashKey
返回內容:
{"type":"project","itemNum":4,"statusCode":"000000","projectList":[{"projectHashKey":"83uUHhud0519435001f268f0871eee88090cc68dc00cac7","projectName":"demo_project","projectType":0,"projectDesc":"","projectUpdateTime":"2018-10-08 18:26:57","projectVersion":"1.0","userType":0,"permission":{"userType":0,"endTime":"2099-01-01","isExpire":0}}]}
Step 1 編寫添加名爲「添加API接口管理項目」和「查詢項目列表」API接口文檔
一、 添加API接口管理項目接口 API文檔
二、 查詢項目列表接口 API文檔
Step 2 導入API接口,編寫「添加項目成功」測試用例
注:這裏訪問接口須要登陸,此次就不說接口受權的內容了,後面會作個專題,這裏我直接用cookie模擬登陸狀態
導入API接口,添加項目,校驗返回碼
注:這裏用到了正則,由於返回的projectList是數組,JSON校驗中,目前不支持數組校驗
將導入的API接口編輯成測試用例腳本
Step 3 執行測試腳本查看測試報告
執行測試腳本,查看測試報告
如此,就很快速地完成了一個測試用例腳本的編寫啦!(點下 所有測試,去泡杯茶,回來看測試報告的日子,指日可待!!)
補充:
1、關於登陸,獲取接口受權的處理,能夠寫到前置用例中(也有後置用例),如同python unittest的setUp與tearDown做用。
2、有單獨的環境管理模塊,包含設置默認的hostname、請求頭部信息、全局變量和額外參數等,上個圖看下
環境管理界面
最後總結:
本文向接口測試學習者描述了接口、接口測試爲什麼物,經過對接口測試的基本概念瞭解,再掌握接口測試用例的設計方法及思路,最後藉助優秀的工具,達到簡易、快速的工做效果;
我的見解,不喜勿噴:有些測試可能爲了表現本身也是個開發人員,會寫代碼,便使用大量的代碼去寫自動化測試腳本,文中我也提到測試寫代碼是有很大成本的,固然不是說不建議測試會開發,
咱們能夠去開發一些測試工具來協助本身的測試工做,一來鍛鍊開發能力,二來了解軟件運做原理,方便測試過程當中,更清楚軟件內部結構;
項目一般給咱們測試的時間很少,爲了保障項目按質按量按時的完成,簡易、快速的工做狀態是咱們所迫切的,因此咱們能夠藉助一些優秀的工具去達到咱們的目的。
END...