TestMace - 一個用於處理 API 的強大 IDE

大家好!今天,我們想向 IT 公眾展示我們的產品 - 一個用於使用 API 的 IDE 測試錘。 也許你們中的一些人已經了解我們 以前的文章。 然而,還沒有對該工具進行全面的審查,因此我們解決了這個不幸的缺點。

TestMace - 一個用於處理 API 的強大 IDE

動機

事實上,我想從我們如何來到這個生活並決定創建我們自己的工具來使用 API 進行高級工作開始。 讓我們先列出一個產品應該具備的功能,在我們看來,我們可以說它是一個「使用 API 的 IDE」:

  • 建立並執行查詢和腳本(查詢序列)
  • 編寫各種測試
  • 測試生成
  • 使用 API 描述,包括從 Swagger、OpenAPI、WADL 等格式匯入。
  • 模擬請求
  • 對一種或多種語言編寫腳本的良好支持,包括與流行庫的集成
  • 等等

該列表可以擴展以滿足您的口味。 而且,不僅要創建IDE本身,還要創建一定的基礎設施,例如雲端同步、命令列工具、線上監控服務等。 最後,近年來的趨勢決定了我們不僅需要應用程式的強大功能,而且還需要其令人愉悅的介面。

誰需要這樣的工具? 顯然,所有至少以某種方式與 API 開發和測試有聯繫的人都是開發人員和測試人員 =)。 此外,如果對於前者來說,執行單一查詢和簡單腳本通常就足夠了,那麼對於測試人員來說,這是主要工具之一,除其他外,它應該包括一個強大的機制,用於編寫測試並能夠在其中運行測試CI。

因此,遵循這些指導方針,我們開始創建我們的產品。讓我們看看現階段我們取得了哪些成果。

快速啟動

讓我們從初次了解該應用程式開始。 你可以下載它 在我們的網站上。 目前,所有 3 個主要平台均支援 - Windows、Linux、MacOS。 下載、安裝、啟動。 當您第一次啟動它時,您可能會看到以下視窗:

TestMace - 一個用於處理 API 的強大 IDE

點擊內容區域頂部的加號以建立您的第一個請求。查詢選項卡如下所示:

TestMace - 一個用於處理 API 的強大 IDE

讓我們更詳細地看看它。請求介面與流行的 REST 用戶端的介面非常相似,這使得從類似工具的遷移變得更容易。讓我們向 url 發出第一個請求 https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - 一個用於處理 API 的強大 IDE

總的來說,乍一看,反應面板也沒有給人任何驚喜。 不過,我想請大家注意以下幾點:

  1. 回應的主體以樹的形式表示,它首先添加資訊內容,其次允許您添加一些有趣的功能,如下所示
  2. 有一個斷言選項卡,它顯示給定請求的測試列表

正如您所看到的,我們的工具可以用作方便的休息客戶。 然而,如果它的功能僅限於發送請求,我們就不會在這裡。 接下來,我將概述 TestMace 的基本概念和功能。

基本概念和特點

節點

TestMace 功能分為不同類型的節點。 在上面的範例中,我們示範了RequestStep節點的運算。 但是,應用程式中現在還提供以下類型的節點:

  • 請求步驟。 您可以透過該節點建立請求。 它只能有一個 Assertion 節點作為子元素。
  • 斷言。 該節點用於編寫測試。 只能是RequestStep 節點的子節點。
  • 資料夾。 允許您將資料夾和 RequestStep 節點分組。
  • 專案. 這是根節點,在建立專案時自動建立。 否則,它將重複資料夾節點的功能。
  • 關聯。 連結到“Folder”或“RequestStep”節點。 允許您重複使用查詢和腳本。
  • 等等

這些節點位於暫存區(左下角的面板,用於快速建立「一次性」查詢)和項目(左上方的面板)中,我們將更詳細地討論它們。

項目

當您啟動應用程式時,您可能會注意到左上角有一個單獨的專案行。 這是項目樹的根。 當您啟動專案時,會建立一個臨時項目,其路徑取決於您的作業系統。 您可以隨時將項目移動到您方便的地方。

該專案的主要目的是能夠將開發保存在檔案系統中,並透過版本控制系統進一步同步它們、在 CI 中執行腳本、審查變更等。

變量

