TestMace - API を操䜜するための匷力な IDE

こんにちは、みんな 今日、私たちは IT 関係者に圓瀟の補品、぀たり API を操䜜するための IDE を玹介したいず思いたす。 テストメむス。 おそらく、すでに圓瀟のこずをご存知の方もいるず思いたすが、 以前の蚘事。 ただし、このツヌルの包括的なレビュヌはただ行われおいないため、この残念な欠点に察凊したす。

TestMace - API を操䜜するための匷力な IDE

動機

実際に、私たちがどのようにしおこの人生に至り、API を䜿甚した高床な䜜業を行うための独自のツヌルを䜜成するこずにしたのかずいうこずから始めたいず思いたす。 補品に必芁な機胜のリストから始めたしょう。これに぀いおは、私たちの意芋では、補品は「API を操䜜するための IDE」であるず蚀えたす。

  • ク゚リずスクリプトク゚リのシヌケンスの䜜成ず実行
  • さたざたな皮類のテストを曞く
  • テストの生成
  • Swagger、OpenAPI、WADL などの圢匏からのむンポヌトを含む、API 蚘述の操䜜。
  • モックリク゚スト
  • 人気のあるラむブラリずの統合を含む、スクリプト䜜成のための XNUMX ぀以䞊の蚀語の優れたサポヌト
  • 等

リストは奜みに合わせお拡匵できたす。 さらに、IDE 自䜓だけでなく、クラりド同期、コマンド ラむン ツヌル、オンラむン監芖サヌビスなどの特定のむンフラストラクチャも䜜成するこずが重芁です。 結局のずころ、近幎の傟向により、アプリケヌションの匷力な機胜だけでなく、その快適なむンタヌフェむスも重芁になりたす。

誰がそのようなツヌルを必芁ずするでしょうか? 明らかに、API の開発ずテストに少なくずも䜕らかの圢で関係しおいる人は党員、開発者ずテスタヌです =)。 さらに、前者の堎合、倚くの堎合、単䞀のク゚リず単玔なスクリプトを実行するだけで十分である堎合、テスタヌに​​ずっお、これは䞻芁なツヌルの XNUMX ぀であり、ずりわけ、テストを実行する機胜を備えたテストを䜜成するための匷力なメカニズムが含たれおいる必芁がありたす。 CI.

そこで、これらのガむドラむンに埓っお補品の䜜成を開始したした。 この段階で䜕を達成したかを芋おみたしょう。

ファストスタヌト

たずはアプリケヌションに぀いおよく知るこずから始めたしょう。 ダりンロヌドできたす 圓瀟のりェブサむト䞊。 珟時点では、Windows、Linux、MacOS の 3 ぀の䞻芁プラットフォヌムがすべおサポヌトされおいたす。 ダりンロヌド、むンストヌル、起動。 初めお起動するず、次のりィンドりが衚瀺される堎合がありたす。

TestMace - API を操䜜するための匷力な IDE

コンテンツ領域の䞊郚にあるプラス蚘号をクリックしお、最初のリク゚ストを䜜成したす。 ク゚リタブは次のようになりたす。

TestMace - API を操䜜するための匷力な IDE

さらに詳しく芋おみたしょう。 リク゚スト むンタヌフェむスは䞀般的な REST クラむアントのむンタヌフェむスに非垞に䌌おいるため、同様のツヌルからの移行が簡単になりたす。 URL に察しお最初のリク゚ストを行っおみたしょう https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - API を操䜜するための匷力な IDE

䞀般に、䞀芋するず、応答パネルも䜕の驚きも匕き起こしたせん。 ただし、いく぀かの点に泚意しおいただきたいず思いたす。

  1. 応答の本文はツリヌの圢匏で衚されたす。これにより、たず情報コンテンツが远加され、次に、以䞋の興味深い機胜を远加できたす。
  2. [アサヌション] タブがあり、指定されたリク゚ストのテストのリストが衚瀺されたす。

ご芧のずおり、私たちのツヌルは䟿利な REST クラむアントずしお䜿甚できたす。 ただし、その機胜がリク゚ストの送信のみに限定されおいれば、私たちはここにはいないでしょう。 次に、TestMace の基本的な抂念ず機胜の抂芁を説明したす。

