TestMace - 'n kragtige IDE om met API's te werk

Hi almal! Vandag wil ons ons produk aan die IT-publiek aanbied - 'n IDE om met API's te werk TestMace. Miskien weet sommige van julle reeds van ons van vorige artikels. Daar was egter geen omvattende hersiening van die instrument nie, so ons spreek hierdie ongelukkige tekortkoming aan.

TestMace - 'n kragtige IDE om met API's te werk

Motivering

Ek wil graag begin met hoe ons eintlik tot hierdie lewe gekom het en besluit het om ons eie instrument vir gevorderde werk met die API te skep. Kom ons begin met 'n lys van funksies wat 'n produk moet hê, waaroor ons, na ons mening, kan sê dat dit 'n "IDE vir werk met API's" is:

  • Skep en uitvoer van navrae en skrifte (reekse van navrae)
  • Skryf verskillende soorte toetse
  • Toets generasie
  • Werk met API-beskrywings, insluitend invoer vanaf formate soos Swagger, OpenAPI, WADL, ens.
  • Spottende versoeke
  • Goeie ondersteuning vir een of meer tale vir die skryf van skrifte, insluitend integrasie met gewilde biblioteke
  • ens.

Die lys kan uitgebrei word om jou smaak te pas. Boonop is dit belangrik om nie net die IDE self te skep nie, maar ook 'n sekere infrastruktuur, soos wolksinchronisasie, opdragreëlgereedskap, aanlyn moniteringsdiens, ens. Op die ou end dikteer die tendense van die afgelope jare vir ons nie net die kragtige funksionaliteit van die toepassing nie, maar ook die aangename koppelvlak.

Wie het so 'n hulpmiddel nodig? Dit is duidelik dat almal wat op een of ander manier met die ontwikkeling en toetsing van API's verband hou, ontwikkelaars en toetsers is =). Verder, as dit vir eersgenoemde dikwels genoeg is om enkele navrae en eenvoudige skrifte uit te voer, dan is dit vir toetsers een van die hoofinstrumente, wat onder andere 'n kragtige meganisme moet insluit vir die skryf van toetse met die vermoë om dit uit te voer CI.

Dus, na aanleiding van hierdie riglyne, het ons begin om ons produk te skep. Kom ons kyk wat ons op hierdie stadium bereik het.

Vinnige begin

Kom ons begin met 'n eerste kennismaking met die toepassing. Jy kan dit aflaai op ons webwerf. Op die oomblik word al 3 groot platforms ondersteun - Windows, Linux, MacOS. Laai af, installeer, begin. Wanneer jy dit vir die eerste keer begin, sal jy dalk die volgende venster sien:

TestMace - 'n kragtige IDE om met API's te werk

Klik op die plusteken bo-aan die inhoudsarea om jou eerste versoek te skep. Die navraag-oortjie lyk soos volg:

TestMace - 'n kragtige IDE om met API's te werk

Kom ons kyk in meer detail daarna. Die versoekkoppelvlak is baie soortgelyk aan die koppelvlak van gewilde ruskliënte, wat migrasie vanaf soortgelyke nutsgoed makliker maak. Kom ons rig die eerste versoek aan die url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - 'n kragtige IDE om met API's te werk

Oor die algemeen bring die reaksiepaneel met die eerste oogopslag ook geen verrassings nie. Ek wil egter u aandag op 'n paar punte vestig:

  1. Die liggaam van die antwoord word aangebied in die vorm van 'n boom, wat eerstens inligtinginhoud byvoeg en tweedens jou toelaat om 'n paar interessante kenmerke by te voeg waaroor hieronder
  2. Daar is 'n Bewerings-oortjie wat 'n lys toetse vir 'n gegewe versoek vertoon

Soos u kan sien, kan ons instrument as 'n gerieflike ruskliënt gebruik word. Ons sou egter nie hier wees as die vermoëns daarvan beperk was tot die stuur van versoeke nie. Vervolgens sal ek die basiese konsepte en funksionaliteit van TestMace uiteensit.

Basiese konsepte en kenmerke

knoop

