TestMace - een krachtige IDE voor het werken met API's

Dag Allemaal! Vandaag willen we ons product aan het IT-publiek presenteren: een IDE voor het werken met API's TestMace. Misschien kennen sommigen van jullie ons al van eerdere artikelen. Er heeft echter geen alomvattende evaluatie van de tool plaatsgevonden, dus we pakken deze ongelukkige tekortkoming aan.

TestMace - een krachtige IDE voor het werken met API's

Motivatie

Ik zou graag willen beginnen met hoe we in feite tot dit leven zijn gekomen en hebben besloten onze eigen tool te maken voor geavanceerd werken met de API. Laten we beginnen met een lijst met functionaliteiten die een product zou moeten hebben, waarover we naar onze mening kunnen zeggen dat het een “IDE is voor het werken met API’s”:

  • Query's en scripts maken en uitvoeren (reeksen van query's)
  • Schrijven van diverse soorten testen
  • Testgeneratie
  • Werken met API-beschrijvingen, inclusief importeren vanuit formaten zoals Swagger, OpenAPI, WADL, etc.
  • Spottende verzoeken
  • Goede ondersteuning voor één of meerdere talen voor het schrijven van scripts, inclusief integratie met populaire bibliotheken
  • etc.

De lijst kan naar eigen smaak worden uitgebreid. Bovendien is het belangrijk om niet alleen de IDE zelf te creëren, maar ook een bepaalde infrastructuur, zoals cloudsynchronisatie, opdrachtregeltools, online monitoringservice, enz. Uiteindelijk dicteren de trends van de afgelopen jaren ons niet alleen de krachtige functionaliteit van de applicatie, maar ook de prettige interface.

Wie heeft zo'n hulpmiddel nodig? Het is duidelijk dat iedereen die op zijn minst op de een of andere manier betrokken is bij de ontwikkeling en het testen van API's ontwikkelaars en testers zijn =). Bovendien, als het voor eerstgenoemden vaak voldoende is om afzonderlijke queries en eenvoudige scripts uit te voeren, dan is dit voor testers een van de belangrijkste tools, die onder andere een krachtig mechanisme voor het schrijven van tests zou moeten bevatten met de mogelijkheid om ze uit te voeren in CI.

Dus, volgens deze richtlijnen, begonnen we ons product te creëren. Laten we eens kijken wat we in deze fase hebben bereikt.

Snelle start

Laten we beginnen met een eerste kennismaking met de applicatie. Je kunt het downloaden op onze website. Op dit moment worden alle drie de grote platforms ondersteund: Windows, Linux, MacOS. Downloaden, installeren, starten. Wanneer u het voor de eerste keer start, ziet u mogelijk het volgende venster:

TestMace - een krachtige IDE voor het werken met API's

Klik op het plusteken bovenaan het inhoudsgebied om uw eerste verzoek in te dienen. Het tabblad Query ziet er als volgt uit:

TestMace - een krachtige IDE voor het werken met API's

Laten we het in meer detail bekijken. De verzoekinterface lijkt sterk op de interface van populaire restclients, wat de migratie vanuit vergelijkbare tools eenvoudiger maakt. Laten we het eerste verzoek naar de URL doen https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - een krachtige IDE voor het werken met API's

Over het algemeen levert het responspaneel op het eerste gezicht ook geen verrassingen op. Toch wil ik uw aandacht vestigen op enkele punten:

  1. De hoofdtekst van het antwoord wordt weergegeven in de vorm van een boom, die ten eerste informatie-inhoud toevoegt en ten tweede u in staat stelt enkele interessante functies toe te voegen, waarover hieronder
  2. Er is een tabblad Beweringen, dat een lijst met tests voor een bepaald verzoek weergeeft

Zoals u kunt zien, kan onze tool worden gebruikt als een handige rustclient. We zouden hier echter niet zijn als de mogelijkheden ervan beperkt zouden blijven tot het verzenden van verzoeken. Vervolgens zal ik de basisconcepten en functionaliteit van TestMace schetsen.

Basisconcepten en functies

knooppunt

