TestMace - in krêftige IDE foar wurkjen mei API's

Hoi allegearre! Hjoed wolle wy ús produkt oan it IT-publyk presintearje - in IDE foar wurkjen mei API's TestMace. Miskien guon fan jim al witte oer ús út foarige artikels. D'r is lykwols gjin wiidweidige resinsje fan it ark west, dus wy pakke dit ûngelokkige tekoart oan.

TestMace - in krêftige IDE foar wurkjen mei API's

Motivaasje

Ik soe graach begjinne mei hoe't wy yn feite ta dit libben kamen en besletten om ús eigen ark te meitsjen foar avansearre wurk mei de API. Litte wy begjinne mei in list mei funksjonaliteit dy't in produkt moat hawwe, wêrfan wy, nei ús miening, kinne sizze dat it in "IDE foar wurkjen mei API's" is:

  • Query's en skripts oanmeitsje en útfiere (sekwinsjes fan queries)
  • Skriuwen fan ferskate soarten tests
  • Test generaasje
  • Wurkje mei API-beskriuwingen, ynklusyf ymportearjen fan formaten lykas Swagger, OpenAPI, WADL, ensfh.
  • Spottende fersiken
  • Goede stipe foar ien of mear talen foar it skriuwen fan skripts, ynklusyf yntegraasje mei populêre bibleteken
  • en sa fierder.

De list kin útwreide wurde nei jo smaak. Boppedat is it wichtich om net allinich de IDE sels te meitsjen, mar ek in bepaalde ynfrastruktuer, lykas wolksyngronisaasje, kommandorigelark, online tafersjochtsjinst, ensfh. Uteinlik diktearje de trends fan 'e lêste jierren ús net allinich de krêftige funksjonaliteit fan' e applikaasje, mar ek de noflike ynterface.

Wa hat sa'n ark nedich? Fansels binne al dyjingen dy't op syn minst ien of oare manier ferbûn binne mei de ûntwikkeling en testen fan API's ûntwikkelders en testers =). Boppedat, as it foar de eardere faak genôch is om inkele fragen en ienfâldige skripts út te fieren, dan is dit foar testers ien fan 'e wichtichste ark, dy't ûnder oare in krêftich meganisme moat omfetsje foar it skriuwen fan tests mei de mooglikheid om se út te fieren CI.

Dat, nei dizze rjochtlinen, begûnen wy ús produkt te meitsjen. Lit ús sjen wat wy hawwe berikt yn dit stadium.

Snelle start

Litte wy begjinne mei in earste kunde mei de applikaasje. Jo kinne it downloade op ús webside. Op it stuit wurde alle 3 grutte platfoarms stipe - Windows, Linux, MacOS. Download, ynstallearje, lansearje. As jo ​​​​it foar de earste kear starte, kinne jo it folgjende finster sjen:

TestMace - in krêftige IDE foar wurkjen mei API's

Klikje op it plusteken oan 'e boppekant fan it ynhâldsgebiet om jo earste fersyk te meitsjen. De query-ljepper sjocht der sa út:

TestMace - in krêftige IDE foar wurkjen mei API's

Litte wy it yn mear detail besjen. De fersykynterface is heul gelyk oan de ynterface fan populêre restkliïnten, wat migraasje fan ferlykbere ark makliker makket. Litte wy it earste fersyk oanmeitsje oan de url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - in krêftige IDE foar wurkjen mei API's

Yn 't algemien smyt it antwurdpaniel op it earste each ek gjin ferrassingen op. Ik wol lykwols jo oandacht op guon punten freegje:

  1. It lichem fan 'e antwurd wurdt fertsjintwurdige yn' e foarm fan in beam, dy't yn earste ynstânsje ynformaasjeynhâld tafoeget en as twadde kinne jo inkele nijsgjirrige funksjes taheakje oer hokker hjirûnder
  2. D'r is in ljepper Assertions, dy't in list mei tests foar in opjûne fersyk toant

Sa't jo sjen kinne, kin ús ark brûkt wurde as in handige rêstkliïnt. Wy soene hjir lykwols net wêze as syn mooglikheden allinich wiene beheind ta it ferstjoeren fan fersiken. Dêrnei sil ik de basisbegripen en funksjonaliteit fan TestMace sketse.

Basis konsepten en funksjes

Knot