TestMace-funksionaliteit word in verskillende tipes nodusse verdeel. In die voorbeeld hierbo het ons die werking van die RequestStep-nodus gedemonstreer. Die volgende tipes nodusse is egter nou ook in die toepassing beskikbaar:

  • RequestStep. Dit is die nodus waardeur jy 'n versoek kan skep. Dit kan slegs een Assertion node as 'n kind element hê.
  • Bewering. Die nodus word gebruik om toetse te skryf. Kan slegs 'n kindnodus van die RequestStep-nodus wees.
  • Folder. Laat jou toe om vouer- en RequestStep-nodusse binne hulself te groepeer.
  • Projek. Dit is die wortelknoop, wat outomaties geskep word wanneer die projek geskep word. Andersins herhaal dit die funksionaliteit van die Folder-nodus.
  • Skakel. Skakel na die Folder of RequestStep-nodus. Laat jou toe om navrae en skrifte te hergebruik.
  • ens.

Die nodusse is in skrape geleë (die paneel links onder, wat gebruik word om vinnig "eenmalige" navrae te skep) en in projekte (die paneel links bo), waarby ons in meer besonderhede sal stilstaan.

Project

Wanneer jy die toepassing begin, sal jy dalk 'n eensame Projek-lyn in die boonste linkerhoek sien. Dit is die wortel van die projekboom. Wanneer jy 'n projek begin, word 'n tydelike projek geskep, waarvan die pad afhang van jou bedryfstelsel. Jy kan enige tyd die projek na 'n plek skuif wat vir jou gerieflik is.

Die hoofdoel van die projek is die vermoë om ontwikkelings in die lêerstelsel te stoor en dit verder te sinchroniseer deur weergawebeheerstelsels, skrifte in CI uit te voer, veranderinge te hersien, ens.

veranderlikes

Veranderlikes is een van die sleutelmeganismes van 'n toepassing. Diegene van julle wat met gereedskap soos TestMace werk, het dalk reeds 'n idee van waaroor ons praat. Dus, veranderlikes is 'n manier om algemene data te stoor en tussen nodusse te kommunikeer. 'n Analoog is byvoorbeeld omgewingsveranderlikes in Postman of Insomnia. Ons het egter verder gegaan en die onderwerp ontwikkel. In TestMace kan veranderlikes op die nodusvlak gestel word. Enige. Daar is ook 'n meganisme vir die oorerwing van veranderlikes van voorouers en oorvleuelende veranderlikes in afstammelinge. Daarbenewens is daar 'n aantal ingeboude veranderlikes, die name van die ingeboude veranderlikes begin met $. Hier is 'n paar van hulle:

  • $prevStep - skakel na veranderlikes van die vorige nodus
  • $nextStep - skakel na veranderlikes van die volgende nodus
  • $parent - dieselfde ding, maar net vir die voorvader
  • $response - reaksie van die bediener
  • $env - huidige omgewingsveranderlikes
  • $dynamicVar - dinamiese veranderlikes geskep tydens skrip of navraag uitvoering

$env - dit is in wese gewone Projek nodus vlak veranderlikes, maar die stel omgewing veranderlikes verander na gelang van die geselekteerde omgewing.

Die veranderlike word verkry via ${variable_name}
Die waarde van 'n veranderlike kan 'n ander veranderlike wees, of selfs 'n hele uitdrukking. Byvoorbeeld, die url-veranderlike kan 'n uitdrukking wees soos
http://${host}:${port}/${endpoint}.

Afsonderlik is dit die moeite werd om te let op die moontlikheid om veranderlikes toe te ken tydens skripuitvoering. Daar is byvoorbeeld dikwels 'n behoefte om magtigingsdata ('n teken of die hele kopskrif) wat van die bediener af gekom het na 'n suksesvolle aanmelding te stoor. Met TestMace kan u sulke data stoor in dinamiese veranderlikes van een van die voorouers. Om botsings met reeds bestaande "statiese" veranderlikes te vermy, word dinamiese veranderlikes in 'n aparte voorwerp geplaas $dynamicVar.

Scenario's

Deur al die bogenoemde kenmerke te gebruik, kan jy hele navraagskrifte laat loop. Byvoorbeeld, die skep van 'n entiteit -> navraag na 'n entiteit -> die verwydering van 'n entiteit. In hierdie geval, byvoorbeeld, kan jy die Folder node gebruik om verskeie RequestStep nodusse te groepeer.

Outovoltooiing en uitdrukkingsuitlig

Vir gerieflike werk met veranderlikes (en nie net nie) is outovoltooiing nodig. En natuurlik om die waarde van 'n uitdrukking uit te lig om dit makliker en geriefliker te maak om te verduidelik waaraan 'n bepaalde veranderlike gelyk is. Dit is presies die geval wanneer dit beter is om een ​​keer te sien as om honderd keer te hoor:

TestMace - 'n kragtige IDE om met API's te werk