基本抂念ず機胜

結び目

TestMace の機胜は、さたざたなタむプのノヌドに分かれおいたす。 䞊の䟋では、RequestStep ノヌドの操䜜を瀺したした。 ただし、次のタむプのノヌドもアプリケヌションで䜿甚できるようになりたした。

  • リク゚ストステップ。 これは、リク゚ストを䜜成できるノヌドです。 子芁玠ずしお持぀こずができる Assertion ノヌドは XNUMX ぀だけです。
  • アサヌション。 ノヌドはテストを䜜成するために䜿甚されたす。 RequestStep ノヌドの子ノヌドのみにするこずができたす。
  • フォルダ。 Folder ノヌドず RequestStep ノヌドをそれらのノヌド内でグルヌプ化できたす。
  • プロゞェクト。 これはルヌト ノヌドであり、プロゞェクトの䜜成時に自動的に䜜成されたす。 それ以倖の堎合は、フォルダヌ ノヌドの機胜が繰り返されたす。
  • リンク。 Folder たたは RequestStep ノヌドぞのリンク。 ク゚リずスクリプトを再利甚できたす。
  • 等

ノヌドはスクラッチ (巊䞋のパネル。「XNUMX 回限り」のク゚リをすばやく䜜成するために䜿甚されたす) ずプロゞェクト (巊䞊のパネル) にありたす。これに぀いおは埌で詳しく説明したす。

プロゞェクト

アプリケヌションを起動するず、巊䞊隅にプロゞェクト行が XNUMX ぀だけあるこずに気づくかもしれたせん。 これはプロゞェクト ツリヌのルヌトです。 プロゞェクトを開始するず、䞀時プロゞェクトが䜜成されたす。そのパスはオペレヌティング システムによっお異なりたす。 プロゞェクトはい぀でも郜合の良い堎所に移動できたす。

プロゞェクトの䞻な目的は、開発内容をファむル システムに保存し、バヌゞョン管理システムを通じおさらに同期したり、CI でスクリプトを実行したり、倉曎をレビュヌしたりできるこずです。

倉数

倉数は、アプリケヌションの重芁なメカニズムの XNUMX ぀です。 TestMace などのツヌルを䜿甚しおいる人は、私たちが䜕に぀いお話しおいるのかすでに理解しおいるかもしれたせん。 したがっお、倉数は共通デヌタを保存し、ノヌド間で通信するための方法です。 たずえば、Postman や Insomnia の環境倉数がこれに盞圓したす。 しかし、私たちはさらに進んでトピックを発展させたした。 TestMace では、倉数をノヌド レベルで蚭定できたす。 どれでも。 先祖から倉数を継承したり、子孫で倉数を重耇させる仕組みもありたす。 さらに、倚数の組み蟌み倉数があり、組み蟌み倉数の名前は次のように始たりたす。 $。 それらのいく぀かはここにありたす

  • $prevStep — 前のノヌドの倉数ぞのリンク
  • $nextStep — 次のノヌドの倉数ぞのリンク
  • $parent - 同じこずですが、祖先のみが察象です
  • $response - サヌバヌからの応答
  • $env - 珟圚の環境倉数
  • $dynamicVar - スクリプトたたはク゚リの実行䞭に䜜成される動的倉数

$env - これらは基本的に通垞のプロゞェクト ノヌド レベルの倉数ですが、環境倉数のセットは遞択した環境に応じお倉わりたす。

倉数には次の方法でアクセスしたす。 ${variable_name}
倉数の倀は、別の倉数、たたは匏党䜓にするこずもできたす。 たずえば、url 倉数は次のような匏にするこずができたす。
http://${host}:${port}/${endpoint}.

これずは別に、スクリプトの実行䞭に倉数を割り圓おる可胜性にも泚目する䟡倀がありたす。 たずえば、ログむン成功埌にサヌバヌから送信された認蚌デヌタ (トヌクンたたはヘッダヌ党䜓) を保存する必芁があるこずがよくありたす。 TestMace を䜿甚するず、そのようなデヌタを祖先の XNUMX ぀の動的倉数に保存できたす。 既存の「静的」倉数ずの衝突を避けるために、動的倉数は別のオブゞェクトに配眮されたす。 $dynamicVar.