TestMace-funksjonaliteit is ferdield yn ferskate knooppunten. Yn it hjirboppe foarbyld hawwe wy de wurking fan it RequestStep-knooppunt oantoand. De folgjende soarten knooppunten binne no ek te krijen yn 'e applikaasje:

  • RequestStep. Dit is it knooppunt wêrmei jo in fersyk kinne oanmeitsje. It kin mar ien Assertion-knooppunt hawwe as in bernelemint.
  • Bewearing. It knooppunt wurdt brûkt om tests te skriuwen. Kin allinich in bernknooppunt wêze fan it RequestStep-knooppunt.
  • Folder. Stelt jo yn steat om map- en RequestStep-knooppunten binnen harsels te groepearjen.
  • Projekt. Dit is it rootknooppunt, automatysk oanmakke by it meitsjen fan in projekt. Oars, werhellet it de funksjonaliteit fan it mapknooppunt.
  • Link. Keppeling nei de map of RequestStep-knooppunt. Hjirmei kinne jo queries en skripts opnij brûke.
  • en sa fierder.

De knooppunten lizze yn krassen (it paniel links ûnder, brûkt foar it fluch meitsjen fan "ienmalige" queries) en yn projekten (it paniel linksboppe), dêr't wy yn mear detail oer sille wenje.

It projekt

As jo ​​​​de applikaasje starte, kinne jo miskien in iensume projektrigel yn 'e linker boppeste hoeke fernimme. Dit is de woartel fan 'e projektbeam. As jo ​​​​in projekt begjinne, wurdt in tydlik projekt oanmakke, it paad nei dat hinget ôf fan jo bestjoeringssysteem. Jo kinne op elk momint it projekt ferpleatse nei in plak dat jo handich is.

It haaddoel fan it projekt is de mooglikheid om ûntjouwings yn it bestânsysteem te bewarjen en se fierder te syngronisearje fia ferzjekontrôlesystemen, skripts yn CI útfiere, wizigingen besjen, ensfh.

Fariabelen

Fariabelen binne ien fan 'e wichtichste meganismen fan in applikaasje. Dy fan jimme dy't wurkje mei ark lykas TestMace hawwe miskien al in idee fan wêr't wy it oer hawwe. Dat, fariabelen binne in manier om mienskiplike gegevens op te slaan en te kommunisearjen tusken knopen. In analoog, bygelyks, binne omjouwingsfariabelen yn Postman of Insomnia. Wy gongen lykwols fierder en ûntwikkele it ûnderwerp. Yn TestMace kinne fariabelen ynsteld wurde op it knooppuntnivo. Elk. Der is ek in meganisme foar it erven fan fariabelen fan foarâlden en oerlappende fariabelen yn neikommelingen. Dêrneist binne der in oantal ynboude fariabelen, de nammen fan de ynboude fariabelen begjinne mei $. Hjir is guon fan harren:

  • $prevStep - keppeling nei fariabelen fan 'e foarige knooppunt
  • $nextStep - keppeling nei fariabelen fan 'e folgjende knooppunt
  • $parent - itselde ding, mar allinnich foar de foarfaar
  • $response - antwurd fan de tsjinner
  • $env - hjoeddeistige omjouwingsfariabelen
  • $dynamicVar - dynamyske fariabelen makke tidens skript of query útfiering

$env - dit binne yn wêzen gewoane fariabelen fan Project node nivo, lykwols feroaret de set fan omjouwingsfariabelen ôfhinklik fan de selektearre omjouwing.

De fariabele wurdt tagong fia ${variable_name}
De wearde fan in fariabele kin in oare fariabele wêze, of sels in folsleine útdrukking. Bygelyks, de url-fariabele kin in útdrukking wêze lykas
http://${host}:${port}/${endpoint}.

Apart is it de muoite wurdich op te merken de mooglikheid fan it tawizen fan fariabelen tidens skriptútfiering. Bygelyks, der is faak in needsaak om te bewarjen autorisaasje gegevens (in token of de hiele koptekst) dy't kaam fan de tsjinner nei in suksesfolle oanmelding. TestMace lit jo sokke gegevens bewarje yn dynamyske fariabelen fan ien fan 'e foarâlden. Om botsingen mei al besteande "statyske" fariabelen te foarkommen, wurde dynamyske fariabelen yn in apart objekt pleatst $dynamicVar.

Senario's

Mei alle boppesteande funksjes kinne jo folsleine query-skripts útfiere. Bygelyks, in entiteit oanmeitsje -> in entiteit opfreegje -> in entiteit wiskje. Yn dit gefal kinne jo bygelyks de mapknooppunt brûke om ferskate RequestStep-knooppunten te groepearjen.

Autocompletion en ekspresje markearring

Foar handich wurk mei fariabelen (en net allinich) is autofoltôging nedich. En fansels, markearje de wearde fan in útdrukking om it makliker en handiger te meitsjen om te ferdúdlikjen wat in bepaalde fariabele is gelyk oan. Dat is krekt it gefal as it better is ien kear te sjen dan hûndert kear te hearren:

TestMace - in krêftige IDE foar wurkjen mei API's