Dit is opmerklik dat outovoltooiing nie net vir veranderlikes geïmplementeer word nie, maar ook byvoorbeeld vir opskrifte, waardes van sekere opskrifte (byvoorbeeld outovoltooiing vir die inhoudtipe-kop), protokolle en nog baie meer. Die lys word voortdurend opgedateer namate die toepassing groei.

Ontdoen/doen oor

Om veranderinge ongedaan te maak/herdoen is 'n baie gerieflike ding, maar om een ​​of ander rede word dit nie oral geïmplementeer nie (en gereedskap om met API's te werk is geen uitsondering nie). Maar ons is nie een van daardie nie!) Ons het ongedaan/herdoen regdeur die hele projek geïmplementeer, wat jou toelaat om nie net die wysiging van 'n spesifieke nodus ongedaan te maak nie, maar ook die skepping, verwydering, beweging daarvan, ens. Die mees kritieke operasies vereis bevestiging.

Die skep van toetse

Die Assertion node is verantwoordelik vir die skep van toetse. Een van die hoofkenmerke is die vermoë om toetse sonder programmering te skep, met behulp van ingeboude redigeerders.

'n Assertion node bestaan ​​uit 'n stel bewerings. Elke bewering het sy eie tipe; op die oomblik is daar verskeie tipes bewerings

  1. Vergelyk waardes - vergelyk eenvoudig 2 waardes. Daar is verskeie vergelykingsoperateurs: gelyk, nie gelyk nie, groter as, groter as of gelyk aan, minder as, minder as of gelyk aan.

  2. Bevat waarde - kontroleer die voorkoms van 'n substring in 'n string.

  3. XPath - kontroleer dat die kieser in XML 'n sekere waarde bevat.

  4. JavaScript-bewering is 'n arbitrêre javascript-skrif wat waar by sukses en onwaar by mislukking gee.

Ek let daarop dat slegs die laaste een programmeringsvaardighede van die gebruiker vereis, die ander 3 bewerings word geskep met behulp van 'n grafiese koppelvlak. Hier is byvoorbeeld hoe die dialoog vir die skep van 'n vergelykingswaarde-bewering lyk:

TestMace - 'n kragtige IDE om met API's te werk

Die kersie op die koek is die vinnige skepping van bewerings uit antwoorde, kyk net daarna!

TestMace - 'n kragtige IDE om met API's te werk

Sulke bewerings het egter ooglopende beperkings, wat jy dalk 'n javascript-bewering wil gebruik om te oorkom. En hier bied TestMace ook 'n gemaklike omgewing met outovoltooiing, sintaksis-verligting en selfs 'n statiese ontleder.

API beskrywing

Met TestMace kan jy nie net die API gebruik nie, maar ook om dit te dokumenteer. Boonop het die beskrywing self ook 'n hiërargiese struktuur en pas organies by die res van die projek in. Daarbenewens is dit tans moontlik om API-beskrywings vanaf Swagger 2.0 / OpenAPI 3.0-formate in te voer. Die beskrywing self lê nie net doodgewig nie, maar is nou geïntegreer met die res van die projek, veral outo-voltooiing van URL's, HTTP-opskrifte, navraagparameters, ens. is beskikbaar, en in die toekoms beplan ons om toetse by te voeg. vir die nakoming van die reaksie met die API-beskrywing.

Deel nodus

Geval: jy wil 'n problematiese versoek of selfs 'n hele draaiboek met 'n kollega deel of dit bloot aan 'n fout heg. TestMace dek ook hierdie geval: die toepassing laat jou toe om enige nodus en selfs 'n subboom in 'n URL te serialiseer. Copy-paste en jy kan die versoek maklik na 'n ander masjien of projek oordra.

Mensleesbare projekbergingsformaat

Op die oomblik word elke nodus gestoor in 'n aparte lêer met die yml-uitbreiding (soos die geval is met die Assertion node), of in 'n vouer met die naam van die node en die index.yml lêer daarin.
Byvoorbeeld, so lyk die versoeklêer wat ons in die resensie hierbo gemaak het:

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

Soos u kan sien, is alles baie duidelik. As jy wil, kan hierdie formaat maklik met die hand gewysig word.

Die hiërargie van dopgehou in die lêerstelsel herhaal die hiërargie van nodusse in die projek heeltemal. Byvoorbeeld, 'n skrif soos:

TestMace - 'n kragtige IDE om met API's te werk

Kaart die lêerstelsel na die volgende struktuur (slegs die gidshiërargie word gewys, maar die essensie is duidelik)

TestMace - 'n kragtige IDE om met API's te werk

Dit maak die projekhersieningsproses makliker.

