TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Moien alleguer! Haut wëlle mir dem IT Public eise Produkt presentéieren - eng IDE fir mat APIen ze schaffen TestMace. Vläicht e puer vun iech wëssen schonn iwwer eis aus virdrun Artikelen. Wéi och ëmmer, et gouf keng ëmfaassend Iwwerpréiwung vum Tool, sou datt mir dës onglécklech Defizit adresséieren.

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Motivatioun

Ech géif gären ufänken mat wéi, tatsächlech, mir an dësem Liewen komm an decidéiert eis eege Outil fir fortgeschratt Aarbecht mat der API ze schafen. Loosst eis mat enger Lëscht vu Funktionalitéit ufänken, déi e Produkt soll hunn, iwwer déi, eiser Meenung no, kënne mir soen datt et eng "IDE fir mat APIen ze schaffen" ass:

  • Ufroen a Skripte erstellen an ausféieren (Sequenze vun Ufroen)
  • Schreiwen verschidden Aarte vun Tester
  • Test Generatioun
  • Schafft mat API Beschreiwunge, inklusiv Import vu Formater wéi Swagger, OpenAPI, WADL, etc.
  • Spott Ufroen
  • Gutt Ënnerstëtzung fir eng oder méi Sprooche fir Skripte ze schreiwen, inklusiv Integratioun mat populäre Bibliothéiken
  • an esou weider.

D'Lëscht kann erweidert ginn fir Äre Goût ze passen. Ausserdeem ass et wichteg net nëmmen d'IDE selwer ze kreéieren, awer och eng gewëssen Infrastruktur, wéi Cloud Synchroniséierung, Kommandozeil Tools, Online Iwwerwaachungsservice, etc. Um Enn diktéieren d'Trends vun de leschte Joeren eis net nëmmen déi mächteg Funktionalitéit vun der Applikatioun, awer och seng agreabel Interface.

Wien brauch esou en Tool? Natierlech sinn all déi, déi op d'mannst iergendwéi mat der Entwécklung an Testen vun APIen verbonne sinn Entwéckler an Tester =). Ausserdeem, wann fir déi fréier et dacks genuch ass fir eenzel Ufroen an einfache Scripten auszeféieren, dann ass dëst fir Tester ee vun den Haaptinstrumenter, déi ënner anerem e mächtege Mechanismus fir d'Schreiwe vun Tester mat der Fäegkeet enthalen sollten. CI.

Also, no dëse Richtlinnen, hu mir ugefaang eise Produkt ze kreéieren. Loosst eis kucken wat mir an dësem Stadium erreecht hunn.

Schnell Start

Loosst eis mat engem éischte Bekanntschaft mat der Applikatioun ufänken. Dir kënnt et eroflueden op eiser Websäit. Am Moment ginn all 3 grouss Plattformen ënnerstëtzt - Windows, Linux, MacOS. Eroflueden, installéieren, starten. Wann Dir et fir d'éischte Kéier lancéiert, kënnt Dir déi folgend Fënster gesinn:

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Klickt op de Plus Zeechen uewen am Inhaltsberäich fir Är éischt Ufro ze kreéieren. De Query Tab gesäit esou aus:

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Loosst eis et méi am Detail kucken. D'Ufro-Interface ass ganz ähnlech wéi d'Interface vu populäre Rescht Clienten, wat d'Migratioun vun ähnlechen Tools méi einfach mécht. Loosst eis déi éischt Ufro un d'URL maachen https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Am Allgemengen, op den éischte Bléck, bréngt d'Äntwertpanel och keng Iwwerraschungen op. Ech wëll awer op e puer Punkten opmierksam maachen:

  1. De Kierper vun der Äntwert ass a Form vun engem Bam vertrueden, deen éischtens Informatiounsinhalt bäidréit an zweetens erlaabt Iech e puer interessant Features ze addéieren iwwer déi hei drënner
  2. Et gëtt en Assertions Tab, deen eng Lëscht vun Tester fir eng bestëmmte Ufro weist