It is de muoite wurdich op te merken dat autofoltôging net allinich foar fariabelen wurdt ymplementearre, mar ek bygelyks foar kopteksten, wearden fan bepaalde kopteksten (bygelyks autofoltôging foar de koptekst fan Content-Type), protokollen en folle mear. De list wurdt konstant bywurke as de applikaasje groeit.

Ungedien meitsje / opnij dwaan

Feroarings weromsette / opnij dwaan is in heul handich ding, mar om ien of oare reden wurdt it net oeral ymplementearre (en ark foar wurkjen mei API's binne gjin útsûndering). Mar wy binne net ien fan dy!) Wy hawwe ymplementearre ûngedien / opnij dwaan troch it hiele projekt, wêrtroch jo net allinich it bewurkjen fan in spesifyk knooppunt ûngedien meitsje kinne, mar ek it oanmeitsjen, wiskjen, beweging, ensfh. De meast krityske operaasjes fereaskje befêstiging.

It meitsjen fan tests

De Assertion node is ferantwurdlik foar it meitsjen fan tests. Ien fan 'e haadfunksjes is de mooglikheid om tests te meitsjen sûnder programmearring, mei ynboude bewurkers.

In Assertion node bestiet út in set fan assertions. Elke bewearing hat syn eigen type; op it stuit binne d'r ferskate soarten bewearingen

  1. Fergelykje wearden - fergelike gewoan 2 wearden. D'r binne ferskate fergelikingsoperators: gelyk, net gelyk, grutter as, grutter as of gelyk oan, minder as, minder as of gelyk oan.

  2. Befettet wearde - kontrolearret it foarkommen fan in substring yn in tekenrige.

  3. XPath - kontrolearret dat de selector yn XML in bepaalde wearde befettet.

  4. JavaScript bewearing is in willekeurich javascript skript dat jout wier op súkses en falsk op mislearjen.

Ik konstatearje dat allinich de lêste programmearfeardigens fan 'e brûker fereasket, de oare 3 bewearingen wurde makke mei in grafyske ynterface. Hjir is bygelyks hoe't it dialoochfinster foar it meitsjen fan in bewearing foar fergelykje wearden derút sjocht:

TestMace - in krêftige IDE foar wurkjen mei API's

De kers op 'e taart is it rappe oanmeitsjen fan bewearingen út antwurden, sjoch der mar nei!

TestMace - in krêftige IDE foar wurkjen mei API's

Sokke bewearingen hawwe lykwols dúdlike beheiningen, dy't jo miskien wol in javascript-bewearing brûke wolle om te oerwinnen. En hjir biedt TestMace ek in noflike omjouwing mei autofoltôging, markearring fan syntaksis en sels in statyske analysator.

API Beskriuwing

TestMace lit jo net allinich de API brûke, mar ek it dokumintearje. Boppedat hat de beskriuwing sels ek in hiërargyske struktuer en past organysk yn de rest fan it projekt. Derneist is it op it stuit mooglik API-beskriuwingen te ymportearjen fan Swagger 2.0 / OpenAPI 3.0-formaten. De beskriuwing sels leit net allinich deadgewicht, mar is nau yntegrearre mei de rest fan it projekt, yn 't bysûnder is it automatysk foltôgjen fan URL's, HTTP-headers, queryparameters, ensfh. foar it neilibjen fan it antwurd mei de API-beskriuwing.

Node dielen

Geval: jo wolle in problematysk fersyk of sels in folslein skript mei in kollega diele of gewoan heakje oan in bug. TestMace behannelet dit gefal ek: de applikaasje lit jo elke knooppunt en sels in subtree yn in URL serialisearje. Kopiearje en plakke en jo kinne it fersyk maklik oermeitsje nei in oare masine of projekt.

Human-lêsber projekt opslachformaat

Op it stuit wurdt elk knooppunt opslein yn in aparte triem mei de yml-útwreiding (lykas it gefal is mei de Assertion-knooppunt), of yn in map mei de namme fan it knooppunt en de index.yml-bestân deryn.
Dit is bygelyks wat it fersykbestân dat wy makken yn 'e beoardieling hjirboppe der útsjocht:

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

Sa't jo sjen kinne, alles is hiel dúdlik. As jo ​​​​wolle, kin dit formaat maklik mei de hân bewurke wurde.

De hiërargy fan mappen yn it bestânsysteem werhellet de hiërargy fan knopen yn it projekt folslein. Bygelyks, in skript lykas:

TestMace - in krêftige IDE foar wurkjen mei API's

Mapt it bestânsysteem yn 'e folgjende struktuer (allinich de maphierarchy wurdt werjûn, mar de essinsje is dúdlik)

TestMace - in krêftige IDE foar wurkjen mei API's

Dit makket it proses fan projektbeoardieling makliker.

Ymportearje fan Postman

Nei it lêzen fan al it boppesteande, sille guon brûkers wolle besykje (rjochts?) in nij produkt of (wat de hel is net in grapke!) Folslein brûke yn harren projekt. De migraasje kin lykwols stoppe wurde troch in grut tal ûntjouwings yn deselde Postman. Foar sokke gefallen stipet TestMace it ymportearjen fan kolleksjes fan Postman. Op it stuit wurde ymporten sûnder testen stipe, mar wy slúte net út dat se yn 'e takomst stypje.

Plannen

Ik hoopje dat in protte fan dyjingen dy't hawwe lêzen oant dit punt hawwe liked ús produkt. Dat is lykwols net alles! Wurk oan it produkt is yn folle gong en hjir binne wat funksjes dy't wy fan plan binne ynkoarten ta te foegjen.

Wolke syngronisaasje

Ien fan 'e meast frege funksjes. Op it stuit stelle wy foar om ferzjekontrôlesystemen te brûken foar syngronisaasje, wêrfoar wy it formaat freonliker meitsje foar dit soarte opslach. Dizze workflow is lykwols net foar elkenien geskikt, dus wy binne fan plan in syngronisaasjemeganisme ta te foegjen dat in protte bekend is fia ús servers.

CLI

Lykas hjirboppe neamd, kinne produkten op IDE-nivo net sûnder allerhanne yntegraasjes mei besteande applikaasjes of workflows dwaan. De CLI is krekt wat nedich is om tests skreaun yn TestMace te yntegrearjen yn it trochgeande yntegraasjeproses. Wurk oan 'e CLI is yn folle gong; iere ferzjes sille it projekt lansearje mei in ienfâldich konsolerapport. Yn 'e takomst planje wy rapportútfier ta te foegjen yn JUnit-formaat.

Plugin systeem

Nettsjinsteande alle krêft fan ús ark, is de set fan gefallen dy't oplossings nedich binne limitless. Der binne ommers taken dy't spesifyk binne foar in bepaald projekt. Dat is wêrom wy yn 'e takomst plannen om in SDK ta te foegjen foar it ûntwikkeljen fan plugins en elke ûntwikkelder sil funksjonaliteit kinne tafoegje nei har smaak.

It útwreidzjen fan it berik fan node typen

Dizze set knopen dekt net alle gefallen dy't nedich binne troch de brûker. Knooppunten dy't pland wurde tafoege te wurden:

  • Skriptknooppunt - konvertearret en pleatst gegevens mei js en de oerienkommende API. Mei it brûken fan dit soarte knooppunt kinne jo dingen dwaan lykas skripts foarôf oanfraach en nei oanfraach yn Postman.
  • GraphQL-knooppunt - graphql-stipe
  • Oanpaste assertion node - sil tastean jo te wreidzjen de set fan besteande asserties yn it projekt
    Fansels is dit gjin definitive list; it sil konstant bywurke wurde fanwegen ûnder oare jo feedback.

FAQ

Hoe binne jo oars as Postman?

  1. It konsept fan knopen, wêrtroch jo de funksjonaliteit fan it projekt hast einleaze kinne skaalje
  2. Human-lêsber projektformaat mei it bewarjen yn in bestânsysteem, wat it wurk mei ferzjekontrôlesystemen simplifies makket
  3. Mooglikheid om tests te meitsjen sûnder programmearring en mear avansearre js-stipe yn 'e testbewurker (autooanfolling, statyske analysator)
  4. Avansearre autofolling en markearring fan 'e hjoeddeistige wearde fan fariabelen

Is dit in iepen boarne produkt?

Nee, op it stuit binne de boarnen sletten, mar yn 'e takomst besjogge wy de mooglikheid om de boarnen te iepenjen

Wêr libje jo fan?)

Tegearre mei de fergese ferzje binne wy ​​fan plan in betelle ferzje fan it produkt frij te litten. It sil benammen befetsje dingen dy't fereaskje in tsjinner kant, Bygelyks, syngronisaasje.

konklúzje

Us projekt beweecht mei sprongen en grinzen nei in stabile frijlitting. It produkt kin lykwols al brûkt wurde, en de positive feedback fan ús iere brûkers is dêr bewiis fan. We sammelje aktyf feedback, want sûnder nauwe gearwurking mei de mienskip is it ûnmooglik om in goed ark te bouwen. Jo kinne ús hjir fine:

Offisjele webside

Telegram

slack

facebook

Issues tracker

Wy sjogge út nei jo winsken en suggestjes!

Boarne: www.habr.com

Add a comment