De functionaliteit van TestMace is onderverdeeld in verschillende soorten knooppunten. In het bovenstaande voorbeeld hebben we de werking van het RequestStep-knooppunt gedemonstreerd. De volgende typen knooppunten zijn nu echter ook beschikbaar in de applicatie:

  • VerzoekStap. Dit is het knooppunt waarmee u een aanvraag kunt indienen. Het kan slechts één Assertion-knooppunt als onderliggend element hebben.
  • Bewering. Het knooppunt wordt gebruikt om tests te schrijven. Kan alleen een onderliggend knooppunt van het RequestStep-knooppunt zijn.
  • Map. Hiermee kunt u Folder- en RequestStep-knooppunten binnen zichzelf groeperen.
  • Project. Dit is het hoofdknooppunt, dat automatisch wordt aangemaakt wanneer het project wordt gemaakt. Anders herhaalt het de functionaliteit van het mapknooppunt.
  • Koppeling. Koppeling naar het map- of RequestStep-knooppunt. Hiermee kunt u query's en scripts opnieuw gebruiken.
  • etc.

De knooppunten bevinden zich in scratchs (het paneel linksonder, gebruikt om snel “eenmalige” queries te maken) en in projecten (het paneel linksboven), waar we dieper op in zullen gaan.

Project

Wanneer u de toepassing start, ziet u mogelijk een eenzame Project-regel in de linkerbovenhoek. Dit is de wortel van de projectboom. Wanneer u een project start, wordt er een tijdelijk project gemaakt, waarvan het pad afhankelijk is van uw besturingssysteem. U kunt het project op elk moment verplaatsen naar een voor u geschikte plaats.

Het hoofddoel van het project is de mogelijkheid om ontwikkelingen in het bestandssysteem op te slaan en verder te synchroniseren via versiebeheersystemen, scripts uit te voeren in CI, wijzigingen te bekijken, enz.

variabelen

Variabelen zijn een van de belangrijkste mechanismen van een applicatie. Degenen onder jullie die met tools als TestMace werken, hebben misschien al een idee waar we het over hebben. Variabelen zijn dus een manier om gemeenschappelijke gegevens op te slaan en tussen knooppunten te communiceren. Een analogon zijn bijvoorbeeld omgevingsvariabelen in Postman of Insomnia. We gingen echter verder en ontwikkelden het onderwerp. In TestMace kunnen variabelen op knooppuntniveau worden ingesteld. Elk. Er is ook een mechanisme voor het erven van variabelen van voorouders en overlappende variabelen van nakomelingen. Daarnaast zijn er een aantal ingebouwde variabelen, de namen van de ingebouwde variabelen beginnen met $. Hier zijn er een aantal:

  • $prevStep - link naar variabelen van het vorige knooppunt
  • $nextStep — link naar variabelen van het volgende knooppunt
  • $parent - hetzelfde, maar alleen voor de voorouder
  • $response - reactie van de server
  • $env - huidige omgevingsvariabelen
  • $dynamicVar - dynamische variabelen die zijn gemaakt tijdens de uitvoering van scripts of query's

$env - dit zijn in wezen gewone variabelen op projectknooppuntniveau, maar de set omgevingsvariabelen verandert afhankelijk van de geselecteerde omgeving.

De variabele is toegankelijk via ${variable_name}
De waarde van een variabele kan een andere variabele zijn, of zelfs een volledige expressie. De url-variabele kan bijvoorbeeld een uitdrukking zijn zoals
http://${host}:${port}/${endpoint}.

Afzonderlijk is het de moeite waard om de mogelijkheid te vermelden om variabelen toe te wijzen tijdens de uitvoering van het script. Vaak is het bijvoorbeeld nodig om autorisatiegegevens (een token of de gehele header) op te slaan die van de server komen na een succesvolle login. Met TestMace kunt u dergelijke gegevens opslaan in dynamische variabelen van een van de voorouders. Om botsingen met reeds bestaande “statische” variabelen te voorkomen, worden dynamische variabelen in een apart object geplaatst $dynamicVar.

Scripts

Met behulp van alle bovenstaande functies kunt u volledige queryscripts uitvoeren. Bijvoorbeeld: een entiteit aanmaken -> een entiteit opvragen -> een entiteit verwijderen. In dit geval kunt u bijvoorbeeld het mapknooppunt gebruiken om meerdere RequestStep-knooppunten te groeperen.

Automatische aanvulling en accentuering van expressies

Voor gemakkelijk werken met variabelen (en niet alleen) is automatisch aanvullen noodzakelijk. En natuurlijk het benadrukken van de waarde van een uitdrukking om het gemakkelijker en handiger te maken om te verduidelijken waar een bepaalde variabele gelijk aan is. Dit is precies het geval wanneer het beter is om één keer te zien dan honderd keer te horen:

TestMace - een krachtige IDE voor het werken met API's