變數是應用程式的關鍵機制之一。 使用 TestMace 等工具的人可能已經了解我們正在談論的內容。 因此,變數是儲存公共資料和節點之間通訊的一種方式。 例如,Postman 或 Insomnia 中的環境變數就是一個類似的例子。 然而,我們進一步發展了這個主題。 在 TestMace 中,可以在節點層級設定變數。 任何。 還有一種從祖先繼承變數並在後代中重疊變數的機制。 另外還有一些內建變量,內建變數的名稱以 $。 這裡是其中的一些:

  • $prevStep — 連結到前一個節點的變數
  • $nextStep — 連結到下一個節點的變數
  • $parent - 同樣的事情,但僅限於祖先
  • $response - 來自伺服器的回應
  • $env - 當前環境變數
  • $dynamicVar - 腳本或查詢執行期間建立的動態變量

$env - 這些本質上是普通的項目節點層級變量,但是,環境變數集會根據所選環境而變化。

該變數是透過訪問 ${variable_name}
一個變數的值可以是另一個變量,甚至可以是整個表達式。 例如,url 變數可以是這樣的表達式
http://${host}:${port}/${endpoint}.

另外,值得注意的是在腳本執行期間分配變數的可能性。 例如,通常需要保存成功登入後來自伺服器的授權資料(令牌或整個標頭)。 TestMace 可讓您將此類資料儲存到祖先之一的動態變數中。 為了避免與已經存在的「靜態」變數發生衝突,動態變數被放置在單獨的物件中 $dynamicVar.

情境

使用上述所有功能,您可以執行整個查詢腳本。 例如建立實體->查詢實體->刪除實體。 例如,在這種情況下,您可以使用Folder 節點對多個RequestStep 節點進行分組。

自動完成和表達式突出顯示

為了方便地使用變數(而不僅僅是變數),自動完成是必要的。 當然,突出顯示表達式的值可以更輕鬆、更方便地闡明特定變數的含義。 正是這種情況,百聞不如一見:

TestMace - 一個用於處理 API 的強大 IDE

值得注意的是,自動補全不僅針對變數實現,還針對標頭、某些標頭的值(例如 Content-Type 標頭的自動補全)、協定等實作。 隨著應用程式的成長,該列表會不斷更新。

撤銷重做

撤銷/重做更改是一件非常方便的事情,但由於某種原因,它並沒有在所有地方實現(使用 API 的工具也不例外)。 但我們不是其中之一!)我們在整個專案中實現了撤消/重做,這使您不僅可以撤消對特定節點的編輯,還可以撤消其創建、刪除、移動等。 最關鍵的操作需要確認。

建立測試

斷言節點負責建立測試。 主要功能之一是無需編程即可使用內建編輯器創建測試的能力。

斷言節點由一組斷言組成。 每個斷言都有自己的類型;目前有多種類型的斷言

  1. 比較值 - 簡單比較 2 個值。 有幾種比較運算子:等於、不等於、大於、大於或等於、小於、小於或等於。

  2. 包含值 - 檢查字串中子字串的出現。

  3. XPath - 檢查 XML 中的選擇器是否包含特定值。

  4. JavaScript 斷言是任意 JavaScript 腳本,成功時傳回 true,失敗時回傳 false。

我注意到只有最後一個需要使用者的程式設計技能,其他 3 個斷言是使用圖形介面創建的。 例如,建立比較值斷言的對話方塊如下所示:

TestMace - 一個用於處理 API 的強大 IDE

錦上添花的是根據回應快速創建斷言,只需看看它!

TestMace - 一個用於處理 API 的強大 IDE

但是,此類斷言有明顯的局限性,您可能需要使用 javascript 斷言來克服這些限制。這裡 TestMace 還提供了一個舒適的環境,具有自動完成、語法突出顯示甚至靜態分析器。

介面說明

TestMace 不僅允許您使用 API,還允許您記錄它。 此外,描述本身也具有層次結構,並有機地融入專案的其餘部分。 此外,目前還可以從 Swagger 2.0 / OpenAPI 3.0 格式匯入 API 描述。 描述本身不只是沉重的負擔,而是與項目的其餘部分緊密結合,特別是可以自動完成 URL、HTTP 標頭、查詢參數等,將來我們計劃添加測試確保響應符合 API 描述。

共享節點

案例:您想與同事分享有問題的請求甚至整個腳本,或只是將其附加到錯誤中。 TestMace 也涵蓋了這種情況:該應用程式可讓您序列化 URL 中的任何節點甚至子樹。 複製貼上,您可以輕鬆地將請求轉移到另一台機器或專案。