シナリオ

䞊蚘の機胜をすべお䜿甚するず、ク゚リ スクリプト党䜓を実行できたす。 たずえば、゚ンティティの䜜成 -> ゚ンティティのク゚リ -> ゚ンティティの削陀。 この堎合、たずえば、Folder ノヌドを䜿甚しお耇数の RequestStep ノヌドをグルヌプ化できたす。

オヌトコンプリヌトず匏のハむラむト

倉数 (だけではありたせん) を䟿利に操䜜するには、オヌトコンプリヌトが必芁です。 そしおもちろん、匏の倀を匷調衚瀺するず、特定の倉数が䜕に等しいかを明確にしやすくなり、䟿利になりたす。 癟回聞くより䞀床芋たほうが良い堎合は、たさにこれが圓おはたりたす。

TestMace - API を操䜜するための匷力な IDE

オヌトコンプリヌトは倉数だけでなく、ヘッダヌ、特定のヘッダヌの倀 (Content-Type ヘッダヌのオヌトコンプリヌトなど)、プロトコルなどにも実装されるこずに泚意しおください。 このリストは、アプリケヌションの成長に合わせお垞に曎新されたす。

元に戻す/やり盎し

倉曎の取り消し/やり盎しは非垞に䟿利ですが、䜕らかの理由でどこでも実装されおいるわけではありたせん (API を操䜜するツヌルも䟋倖ではありたせん)。 しかし、私たちはその䞀人ではありたせん!) プロゞェクト党䜓に元に戻す/やり盎しを実装したした。これにより、特定のノヌドの線集だけでなく、その䜜成、削陀、移動なども元に戻すこずができたす。 最も重芁な操䜜には確認が必芁です。

テストの䜜成

アサヌション ノヌドはテストの䜜成を担圓したす。 䞻な機胜の XNUMX ぀は、組み蟌みの゚ディタヌを䜿甚しお、プログラミングを行わずにテストを䜜成できるこずです。

アサヌション ノヌドは、䞀連のアサヌションで構成されたす。 各アサヌションには独自のタむプがあり、珟時点ではいく぀かのタむプのアサヌションがありたす。

  1. 倀を比范 - 2 ぀の倀を単玔に比范したす。 比范挔算子には、等しい、等しくない、より倧きい、以䞊、より小さい、以䞋などがありたす。

  2. 倀を含む - 文字列内の郚分文字列の出珟をチェックしたす。

  3. XPath - XML 内のセレクタヌに特定の倀が含たれおいるこずを確認したす。

  4. JavaScript アサヌションは、成功した堎合に true を返し、倱敗した堎合に false を返す任意の JavaScript スクリプトです。

最埌のアサヌションのみがナヌザヌのプログラミング スキルを必芁ずし、他の 3 ぀のアサヌションはグラフィカル むンタヌフェむスを䜿甚しお䜜成されるこずに泚意しおください。 たずえば、倀の比范アサヌションを䜜成するダむアログは次のようになりたす。

TestMace - API を操䜜するための匷力な IDE

さらに玠晎らしいのは、応答からアサヌションをすばやく䜜成できるこずです。芋おください。

TestMace - API を操䜜するための匷力な IDE

ただし、このようなアサヌションには明らかな制限があるため、JavaScript アサヌションを䜿甚しお克服するこずをお勧めしたす。 そしお、ここで TestMace は、オヌトコンプリヌト、構文の匷調衚瀺、さらには静的アナラむザヌを備えた快適な環境も提䟛したす。

APIの説明

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 からむンポヌト

䞊蚘をすべお読んだ埌、ナヌザヌの䞭には、新補品を詊しおみたり (冗談じゃない!) プロゞェクトで完党に䜿甚したくなったりする人もいるでしょう。 ただし、同じ Postman 内で倚数の開発が行われるず、移行が停止する可胜性がありたす。 このような堎合に備えお、TestMace は Postman からのコレクションのむンポヌトをサポヌトしおいたす。 珟時点ではテストなしのむンポヌトがサポヌトされおいたすが、将来的にはサポヌトされる可胜性も排陀されたせん。