Wéi Dir gesitt kann, kann eisen Outil als praktesch Rescht Client benotzt ginn. Mir wieren awer net hei wa seng Fäegkeeten nëmme limitéiert wieren fir Ufroen ze schécken. Als nächst wäerte ech d'Basiskonzepter a Funktionalitéit vum TestMace skizzéieren.

Basis Konzepter a Funktiounen

Knot

TestMace Funktionalitéit ass a verschidden Aarte vu Wirbelen opgedeelt. Am Beispill hei uewen hu mir d'Operatioun vum RequestStep Node bewisen. Wéi och ëmmer, déi folgend Aarte vu Wirbelen sinn elo och an der Applikatioun verfügbar:

  • Ufro Schrëtt. Dëst ass den Node duerch deen Dir eng Ufro erstellt. Et kann nëmmen een Assertion Node als Kand Element hunn.
  • Behaaptung. Den Node gëtt benotzt fir Tester ze schreiwen. Kann nëmmen e Kand Node vum RequestStep Node sinn.
  • Dossier. Erlaabt Iech Dossier an RequestStep Noden a sech selwer ze gruppéieren.
  • Projet. Dëst ass de Root Node, automatesch erstallt wann de Projet erstallt gëtt. Soss widderhëlt et d'Funktionalitéit vum Folder Node.
  • Link. Link op den Dossier oder RequestStep Node. Erlaabt Iech Ufroen a Skripte nei ze benotzen.
  • an esou weider.

D'Node sinn a Kratzer lokaliséiert (de Panel ënnen lénks, benotzt fir séier "One-Off" Ufroen ze kreéieren) an a Projeten (de Panel uewe lénks), op déi mir méi detailléiert wäerte bleiwen.

De Projet

Wann Dir d'Applikatioun lancéiert, kënnt Dir eng eenzeg Project Linn an der ieweschter lénkser Ecke bemierken. Dëst ass d'Wurzel vum Projet Bam. Wann Dir e Projet ufänkt, gëtt en temporäre Projet erstallt, de Wee zu deem hänkt vun Ärem Betribssystem of. Zu all Moment kënnt Dir de Projet op eng Plaz réckelen déi Iech bequem ass.

Den Haaptzweck vum Projet ass d'Fäegkeet Entwécklungen am Dateiesystem ze späicheren an se weider duerch Versiounskontrollsystemer ze synchroniséieren, Scripten am CI auszeféieren, Ännerungen ze iwwerpréiwen, etc.

Verännerlechen

Variablen sinn ee vun de Schlësselmechanismen vun enger Applikatioun. Déi vun iech, déi mat Tools wéi TestMace schaffen, hu vläicht schonn eng Iddi vu wat mir schwätzen. Also, Variablen sinn e Wee fir gemeinsam Daten ze späicheren an tëscht Noden ze kommunizéieren. En Analog, zum Beispill, sinn Ëmfeldvariablen am Postman oder Insomnia. Mir sinn awer weider gaang an d'Thema entwéckelt. Am TestMace kënnen Variabelen um Nodeniveau gesat ginn. All. Et gëtt och e Mechanismus fir Variablen vun Vorfahren ze ierwen an iwwerlappend Variabelen an Nokommen. Zousätzlech ginn et eng Rei vun agebaute Verännerlechen, d'Nimm vun den agebaute Verännerlechen fänken un $An. Hei sinn e puer vun hinnen:

  • $prevStep - Link op Variablen vum fréiere Node
  • $nextStep - Link op Variablen vum nächste Node
  • $parent - déi selwecht Saach, awer nëmmen fir den Vorfahren
  • $response - Äntwert vum Server
  • $env - aktuell Ëmwelt Verännerlechen
  • $dynamicVar - dynamesch Verännerlechen erstallt während Skript oder Ufro Ausféierung