Invoer van Postman

Nadat hulle al die bogenoemde gelees het, sal sommige gebruikers 'n nuwe produk wil probeer (reg?) of (wat de hel maak nie 'n grap nie!) dit heeltemal in hul projek gebruik. Migrasie kan egter gestuit word deur 'n groot aantal ontwikkelings in dieselfde Posman. Vir sulke gevalle ondersteun TestMace die invoer van versamelings vanaf Postman. Op die oomblik word invoere sonder toetse ondersteun, maar ons sluit nie uit om dit in die toekoms te ondersteun nie.

Planne

Ek hoop dat baie van diegene wat tot op hierdie punt gelees het, van ons produk gehou het. Dit is egter nie al nie! Werk aan die produk is in volle swang en hier is 'n paar kenmerke wat ons binnekort beplan om by te voeg.

Wolk-sinkronisering

Een van die mees gevraagde kenmerke. Op die oomblik stel ons voor om weergawebeheerstelsels vir sinchronisasie te gebruik, waarvoor ons die formaat meer vriendelik maak vir hierdie tipe berging. Hierdie werkvloei is egter nie geskik vir almal nie, daarom beplan ons om 'n sinchronisasiemeganisme by te voeg wat aan baie bekend is deur ons bedieners.

CLI

Soos hierbo genoem, kan IDE-vlak produkte nie sonder allerhande integrasies met bestaande toepassings of werkstrome klaarkom nie. Die CLI is presies wat nodig is om toetse wat in TestMace geskryf is, in die deurlopende integrasieproses te integreer. Werk aan die CLI is in volle swang; vroeë weergawes sal die projek begin met 'n eenvoudige konsoleverslag. In die toekoms beplan ons om verslaguitvoer in JUnit-formaat by te voeg.

Inprop stelsel

Ten spyte van al die krag van ons instrument, is die stel gevalle wat oplossings vereis onbeperk. Daar is immers take wat spesifiek vir 'n bepaalde projek is. Dit is hoekom ons in die toekoms beplan om 'n SDK by te voeg vir die ontwikkeling van plugins en elke ontwikkelaar sal funksionaliteit na hul smaak kan byvoeg.

Brei die reeks nodustipes uit

Hierdie stel nodusse dek nie alle gevalle wat deur die gebruiker vereis word nie. Nodusse wat beplan word om bygevoeg te word:

  • Skripnodus - skakel data om en plaas data met behulp van js en die ooreenstemmende API. Deur hierdie tipe nodus te gebruik, kan jy dinge soos voorafversoek- en naversoekskrifte in Postman doen.
  • GraphQL node - graphql ondersteuning
  • Pasgemaakte beweringsnodus - sal jou toelaat om die stel bestaande bewerings in die projek uit te brei
    Natuurlik is hierdie nie 'n finale lys nie; dit sal voortdurend bygewerk word as gevolg van, onder andere, jou terugvoer.

FAQ

Hoe verskil jy van Postman?

  1. Die konsep van nodusse, wat jou toelaat om die funksionaliteit van die projek byna eindeloos te skaal
  2. Mensleesbare projekformaat met stoor dit in 'n lêerstelsel, wat werk vergemaklik deur weergawebeheerstelsels te gebruik
  3. Die vermoë om toetse te skep sonder programmering en meer gevorderde js-ondersteuning in die toetsredigeerder (outovoltooiing, statiese ontleder)
  4. Gevorderde outovoltooiing en uitlig van die huidige waarde van veranderlikes

Is dit 'n oopbronproduk?

Nee, op die oomblik is die bronne gesluit, maar in die toekoms oorweeg ons die moontlikheid om die bronne oop te maak

Waarvan leef jy?)

Saam met die gratis weergawe beplan ons om 'n betaalde weergawe van die produk vry te stel. Dit sal hoofsaaklik dinge insluit wat 'n bedienerkant vereis, byvoorbeeld sinchronisasie.

Gevolgtrekking

Ons projek beweeg met rasse skrede na 'n stabiele vrystelling. Die produk kan egter reeds gebruik word, en die positiewe terugvoer van ons vroeë gebruikers is 'n bewys hiervan. Ons samel aktief terugvoer in, want sonder noue samewerking met die gemeenskap is dit onmoontlik om 'n goeie hulpmiddel te bou. Jy kan ons hier vind:

Amptelike webwerf

telegram

Slack

Facebook

Kwessies spoorsnyer

Ons sien uit na jou wense en voorstelle!

Bron: will.com

Voeg 'n opmerking