Het is vermeldenswaard dat automatische aanvulling niet alleen voor variabelen wordt geïmplementeerd, maar bijvoorbeeld ook voor headers, waarden van bepaalde headers (bijvoorbeeld automatische aanvulling voor de Content-Type header), protocollen en nog veel meer. De lijst wordt voortdurend bijgewerkt naarmate de applicatie groeit.

Ongedaan maken/opnieuw doen

Het ongedaan maken/opnieuw uitvoeren van wijzigingen is erg handig, maar om de een of andere reden is het niet overal geïmplementeerd (en tools voor het werken met API's vormen hierop geen uitzondering). Maar wij zijn daar niet één van!) We hebben gedurende het hele project ongedaan maken/opnieuw uitvoeren geïmplementeerd, waardoor u niet alleen het bewerken van een specifiek knooppunt ongedaan kunt maken, maar ook de creatie, verwijdering, verplaatsing ervan, enz. De meest kritische operaties vereisen bevestiging.

Testen maken

Het Assertion-knooppunt is verantwoordelijk voor het maken van tests. Een van de belangrijkste kenmerken is de mogelijkheid om tests te maken zonder te programmeren, met behulp van ingebouwde editors.

Een Assertion-knooppunt bestaat uit een reeks beweringen. Elke bewering heeft zijn eigen type; momenteel zijn er verschillende soorten beweringen

  1. Waarden vergelijken - vergelijkt eenvoudigweg 2 waarden. Er zijn verschillende vergelijkingsoperatoren: gelijk, niet gelijk, groter dan, groter dan of gelijk aan, kleiner dan, kleiner dan of gelijk aan.

  2. Bevat waarde - controleert of een subtekenreeks in een tekenreeks voorkomt.

  3. XPath - controleert of de selector in XML een bepaalde waarde bevat.

  4. JavaScript-bewering is een willekeurig JavaScript-script dat waar retourneert bij succes en onwaar bij mislukking.

Ik merk op dat alleen de laatste programmeervaardigheden van de gebruiker vereist, de andere 3 beweringen worden gemaakt met behulp van een grafische interface. Hier ziet u bijvoorbeeld hoe het dialoogvenster voor het maken van een vergelijkingswaardenbewering eruit ziet:

TestMace - een krachtige IDE voor het werken met API's

De kers op de taart is het snel creëren van stellingen op basis van reacties, kijk er maar naar!

TestMace - een krachtige IDE voor het werken met API's

Dergelijke beweringen hebben echter duidelijke beperkingen, die u misschien met behulp van een JavaScript-bewering wilt overwinnen. En hier biedt TestMace ook een comfortabele omgeving met automatisch aanvullen, syntaxisaccentuering en zelfs een statische analysator.

API-beschrijving

Met TestMace kunt u de API niet alleen gebruiken, maar ook documenteren. Bovendien heeft de beschrijving zelf ook een hiërarchische structuur en past ze organisch in de rest van het project. Bovendien is het momenteel mogelijk om API-beschrijvingen uit Swagger 2.0 / OpenAPI 3.0-formaten te importeren. De beschrijving zelf is niet alleen maar een dood gewicht, maar is nauw geïntegreerd met de rest van het project. In het bijzonder is het automatisch aanvullen van URL's, HTTP-headers, queryparameters, enz. beschikbaar, en in de toekomst zijn we van plan tests toe te voegen voor overeenstemming van het antwoord met de API-beschrijving.

Knooppunt delen

Voorbeeld: u wilt een problematisch verzoek of zelfs een heel script met een collega delen of het eenvoudig aan een bug koppelen. TestMace dekt dit geval ook: met de applicatie kunt u elk knooppunt en zelfs een subboom in een URL serialiseren. Copy-paste en u kunt de aanvraag eenvoudig overbrengen naar een andere machine of project.

Voor mensen leesbaar formaat voor projectopslag

Momenteel wordt elke node opgeslagen in een apart bestand met de yml-extensie (zoals het geval is bij de Assertion-node), of in een map met daarin de naam van de node en het bestand index.yml.
Zo ziet het verzoekbestand dat we in de bovenstaande review hebben gemaakt er bijvoorbeeld uit:

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

Zoals je kunt zien, is alles heel duidelijk. Indien gewenst kan dit formaat eenvoudig handmatig worden bewerkt.

De hiërarchie van mappen in het bestandssysteem herhaalt de hiërarchie van knooppunten in het project volledig. Een script als bijvoorbeeld:

TestMace - een krachtige IDE voor het werken met API's

Wijst het bestandssysteem toe aan de volgende structuur (alleen de maphiërarchie wordt getoond, maar de essentie is duidelijk)

TestMace - een krachtige IDE voor het werken met API's

Dit maakt het projectbeoordelingsproces eenvoudiger.

Importeren uit postbode

Na het lezen van al het bovenstaande zullen sommige gebruikers (toch?) een nieuw product willen proberen of (wat is dat in godsnaam niet voor de gek!) volledig in hun project gebruiken. Migratie kan echter worden tegengehouden door een groot aantal ontwikkelingen bij dezelfde Postbode. Voor dergelijke gevallen ondersteunt TestMace het importeren van collecties van Postman. Op dit moment wordt import zonder tests ondersteund, maar we sluiten niet uit dat we deze in de toekomst zullen ondersteunen.

Plannen

Ik hoop dat veel van degenen die tot nu toe hebben gelezen, ons product leuk vonden. Maar dat is nog niet alles! Het werk aan het product is in volle gang en hier zijn enkele functies die we binnenkort willen toevoegen.

Cloud synchronisatie

Een van de meest gevraagde functies. Op dit moment stellen we voor om versiebeheersystemen te gebruiken voor synchronisatie, waarvoor we het formaat vriendelijker maken voor dit type opslag. Deze workflow is echter niet voor iedereen geschikt, daarom zijn we van plan een synchronisatiemechanisme toe te voegen dat voor velen bekend is via onze servers.

CLI

Zoals hierboven vermeld kunnen producten op IDE-niveau niet zonder allerlei integraties met bestaande applicaties of workflows. De CLI is precies wat nodig is om in TestMace geschreven tests te integreren in het continue integratieproces. Het werk aan de CLI is in volle gang; vroege versies zullen het project lanceren met een eenvoudig consolerapport. In de toekomst zijn we van plan rapportuitvoer in JUnit-indeling toe te voegen.

Plug-in systeem

Ondanks alle kracht van onze tool is het aantal gevallen waarvoor oplossingen nodig zijn onbeperkt. Er zijn immers taken die specifiek zijn voor een bepaald project. Daarom zijn we van plan om in de toekomst een SDK toe te voegen voor het ontwikkelen van plug-ins, zodat elke ontwikkelaar functionaliteit naar eigen wens kan toevoegen.

Het bereik van knooppunttypen uitbreiden

Deze set knooppunten dekt niet alle door de gebruiker vereiste gevallen. Knooppunten die naar verwachting zullen worden toegevoegd:

  • Scriptknooppunt - converteert en plaatst gegevens met behulp van js en de bijbehorende API. Met dit type knooppunt kunt u in Postman bijvoorbeeld scripts vóór en na de aanvraag uitvoeren.
  • GraphQL-knooppunt - graphql-ondersteuning
  • Aangepast bevestigingsknooppunt: hiermee kunt u de reeks bestaande beweringen in het project uitbreiden
    Uiteraard is dit geen definitieve lijst; deze wordt voortdurend bijgewerkt, onder andere op basis van uw feedback.

FAQ

Waarin verschilt u van Postbode?

  1. Het concept van knooppunten, waarmee u de functionaliteit van het project vrijwel eindeloos kunt schalen
  2. Voor mensen leesbaar projectformaat met opslag in een bestandssysteem, wat het werken met versiebeheersystemen vereenvoudigt
  3. Mogelijkheid om tests te maken zonder programmeren en meer geavanceerde js-ondersteuning in de testeditor (automatische aanvulling, statische analysator)
  4. Geavanceerde automatische aanvulling en markering van de huidige waarde van variabelen

Is dit een open source-product?

Nee, op dit moment zijn de bronnen gesloten, maar in de toekomst overwegen wij de mogelijkheid om de bronnen te openen

Waar leef jij van?)

Naast de gratis versie zijn we van plan een betaalde versie van het product uit te brengen. Het omvat voornamelijk zaken die een serverkant vereisen, bijvoorbeeld synchronisatie.

Conclusie

Ons project beweegt zich met grote sprongen richting een stabiele release. Het product kan echter al worden gebruikt en de positieve feedback van onze vroege gebruikers is hiervan het bewijs. We verzamelen actief feedback, want zonder nauwe samenwerking met de community is het onmogelijk om een ​​goede tool te bouwen. U kunt ons hier vinden:

Officiële website

Telegram

Slack

Facebook

Problemen-tracker

Wij kijken uit naar uw wensen en suggesties!

Bron: www.habr.com

Voeg een reactie