$env - dëst sinn am Wesentlechen normalen Project Node Niveau Variabelen, awer d'Set vun Ëmfeldvariablen ännert sech ofhängeg vun der gewielter Ëmwelt.

D'Variabel ass zougänglech iwwer ${variable_name}
De Wäert vun enger Variabel kann eng aner Variabel sinn, oder souguer e ganzen Ausdrock. Zum Beispill kann d'URL Variabel en Ausdrock sinn wéi
http://${host}:${port}/${endpoint}.

Separat ass et derwäert ze notéieren d'Méiglechkeet fir Variablen während der Skriptausféierung ze ginn. Zum Beispill gëtt et dacks e Besoin fir Autorisatiounsdaten (en Token oder de ganzen Header) ze späicheren, déi vum Server no engem erfollegräiche Login koumen. TestMace erlaabt Iech esou Donnéeën an dynamesch Variablen vun engem vun de Vorfahren ze späicheren. Fir Kollisiounen mat scho existéierende "statesche" Variabelen ze vermeiden, ginn dynamesch Variablen an engem separaten Objet gesat $dynamicVar.

Szenarie

Mat all déi uewe genannte Funktiounen kënnt Dir ganz Ufro-Skripte lafen. Zum Beispill eng Entitéit erstellen -> eng Entitéit ufroen -> eng Entitéit läschen. An dësem Fall, zum Beispill, kënnt Dir de Folder Node benotze fir verschidde RequestStep Noden ze gruppéieren.

Autocompletion an Ausdrock Highlight

Fir bequem Aarbecht mat Variablen (an net nëmmen) ass Autocompletion néideg. An natierlech, Highlight de Wäert vun engem Ausdrock fir et méi einfach a méi bequem ze klären wat eng bestëmmte Variabel gläich ass. Dat ass genau de Fall wann et besser ass eemol ze gesinn wéi honnert Mol ze héieren:

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Et ass derwäert ze notéieren datt d'Autocompletion net nëmme fir Variabelen ëmgesat gëtt, awer och, zum Beispill, fir Header, Wäerter vu bestëmmte Header (zum Beispill, Autocompletion fir den Content-Type Header), Protokoller a vill méi. D'Lëscht gëtt dauernd aktualiséiert wéi d'Applikatioun wiisst.

Undoen / nei maachen

Ännerungen z'ënnerhuelen / nei maachen ass eng ganz praktesch Saach, awer aus iergendengem Grond ass et net iwwerall ëmgesat (an Tools fir mat APIen ze schaffen si keng Ausnahm). Awer mir sinn net ee vun deenen!) Mir hunn de ganze Projet undoen / nei gemaach, wat Iech erlaabt net nëmmen d'Ännerung vun engem spezifesche Node ze réckelen, awer och seng Kreatioun, Läschen, Bewegung, etc. Déi kriteschst Operatiounen erfuerderen Bestätegung.

Schafen Tester

Den Assertion Node ass verantwortlech fir Tester ze kreéieren. Ee vun den Haaptfeatures ass d'Fäegkeet Tester ze kreéieren ouni Programméierung, mat agebaute Redaktoren.

En Assertion Node besteet aus enger Rei vu Behaaptungen. All Behaaptung huet seng eegen Aart; am Moment ginn et verschidden Aarte vu Behaaptungen

  1. Vergläicht Wäerter - vergläicht einfach 2 Wäerter. Et gi verschidde Vergläichsoperateuren: gläich, net gläich, méi grouss wéi, méi wéi oder gläich, manner wéi, manner wéi oder gläich.

  2. Enthält Wäert - kontrolléiert d'Optriede vun engem Substring an enger String.

  3. XPath - kontrolléiert datt de Selektor am XML e bestëmmte Wäert enthält.

  4. JavaScript Behaaptung ass en arbiträr Javascript Skript dat richteg op Erfolleg zréckkënnt a falsch op Echec.