人類可讀的項目儲存格式

目前,每個節點都儲存在一個擴展名為 yml 的單獨檔案中(與斷言節點的情況一樣),或儲存在一個包含節點名稱和 index.yml 檔案的資料夾中。
例如,我們在上面的評論中創建的請求文件如下所示:

索引.yml

children: []
variables: {}
type: RequestStep
assignVariables: []
requestData:
  request:
    method: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  headers: []
  disabledInheritedHeaders: []
  params: []
  body:
    type: Json
    jsonBody: ''
    xmlBody: ''
    textBody: ''
    formData: []
    file: ''
    formURLEncoded: []
  strictSSL: Inherit
authData:
  type: inherit
name: Scratch 1

正如你所看到的,一切都非常清楚。 如果需要,可以輕鬆地手動編輯此格式。

檔案系統中資料夾的層次結構完全重複了專案中節點的層次結構。 例如,像這樣的腳本:

TestMace - 一個用於處理 API 的強大 IDE

將檔案系統對應為如下結構(僅展示了資料夾層次結構,但本質已經清晰)

TestMace - 一個用於處理 API 的強大 IDE

這使得專案審查過程更加容易。

從郵差匯入

閱讀完上述所有內容後,有些用戶會想要嘗試(對嗎?)新產品或(這不是開玩笑!)在他們的專案中完全使用它。 然而,同一個Postman中的大量開發可以阻止遷移。 對於這種情況,TestMace 支援從 Postman 匯入集合。 目前支援未經測試的導入,但不排除將來支援它們。

計劃

我希望到目前為止閱讀過的許多人都喜歡我們的產品。然而,這還不是全部!這款產品的開發工作正在緊鑼密鼓地進行中,以下是我們計劃很快就會添加的一些功能。

雲端同步

最受需求的功能之一。 目前,我們建議使用版本控制系統進行同步,為此我們正在使格式對於此類儲存更加友善。 然而,這個工作流程並不適合所有人,因此我們計劃透過我們的伺服器添加許多人熟悉的同步機制。

CLI的

如上所述,IDE 級產品離不開與現有應用程式或工作流程的各種整合。 CLI 正是將 TestMace 編寫的測試整合到持續整合過程中所需要的。 CLI 的工作正在全面展開;早期版本將透過簡單的控制台報告啟動該專案。 未來我們計劃新增 JUnit 格式的報告輸出。

插件系統

儘管我們的工具非常強大,但需要解決方案的案例是無限的。 畢竟,有些任務是特定於特定項目的。 這就是為什麼未來我們計劃添加一個用於開發插件的 SDK,每個開發人員都可以根據自己的喜好添加功能。

擴大節點類型範圍

這組節點並沒有涵蓋使用者所需的所有情況。 計劃新增節點:

  • 腳本節點-使用js和對應的API轉換和放置資料。 使用這種類型的節點,您可以在 Postman 中執行諸如預先請求和後請求腳本之類的操作。
  • GraphQL 節點 - graphql 支持
  • 自訂斷言節點 - 將允許您擴展專案中現有斷言集
    當然,這不是最終清單;它會根據您的回饋等因素不斷更新。

常見問題

你和郵差有什麼不同?

  1. 節點的概念,讓您幾乎無限地擴展專案的功能
  2. 人類可讀的項目格式,並將其保存在檔案系統中,這簡化了使用版本控制系統的工作
  3. 無需編程即可建立測試的能力以及測試編輯器中更高級的 js 支援(自動完成、靜態分析器)
  4. 進階自動完成和突出顯示變數的目前值

這是開源產品嗎?

不,目前消息來源已關閉,但將來我們正在考慮開放消息來源的可能性

你靠什麼生活?)

除了免費版本之外,我們還計劃發布該產品的付費版本。 它主要包括需要伺服器端的事情,例如同步。

結論

我們的專案正在突飛猛進地走向穩定版本。 然而,該產品已經可以使用了,我們早期用戶的正面回饋就是證明。 我們積極收集回饋,因為如果沒有與社區的密切合作,就不可能建立出一個好的工具。 您可以在這裡找到我們:

官方網站

Telegram

鬆弛

Facebook

問題追蹤器

我們期待您的願望和建議!

來源: www.habr.com

添加評論