前言
你是一個測試,你們團隊目前開發模式是前後端分離。
某一天,版本V1.0介面評審完,釋出在了swagger上,前後端各自進行開發。此時你根據介面文件將新介面遷移到JMeter上,然後開始編寫介面測試用例。
過了幾天,前端先提測了APP,怎麼測試前端效果呢,?你想到使用charles抓包,造一些假資料,然後改響應資料。然而介面情況有點多,資料準備起來有點繁瑣。這時前端同學向你介紹了Mock工具Rap,他們把介面放在上面,編寫mock規則,獲得模擬資料進行前端除錯。雖然資料也不是很真實,但是型別和結構是對了。
又過幾天,後端終於提測,連線到測試伺服器上執行介面用例,有個介面報錯,前端開啟價格頁也有些顯示錯亂。你淡定地抓包看資料,查了一下介面文件,原來是後端返回的欄位型別錯了,於是你在jira上提了bug給後端同學,並有理有據貼上了文件截圖和抓包截圖。
後端同學過了一會跑過來告訴你,”這個欄位有變更,我在Postman除錯通過的,忘記改文件和通知你們啦,麻煩你轉給前端吧。“
後端很無辜,前端很無奈,你心很累,然而只能默默改用例。
又過了一段時間,你發現,有些自動化用例跑不動了,原來是隔了很久,介面的變動有些沒來得及改,指令碼的資料跟文件差異變多,看來還要專門找時間檢查介面的差異。可是剛好有新人入職,還要給他培訓JMeter的用法,看來這周又要加班了?。
你有沒有想過,這一切的一切都是因為你的團隊沒有用過一個可以同時解決資料同步、除錯、Mock、自動化測試的 介面文件管理工具。咦,你問我是什麼神器嗎,那我就告訴你?
什麼是Apifox
Apifox是一個集API 文件管理、介面除錯、Mock功能、測試於一體的研發協作平臺,簡單來說Apifox 是 Postman + Swagger + Mock + JMeter的有機結合,整合多種介面管理流程,為研發團隊提供一個開箱即用的Api流程管理的視覺化工具。
為什麼選Apifox
我們常常討論敏捷開發、使用數字化工具實現研發專案流程管理。但是在API管理這一塊卻還處於前、後端、測試各自孤島式管理的境況:
- 後端開發通過Swagger管理介面文件,然後通過Postman除錯介面
- 前端開發通過RAP等工具做Mock 介面資料
- 測試通過JMeter、HttpRunner等工具做介面自動化測試、壓力測試
這種模式下,最突出的問題是資料同步問題,幾個工具之間資料彼此隔離,不同的角色各自維護一份介面資料,因介面變更未及時同步導致前後端聯調失敗、或測試用例失效的情況屢屢發生。因此只有將介面資料中心化,圍繞著介面文件,各個角色在同一平臺上進行協作,才能最大提升研發效能。因此Apifox的優勢非常明顯:
1、資料同步:介面資料發生變更實時自動同步到用例、mock服務,不同角色之間無需再關注資料一致性問題,從而高效管理介面文件;
2、跨部門協作:平臺的測試用例、mock規則、公共指令碼等資料可以團隊內共享,實現資料沉澱,減少重複工作;
3、降本提效:常用功能(斷言、資料庫操作、資料提取等)有便捷的視覺化操作,小白也能參與文件管理和自動化測試,避免重複造輪子,降低研發成本,使得研發可以專注於各自的工作。
Apifox初體驗
話不多說,下面帶大家上手體驗,看Apifox是如何兼顧 介面文件管理工具、介面文件生成工具、介面Mock工具、介面除錯工具、介面自動化測試工具等多重身份的~
安裝註冊
Apifox 是跨平臺的工具,支援macOS(Intel+M1)、Linux、windows(32位、64位),在官網選擇對應系統的安裝包下載安裝即可用。
首次使用,可以使用郵箱註冊或直接通過微信登入。
登入apifox,可以看到當前使用者加入的團佇列表和團隊專案列表。點選專案右側的小飛機設定直達,下次開啟Apifox可直達該專案。
介面文件管理
我們進入寵物店專案,如下所示:左側是以樹狀聚合的介面列表,層級為分類(可多級分類)->介面->用例,三個層級均支援一鍵複製、刪除,列表拖拽修改排序。右側是專案概覽頁,可以設定線上文件分享給團隊成員或合作伙伴。
雙擊介面,右側顯示介面文件頁,介面的基本資訊、請求引數格式、響應資料格式、示例值。
點選修改文件/新建介面,可以編輯介面的資訊。如圖我們編輯登入的介面資訊,欄位都可以編輯示例值和說明,欄位型別下拉表單有多種可選,介面清晰容易上手。
當然,Apifox的資料結構和資料模型是完全遵守 JSON Schema 規範 的,可以直接編輯 JSON Schema 來定義資料結構。
線上介面文件
定義好的介面,線上文件效果如下
介面除錯
當我們介面設計好之後,可以除錯看看效果。以登入介面為例,進入執行頁,編輯好引數值,選擇執行環境,點選執行即可發起一個簡單的請求,頁面下方可檢視介面響應、請求詳情。
介面除錯內容可以儲存為一個用例,方便下次除錯或者團隊成員測試用。
除錯和用例都是為了測試介面的正確性,肯定需要驗證介面返回的資訊、有時還要從響應提取資訊供後續請求使用。這時候就需要提取變數和斷言操作,現成的0編碼的視覺化步驟,,入口在後置操作裡面,我們從響應提取一token存為環境變數,並斷言響應裡的city欄位值為“廣州市”。
執行,系統會自動校驗響應的資料結構是否與文件定義一致,當斷言失敗時會提示並列印期望值和實際值。
點選控制檯看到變數token提取成功
變數提取來源和斷言的物件不只是響應JSON,還有cookie、header等,大大提高了編寫斷言的效率。
除了提取和斷言,介面前後置操作還支援資料庫查詢、公共指令碼和自定義指令碼,滿足日常的測試場景下資料庫查詢取值,自定義功能等需求,這些操作使用門檻低,小白使用者也可以優雅從容地進行介面測試~
除了可以編寫JS指令碼,還可以直接呼叫java (.jar)、python (.py)、php (.php)、js (.js)、BeanShell (.bsh)、go (.go)、shell (.sh)、ruby (.rb)、lua (.lua)等語言編寫的外部程式,滿足進階使用者的定製化需求。
資料模型
Apifox文件支援資料模型,可以按分類管理,支援資料模型之間的呼叫
環境管理
每個環境都有自己的前置URL,環境變數,變數的遠端值可在團隊內共享,本地值只儲存在本地不上傳雲端。當我們執行時,選擇環境即發起該環境的請求。使用{{變數名}}即可讀取該環境的環境變數值。
全域性變數和全域性引數供所有環境使用。
Mock功能
通常在前後端並行開發的模式下,前端需要根據API文件,使用 Mock模擬響應資料資料保證前端呼叫鏈路的暢通。Apifox執行時Mock 功能即在本地啟動,介面文件頁可以根據響應結構自動生成mock資料,並且其內建規則使得大部分常用欄位,如頭像、城市、手機號、IP等, 零配置
即可生成非常人性化的 mock 資料。這個功能不僅節省搭建mock服務、編寫mock規則的時間,而且大大增強了前端資料的展示效果:
此外,還可以根據介面/資料結構定義
、Mock規則配置
、Mock 期望配置
,自動生成模擬資料,且使用者可以根據需要靈活構造各種結構的介面資料。
測試用例
當我們要對某個功能做完整流程的測試、或者單一介面的不同情況進行測試時,需要將多個用例串聯起來測試。測試管理-測試用例可以滿足將用例組合起來自動化測試。我們在測試管理這裡建立一個測試用例,點選新增步驟可以選擇從介面用例匯入或者從介面匯入。
選擇從介面用例匯入,可匯入之前編寫的介面用例。匯入模式可選擇複製或繫結,推薦使用“繫結”,測試管理和介面用例資料同步,當一處發生變化時,另一處的資料自動同步無需再手動修改用例。
我們做一個簡單的登入-簽到的例子,匯入2個介面用例-登入和簽到。
我們來看看這兩個用例的設定:登入用例設定了後置操作,從響應提取token存為變數
簽到用例:token欄位引數值讀取登入介面提取的token值進行簽到
匯入之後,可以調整用例排序,設定迴圈次數和執行緒數
執行,生成測試報告如下:
點選介面檢視介面的請求、響應資訊。可以看到登入返回的token值,在簽到請求中使用了。這就是一個簡單的整合測試的例子。
測試套件
套件是測試用例的集合,用於組織更復雜的功能測試,常應用於介面自動化測試、迴歸測試,操作方法類似測試用例。
引數化
在測試用例/套件執行時,設定迴圈次數和執行緒數即可對介面進行壓力測試。在壓力測試中,我們或許還需要對介面使用不同的引數值,Apifox支援介面引數值設定為變數,通過上傳CSV/JSON格式的資料檔案,實現用例執行引數化,還是以登入為例子,我們把賬號密碼都設定為變數
我們建立一個存放賬號和密碼的CSV檔案,第一行是變數名,第二行開始是資料
account | password |
---|---|
test1@qq.com | 123456 |
test2@qq.com | 123457 |
test3@qq.com | 123458 |
test4@qq.com | 123459 |
test5@qq.com | 123460 |
test6@qq.com | 123461 |
test7@qq.com | 123462 |
test8@qq.com | 123463 |
test9@qq.com | 123464 |
test10@qq.com | 123465 |
執行用例時上傳該csv檔案,迴圈次數會自動填充csv的資料行數
點選執行,用例會按csv順序執行,如圖,檢視執行的第二個介面請求,引數值為第二組資料。
持續整合
為了方便整合Jenkins等持續整合工具自動構建、持續執行測試用例,Apifox支援通過命令列執行工具Apifox CLI實現持續整合。主要有下載測試資料執行到本地執行和通過命令下載線上資料執行2種方式。
在測試用例/測試套件頁,點選“持續整合”,即可生成命令,通過Apifox CLI執行該命令實時執行線上測試用例/套件。
執行結果如圖
也可以匯出Apifox CLI
格式資料,通過ApifoxCLI讀取匯出的json資料執行測試用例。
團隊管理
團隊角色分所有者、管理者和普通使用者,分別有以下不同的許可權:
許可權名稱 | 所有者 | 管理員 | 普通成員 |
---|---|---|---|
修改團隊資料 | √ | × | × |
移交團隊 | √ | × | × |
解散團隊 | √ | × | × |
檢視成員許可權列表 | √ | √ | × |
修改成員許可權 | √ | √ | × |
邀請/移出成員 | √ | √ | × |
每個成員在每個專案中可以設定不同的專案許可權:分別是管理員、普通成員、只讀成員、禁止訪問。
不同專案許可權對應內容如下,滿足團隊的多層次管理需求。
許可權名稱 | 管理員 | 普通成員 | 只讀成員 | 禁止訪問 |
---|---|---|---|---|
專案增刪改 | √ | × | × | × |
專案資訊修改 | √ | × | × | × |
訪問介面文件 | √ | √ | √ | × |
介面增刪改 | √ | √ | × | × |
介面檢視除錯 | √ | √ | √ | × |
用例增刪改 | √ | √ | × | × |
用例檢視和執行 | √ | √ | √ | × |
測試套件增刪改 | √ | √ | × | × |
測試套件執行 | √ | √ | √ | × |
資料模型增刪改 | √ | √ | × | × |
資料模型檢視 | √ | √ | √ | × |
環境增刪改 | √ | √ | × | × |
Mock規則增刪改 | √ | √ | × | × |
公共Response增刪改 | √ | √ | × | × |
公共指令碼增刪改 | √ | √ | × | × |
資料庫連線增刪改 | √ | √ | × | × |
自定義函式增刪改 | √ | √ | × | × |
變數增刪改 | √ | √ | × | × |
變數本地值設定 | √ | √ | √ | × |
匯入匯出資料 | √ | √ | × | × |
其他特性
生成程式碼
Apifox提供基於OpenAPI Generator的程式碼生成功能——根據介面模型定義,自動生成各種語言/框架(如 TypeScript、Java、Go、Swift、ObjectiveC、Kotlin、Dart、C++、C#、Rust 等 130 種語言及框架)的業務程式碼(如 Model、Controller、單元測試程式碼等)和介面請求程式碼。目前 Apifox 支援 130 種語言及框架的程式碼自動生成。
更重要的是:可以通過自定義程式碼模板
來生成符合自己團隊的架構規範的程式碼,滿足各種個性化的需求。
總結
都看到這了,這款既能管理介面又能做自動化測試、好用好看還免費的介面文件工具還不趕緊用起來,fox在手,效率全有,準點下班不是夢~
ps.更詳細的使用說明請前往官方文件
本作品採用《CC 協議》,轉載必須註明作者和本文連結