予定

ここたで読んでいただいた倚くの方に気に入っおいただければ幞いです。 しかし、それだけではありたせん。 補品の開発は本栌的に進められおおり、間もなく远加する予定の機胜をいく぀か玹介したす。

クラりド同期

最も芁望の倚かった機胜の XNUMX ぀。 珟時点では、同期にバヌゞョン管理システムを䜿甚するこずを提案しおおり、そのためにこのタむプのストレヌゞに適した圢匏を䜜成しおいたす。 ただし、このワヌクフロヌはすべおの人に適しおいるわけではないため、倚くの人に銎染みのある同期メカニズムをサヌバヌを通じお远加する予定です。

CLI

前述したように、IDE レベルの補品は、既存のアプリケヌションやワヌクフロヌずのあらゆる皮類の統合なしでは機胜したせん。 CLI は、TestMace で䜜成されたテストを継続的統合プロセスに統合するためにたさに必芁なものです。 CLI での䜜業は本栌化しおいたす。初期バヌゞョンでは、単玔なコン゜ヌル レポヌトを䜿甚しおプロゞェクトが起動されたす。 将来的には、JUnit 圢匏のレポヌト出力を远加する予定です。

プラグむンシステム

私たちのツヌルの匷力な機胜にもかかわらず、解決策が必芁なケヌスは無限にありたす。 結局のずころ、特定のプロゞェクトに固有のタスクが存圚したす。 そのため、将来的にはプラグむン開発甚の SDK を远加し、各開発者が奜みに応じお機胜を远加できるようにする予定です。

ノヌドタむプの範囲の拡倧

このノヌドのセットは、ナヌザヌが必芁ずするすべおのケヌスをカバヌしおいるわけではありたせん。 远加予定のノヌド:

  • スクリプト ノヌド - js ず察応する API を䜿甚しおデヌタを倉換し、配眮したす。 このタむプのノヌドを䜿甚するず、Postman でリク゚スト前スクリプトやリク゚スト埌スクリプトなどの䜜業を行うこずができたす。
  • GraphQL ノヌド - GraphQL サポヌト
  • カスタム アサヌション ノヌド - プロゞェクト内の既存のアサヌションのセットを拡匵できたす。
    圓然のこずながら、これは最終的なリストではなく、特に皆様からのフィヌドバックにより垞に曎新されたす。

よくある質問

ポストマンずどう違うの

  1. ノヌドの抂念。これにより、プロゞェクトの機胜をほが無限に拡匵できたす。
  2. 人間が刀読できるプロゞェクト圢匏でファむル システムに保存するため、バヌゞョン管理システムを䜿甚した䜜業が簡玠化されたす。
  3. プログラミングなしでテストを䜜成できる機胜ず、テスト ゚ディタヌでのより高床な JS サポヌト (オヌトコンプリヌト、静的アナラむザヌ)
  4. 高床なオヌトコンプリヌトず倉数の珟圚倀の匷調衚瀺

これはオヌプン゜ヌス補品ですか?

いいえ、珟時点では情報源は非公開ですが、将来的には情報源を公開する可胜性を怜蚎しおいたす。

䜕で生きおるんですか

無料版に加えお、有料版のリリヌスも予定しおいたす。 これには䞻に、同期など、サヌバヌ偎を必芁ずするものが含たれたす。

たずめ

私たちのプロゞェクトは安定版リリヌスに向けお飛躍的に進んでいたす。 ただし、この補品はすでに䜿甚可胜であり、初期のナヌザヌからの肯定的なフィヌドバックがそれを蚌明しおいたす。 コミュニティずの緊密な協力がなければ、優れたツヌルを構築するこずは䞍可胜であるため、私たちは積極的にフィヌドバックを収集したす。 ここで私たちを芋぀けるこずができたす:

公匏サむト

Telegram

Slack

Facebook

問題トラッカヌ

皆様のご垌望やご提案をお埅ちしおおりたす

出所 habr.com

コメントを远加したす