Ech bemierken datt nëmmen déi lescht Programméierungsfäegkeeten vum Benotzer erfuerdert, déi aner 3 Behaaptunge gi mat enger graphescher Interface erstallt. Hei, zum Beispill, ass wéi den Dialog fir eng Vergläiche Wäerterbehaaptung ze kreéieren ausgesäit:

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

D'Glace op de Kuch ass d'séier Kreatioun vun Behaaptungen aus Äntwerten, kuckt just drun!

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Wéi och ëmmer, sou Behaaptungen hunn offensichtlech Aschränkungen, déi Dir wëllt vläicht eng Javascript Behaaptung benotzen fir ze iwwerwannen. An hei bitt TestMace och e komfortabelt Ëmfeld mat Autocompletion, Syntax Highlighting a souguer e statesche Analysator.

API Beschreiwung

TestMace erlaabt Iech net nëmmen d'API ze benotzen, awer och ze dokumentéieren. Ausserdeem huet d'Beschreiwung selwer och eng hierarchesch Struktur a passt organesch an de Rescht vum Projet. Zousätzlech ass et momentan méiglech API Beschreiwunge vu Swagger 2.0 / OpenAPI 3.0 Formater z'importéieren. D'Beschreiwung selwer läit net nëmmen dout Gewiicht, awer ass enk mat dem Rescht vum Projet integréiert, besonnesch d'Autovervollstännegung vun URLen, HTTP-Header, Ufroparameter, asw. fir d'Konformitéit vun der Äntwert mat der API Beschreiwung.

Node deelen

Fall: Dir wëllt eng problematesch Ufro oder souguer e ganze Skript mat engem Kolleg deelen oder einfach un e Feeler befestegt. TestMace deckt och dëse Fall: d'Applikatioun erlaabt Iech all Node a souguer e Subtree an enger URL ze serialiséieren. Copy-paste an Dir kënnt d'Ufro einfach op eng aner Maschinn oder Projet transferéieren.

Mënsch-liesbar Projet Stockage Format

Am Moment gëtt all Node an enger separater Datei mat der yml-Extensioun gespäichert (wéi de Fall mat der Assertion Node), oder an engem Dossier mam Numm vum Node an der index.yml Datei dran.
Zum Beispill, dëst ass wéi d'Ufrodatei, déi mir an der Iwwerpréiwung uewe gemaach hunn, ausgesäit:

index.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

Wéi Dir kënnt gesinn, ass alles ganz kloer. Wann Dir wëllt, kann dëst Format einfach manuell geännert ginn.

D'Hierarchie vun den Ordner am Dateiesystem widderhëlt d'Hierarchie vun den Noden am Projet komplett. Zum Beispill, e Skript wéi:

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Kaartt de Dateiesystem op déi folgend Struktur (nëmmen d'Ordnerhierarchie gëtt gewisen, awer d'Essenz ass kloer)

TestMace ass eng mächteg IDE fir mat APIen ze schaffen

Dëst mécht de Projet review Prozess méi einfach.

Import vum Bréifdréier

Nodeems Dir alles hei uewen gelies hutt, wëllen e puer Benotzer en neit Produkt probéieren (richteg?) oder (wat d'Häll ass net de Geck!) Ganz an hirem Projet benotzen. Wéi och ëmmer, Migratioun kann duerch eng grouss Zuel vun Entwécklungen am selwechte Postman gestoppt ginn. Fir esou Fäll ënnerstëtzt TestMace Sammlunge vu Postman importéieren. Am Moment ginn Importer ouni Tester ënnerstëtzt, awer mir ausschléissen net datt se an Zukunft ënnerstëtzen.

Pläng

Ech hoffen, datt vill vun deenen, déi bis zu dësem Zäitpunkt gelies hunn, eise Produkt gär hunn. Dat ass awer net alles! D'Aarbecht um Produkt ass amgaang an hei sinn e puer Features déi mir plangen geschwënn derbäi ze ginn.

Cloud Synchroniséierung

Ee vun de meeschte gefrot Funktiounen. Am Moment proposéiere mir d'Versiounskontrollsystemer fir d'Synchroniséierung ze benotzen, fir déi mir d'Format méi frëndlech maachen fir dës Zort Späichere. Wéi och ëmmer, dësen Workflow ass net fir jiddereen gëeegent, dofir plangen mir e Synchroniséierungsmechanismus derbäi ze ginn, dee vill duerch eis Server vertraut ass.

CLI

Wéi uewen erwähnt, kënnen IDE-Niveau Produkter net ouni all Zort vun Integratioune mat existéierende Applikatiounen oder Workflows maachen. De CLI ass genau dat wat gebraucht gëtt fir Tester geschriwwen am TestMace an de kontinuéierleche Integratiounsprozess z'integréieren. D'Aarbecht um CLI ass amgaang; fréi Versioune starten de Projet mat engem einfache Konsolbericht. An Zukunft plangen mir de Berichtausgang am JUnit Format derbäi ze ginn.

Plugin System

Trotz all der Kraaft vun eisem Tool ass de Set vu Fäll, déi Léisunge erfuerderen, onbegrenzt. No allem ginn et Aufgaben déi spezifesch fir e bestëmmte Projet sinn. Dofir plangen mir an Zukunft en SDK derbäi fir Plugins z'entwéckelen an all Entwéckler wäert fäeg sinn d'Funktionalitéit no hirem Wënsch ze addéieren.

D'Ausdehnung vun der Palette vun Nodetypen

Dëse Set vun Noden deckt net all Fäll erfuerderlech vum Benotzer. Noden déi geplangt sinn ze addéieren:

  • Skript Node - konvertéiert a plazéiert Daten mat js an der entspriechender API. Mat dëser Zort Node kënnt Dir Saache wéi Pre-Request a Post-Request Scripten am Postman maachen.
  • GraphQL Node - graphql Ënnerstëtzung
  • Benotzerdefinéiert Behaaptungsnode - erlaabt Iech de Set vun existente Behaaptungen am Projet auszebauen
    Natierlech ass dëst keng definitiv Lëscht, se gëtt stänneg aktualiséiert wéinst, ënner anerem, Äre Feedback.

FAQ

Wéi ënnerscheet Dir Iech vum Postman?

  1. D'Konzept vun Wirbelen, déi erlaabt Iech bal endlos d'Funktionalitéit vum Projet ze Skala
  2. Mënsch liesbar Projet Format mat spueren et an engem Fichier System, déi Aarbecht mat Versioun Kontroll Systemer vereinfacht
  3. D'Kapazitéit fir Tester ze kreéieren ouni Programméierung a méi fortgeschratt js Support am Testeditor (Autocompletion, statesche Analyser)
  4. Fortgeschratt Autocompletion an Highlight vum aktuelle Wäert vun de Variablen

Ass dëst en Open Source Produkt?

Neen, am Moment sinn d'Quellen zou, mä an Zukunft betruechte mir d'Méiglechkeet d'Quellen opzemaachen

vu waat liefs du?)

Zesumme mat der gratis Versioun plangen mir eng bezuelte Versioun vum Produkt ze verëffentlechen. Et wäert haaptsächlech Saachen enthalen déi e Server Säit erfuerderen, zum Beispill Synchroniséierung.

Konklusioun

Eise Projet beweegt sech mat Sprongen a Grenzen op eng stabil Verëffentlechung. Wéi och ëmmer, de Produit ka scho benotzt ginn, an de positiven Feedback vun eise fréie Benotzer ass Beweis dofir. Mir sammelen aktiv Feedback, well ouni enk Zesummenaarbecht mat der Communautéit ass et onméiglech e gutt Instrument ze bauen. Dir fannt eis hei:

Offiziell Websäit

Hëllefe profitéieren

D'Visiteuren haten et

Facebook

Ausgaben Tracker

Mir freeën eis op Är Wënsch a Virschléi!

Source: will.com

Setzt e Commentaire