TestMace - jaudīgs IDE darbam ar API

Sveiki visiem! Å odien mēs vēlamies iepazÄ«stināt IT sabiedrÄ«bu ar mÅ«su produktu - IDE darbam ar API TestMace. VarbÅ«t daži no jums jau zina par mums no iepriekŔējie raksti. Tomēr nav veikta visaptveroÅ”a rÄ«ka pārskatÄ«Å”ana, tāpēc mēs novērÅ”am Å”o neveiksmÄ«go trÅ«kumu.

TestMace - jaudīgs IDE darbam ar API

Motivācija

Es vēlētos sākt ar to, kā mēs patiesÄ«bā nonācām Å”ajā dzÄ«vē un nolēmām izveidot savu rÄ«ku progresÄ«vam darbam ar API. Sāksim ar funkcionalitātes sarakstu, kurai vajadzētu bÅ«t produktam, par kuru, mÅ«suprāt, mēs varam teikt, ka tas ir ā€œIDE darbam ar APIā€:

  • Vaicājumu un skriptu (vaicājumu secÄ«bu) izveide un izpilde
  • Dažāda veida kontroldarbu rakstÄ«Å”ana
  • Testa paaudze
  • Darbs ar API aprakstiem, tostarp importÄ“Å”ana no tādiem formātiem kā Swagger, OpenAPI, WADL utt.
  • IzsmejoÅ”i lÅ«gumi
  • Labs atbalsts vienai vai vairākām valodām skriptu rakstÄ«Å”anai, tostarp integrācijai ar populārām bibliotēkām
  • uc

Sarakstu var paplaÅ”ināt, lai tas atbilstu jÅ«su gaumei. Turklāt ir svarÄ«gi izveidot ne tikai paÅ”u IDE, bet arÄ« noteiktu infrastruktÅ«ru, piemēram, mākoņa sinhronizāciju, komandrindas rÄ«kus, tieÅ”saistes uzraudzÄ«bas pakalpojumu utt. Galu galā pēdējo gadu tendences mums nosaka ne tikai lietojumprogrammas jaudÄ«go funkcionalitāti, bet arÄ« patÄ«kamo saskarni.

Kam vajadzÄ«gs Ŕāds rÄ«ks? AcÄ«mredzot visi tie, kas vismaz kaut kā ir saistÄ«ti ar API izstrādi un testÄ“Å”anu, ir izstrādātāji un testētāji =). Turklāt, ja pirmajiem bieži vien pietiek ar atseviŔķu vaicājumu un vienkārÅ”u skriptu izpildi, tad testētājiem tas ir viens no galvenajiem rÄ«kiem, kurā cita starpā jāiekļauj spēcÄ«gs testu rakstÄ«Å”anas mehānisms ar iespēju tos palaist CI.

Tātad, ievērojot Ŕīs vadlÄ«nijas, mēs sākām veidot savu produktu. PaskatÄ«simies, ko esam sasnieguÅ”i Å”ajā posmā.

Ātrs sākums

Sāksim ar pirmo iepazÄ«Å”anos ar aplikāciju. JÅ«s varat to lejupielādēt mÅ«su mājas lapā. Å obrÄ«d tiek atbalstÄ«tas visas 3 galvenās platformas - Windows, Linux, MacOS. Lejupielādējiet, instalējiet, palaidiet. Palaižot to pirmo reizi, var tikt parādÄ«ts Ŕāds logs:

TestMace - jaudīgs IDE darbam ar API

NoklikŔķiniet uz pluszīmes satura apgabala augŔdaļā, lai izveidotu savu pirmo pieprasījumu. Vaicājuma cilne izskatās Ŕādi:

TestMace - jaudīgs IDE darbam ar API

Apskatīsim to sīkāk. Pieprasījuma saskarne ir ļoti līdzīga populāro atpūtas klientu saskarnei, kas atvieglo migrāciju no līdzīgiem rīkiem. Iesniegsim pirmo pieprasījumu url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - jaudīgs IDE darbam ar API

Kopumā no pirmā acu uzmetiena atbildes panelis arī nesagādā nekādus pārsteigumus. Tomēr es vēlos vērst jūsu uzmanību uz dažiem punktiem:

  1. Atbildes pamatteksts ir attēlots koka formā, kas, pirmkārt, pievieno informācijas saturu un, otrkārt, ļauj pievienot dažas interesantas funkcijas, par kurām zemāk
  2. Ir cilne Apgalvojumi, kurā tiek parādīts konkrēta pieprasījuma testu saraksts

Kā redzat, mÅ«su rÄ«ku var izmantot kā ērtu atpÅ«tas klientu. Tomēr mēs nebÅ«tu Å”eit, ja tā iespējas bÅ«tu ierobežotas tikai ar pieprasÄ«jumu nosÅ«tÄ«Å”anu. Tālāk es izklāstÄ«Å”u TestMace pamatjēdzienus un funkcionalitāti.

Pamatjēdzieni un funkcijas

Mezgls

TestMace funkcionalitāte ir sadalÄ«ta dažāda veida mezglos. IepriekÅ” minētajā piemērā mēs demonstrējām RequestStep mezgla darbÄ«bu. Tomēr tagad lietojumprogrammā ir pieejami arÄ« Ŕādi mezglu veidi:

  • PieprasÄ«juma darbÄ«ba. Å is ir mezgls, caur kuru varat izveidot pieprasÄ«jumu. Tam var bÅ«t tikai viens apgalvojuma mezgls kā bērnelements.
  • Apgalvojums. Mezgls tiek izmantots testu rakstÄ«Å”anai. Var bÅ«t tikai RequestStep mezgla atvasinātais mezgls.
  • Mape. Ä»auj grupēt mapes un RequestStep mezglus sevÄ«.
  • Projekts. Å is ir saknes mezgls, kas tiek izveidots automātiski, kad projekts tiek izveidots. Pretējā gadÄ«jumā tas atkārto mapes mezgla funkcionalitāti.
  • Saite. Saite uz mapi vai RequestStep mezglu. Ä»auj atkārtoti izmantot vaicājumus un skriptus.
  • uc

Mezgli atrodas skrāpējumos (panelis apakŔējā kreisajā stÅ«rÄ«, tiek izmantots, lai ātri izveidotu ā€œvienreizējusā€ vaicājumus) un projektos (panelis augŔējā kreisajā stÅ«rÄ«), pie kuriem mēs pakavēsimies sÄ«kāk.

Projekts

Palaižot lietojumprogrammu, augŔējā kreisajā stÅ«rÄ« var pamanÄ«t vientuļu Project rindiņu. Å Ä« ir projekta koka sakne. Uzsākot projektu, tiek izveidots pagaidu projekts, kura ceļŔ ir atkarÄ«gs no jÅ«su operētājsistēmas. Jebkurā laikā jÅ«s varat pārvietot projektu uz jums ērtu vietu.

Projekta galvenais mērķis ir iespēja saglabāt izstrādnes failu sistēmā un tālāk sinhronizēt tās caur versiju kontroles sistēmām, palaist skriptus CI, pārskatīt izmaiņas utt.

Mainīgie

MainÄ«gie lielumi ir viens no galvenajiem lietojumprogrammas mehānismiem. Tiem no jums, kas strādā ar tādiem rÄ«kiem kā TestMace, iespējams, jau ir priekÅ”stats par to, par ko mēs runājam. Tātad mainÄ«gie ir veids, kā uzglabāt kopÄ«gus datus un sazināties starp mezgliem. Piemēram, analogi ir vides mainÄ«gie programmā Pastnieks vai Insomnia. Tomēr mēs gājām tālāk un attÄ«stÄ«jām tēmu. Programmā TestMace mainÄ«gos var iestatÄ«t mezgla lÄ«menÄ«. JebkurÅ”. Pastāv arÄ« mehānisms mainÄ«go lielumu pārmantoÅ”anai no priekÅ”tečiem un mainÄ«go lielumu pārklāŔanās pēcnācējiem. Turklāt ir vairāki iebÅ«vēti mainÄ«gie, iebÅ«vēto mainÄ«go nosaukumi sākas ar $. Å eit ir daži no tiem:

  • $prevStep ā€” saite uz iepriekŔējā mezgla mainÄ«gajiem
  • $nextStep ā€” saite uz nākamā mezgla mainÄ«gajiem
  • $parent - tas pats, bet tikai priekÅ”tecim
  • $response - atbilde no servera
  • $env - paÅ”reizējie vides mainÄ«gie
  • $dynamicVar - dinamiskie mainÄ«gie, kas izveidoti skripta vai vaicājuma izpildes laikā

$env - tie būtībā ir parastie Project node līmeņa mainīgie, tomēr vides mainīgo kopa mainās atkarībā no izvēlētās vides.

Mainīgajam var piekļūt, izmantojot ${variable_name}
Mainīgā vērtība var būt cits mainīgais vai pat visa izteiksme. Piemēram, url mainīgais var būt tāda izteiksme kā
http://${host}:${port}/${endpoint}.

AtseviŔķi ir vērts atzÄ«mēt iespēju skripta izpildes laikā pieŔķirt mainÄ«gos. Piemēram, bieži vien ir jāsaglabā autorizācijas dati (marÄ·ieris vai visa galvene), kas nāca no servera pēc veiksmÄ«gas pieteikÅ”anās. TestMace ļauj saglabāt Ŕādus datus viena senču dinamiskajos mainÄ«gajos. Lai izvairÄ«tos no sadursmēm ar jau esoÅ”ajiem ā€œstatiskajiemā€ mainÄ«gajiem, dinamiskie mainÄ«gie tiek ievietoti atseviŔķā objektā $dynamicVar.

Scenāriji

Izmantojot visas iepriekÅ” minētās funkcijas, varat palaist visus vaicājuma skriptus. Piemēram, entÄ«tijas izveide -> entÄ«tijas vaicāŔana -> entÄ«tijas dzÄ“Å”ana. Šādā gadÄ«jumā, piemēram, varat izmantot Mapes mezglu, lai grupētu vairākus RequestStep mezglus.

Automātiskā pabeigŔana un izteiksmes izcelŔana

Ērtam darbam ar mainÄ«gajiem (un ne tikai) ir nepiecieÅ”ama automātiskā pabeigÅ”ana. Un, protams, izceļot izteiksmes vērtÄ«bu, lai bÅ«tu vieglāk un ērtāk noskaidrot, ar ko konkrēts mainÄ«gais ir vienāds. Tas ir tieÅ”i tas gadÄ«jums, kad labāk vienu reizi redzēt, nekā simts reizes dzirdēt:

TestMace - jaudīgs IDE darbam ar API

Ir vērts atzÄ«mēt, ka automātiskā pabeigÅ”ana tiek ieviesta ne tikai mainÄ«gajiem, bet arÄ«, piemēram, galvenēm, noteiktu galveņu vērtÄ«bām (piemēram, satura tipa galvenes automātiskā pabeigÅ”ana), protokoliem un daudz ko citu. Saraksts tiek pastāvÄ«gi atjaunināts, lietojumprogrammai augot.

Atsaukt/pārtaisīt

Izmaiņu atsaukÅ”ana/pārtaisÄ«Å”ana ir ļoti ērta lieta, taču nez kāpēc ne visur tiek ieviesta (un rÄ«ki darbam ar API nav izņēmums). Bet mēs neesam no tiem!) Visa projekta garumā esam ieviesuÅ”i atsaukÅ”anu/pārtaisÄ«Å”anu, kas ļauj atsaukt ne tikai konkrēta mezgla rediģēŔanu, bet arÄ« tā izveidi, dzÄ“Å”anu, pārvietoÅ”anu utt. VissvarÄ«gākajām darbÄ«bām ir nepiecieÅ”ams apstiprinājums.

Testu veidoŔana

Apgalvojuma mezgls ir atbildÄ«gs par testu izveidi. Viena no galvenajām iezÄ«mēm ir iespēja izveidot testus bez programmÄ“Å”anas, izmantojot iebÅ«vētos redaktorus.

Apgalvojumu mezgls sastāv no apgalvojumu kopas. Katram apgalvojumam ir savs veids, Ŕobrīd ir vairāki apgalvojumu veidi

  1. SalÄ«dzināt vērtÄ«bas - vienkārÅ”i salÄ«dzina 2 vērtÄ«bas. Ir vairāki salÄ«dzināŔanas operatori: vienāds, nav vienāds, lielāks par, lielāks vai vienāds ar, mazāks par, mazāks vai vienāds ar.

  2. Satur vērtÄ«bu ā€” pārbauda apakÅ”virknes raÅ”anos virknē.

  3. XPath ā€” pārbauda, ā€‹ā€‹vai XML atlasÄ«tājs satur noteiktu vērtÄ«bu.

  4. JavaScript apgalvojums ir patvaļīgs JavaScript skripts, kas atgriež patiesu veiksmes gadījumā un nepatiesu, ja tas neizdodas.

Es atzÄ«mēju, ka tikai pēdējais no lietotāja prasa programmÄ“Å”anas prasmes, pārējie 3 apgalvojumi tiek veidoti, izmantojot grafisko interfeisu. Piemēram, Ŕādi izskatās dialoglodziņŔ vērtÄ«bu salÄ«dzināŔanas apgalvojuma izveidei:

TestMace - jaudīgs IDE darbam ar API

KukurÅ«za uz kÅ«kas ir ātra apgalvojumu radÄ«Å”ana no atbildēm, paskatieties uz to!

TestMace - jaudīgs IDE darbam ar API

Tomēr Ŕādiem apgalvojumiem ir acÄ«mredzami ierobežojumi, kuru pārvarÄ“Å”anai, iespējams, vēlēsities izmantot javascript apgalvojumu. Un Å”eit TestMace nodroÅ”ina arÄ« ērtu vidi ar automātisko pabeigÅ”anu, sintakses izcelÅ”anu un pat statisku analizatoru.

API apraksts

TestMace ļauj ne tikai izmantot API, bet arÄ« to dokumentēt. Turklāt paÅ”am aprakstam ir arÄ« hierarhiska struktÅ«ra un tas organiski iekļaujas pārējā projekta daļā. Turklāt paÅ”laik ir iespējams importēt API aprakstus no Swagger 2.0 / OpenAPI 3.0 formātiem. Pats apraksts ir ne tikai pilnvērtÄ«gs, bet ir cieÅ”i integrēts ar pārējo projektu, jo Ä«paÅ”i ir pieejama URL automātiskā pabeigÅ”ana, HTTP galvenes, vaicājuma parametri utt., un nākotnē mēs plānojam pievienot testus. par atbildes atbilstÄ«bu API aprakstam.

KoplietoŔanas mezgls

GadÄ«jums: vēlaties kopÄ«got problemātisku pieprasÄ«jumu vai pat visu skriptu ar kolēģi vai vienkārÅ”i pievienot to kļūdai. TestMace aptver arÄ« Å”o gadÄ«jumu: lietojumprogramma ļauj serializēt jebkuru mezglu un pat apakÅ”koku URL. Kopējiet un ielÄ«mējiet, un jÅ«s varat viegli pārsÅ«tÄ«t pieprasÄ«jumu uz citu iekārtu vai projektu.

Cilvēkam lasāms projektu uzglabāŔanas formāts

Å obrÄ«d katrs mezgls tiek glabāts atseviŔķā failā ar yml paplaÅ”inājumu (kā tas ir ar Assertion node) vai mapē ar mezgla nosaukumu un tajā esoÅ”o failu index.yml.
Piemēram, Ŕādi izskatās pieprasÄ«juma fails, ko izveidojām iepriekÅ” minētajā pārskatā:

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

Kā redzat, viss ir ļoti skaidrs. Ja vēlaties, Å”o formātu var viegli rediģēt manuāli.

Failu sistēmas mapju hierarhija pilnībā atkārto projekta mezglu hierarhiju. Piemēram, skripts, piemēram:

TestMace - jaudīgs IDE darbam ar API

Sakārto failu sistēmu ar Ŕādu struktÅ«ru (tiek rādÄ«ta tikai mapju hierarhija, bet bÅ«tÄ«ba ir skaidra)

TestMace - jaudīgs IDE darbam ar API

Tas atvieglo projekta izskatīŔanas procesu.

Importēt no Pastnieka

Izlasot visu iepriekÅ” minēto, daži lietotāji vēlēsies izmēģināt (vai ne?) jaunu produktu vai (kas gan nav joks!) pilnÄ«bā izmantot to savā projektā. Taču migrāciju var apturēt liela daļa notikumu tajā paŔā Pastniekā. Šādos gadÄ«jumos TestMace atbalsta kolekciju importÄ“Å”anu no Postman. Å obrÄ«d imports bez testiem tiek atbalstÄ«ts, taču neizslēdzam to atbalstÄ«Å”anu arÄ« turpmāk.

Plāni

Es ceru, ka daudziem no tiem, kas ir izlasÄ«juÅ”i lÄ«dz Å”im brÄ«dim, mÅ«su produkts ir iepaticies. Tomēr tas vēl nav viss! Darbs pie produkta rit pilnā sparā, un Å”eit ir dažas funkcijas, kuras plānojam drÄ«zumā pievienot.

Mākoņu sinhronizācija

Viena no pieprasÄ«tākajām funkcijām. Å obrÄ«d mēs piedāvājam sinhronizācijai izmantot versiju kontroles sistēmas, kurām mēs padarām formātu draudzÄ«gāku Ŕāda veida glabāŔanai. Tomēr Ŕī darbplÅ«sma nav piemērota visiem, tāpēc mēs plānojam pievienot sinhronizācijas mehānismu, kas pazÄ«stams daudziem, izmantojot mÅ«su serverus.

CLI

Kā minēts iepriekÅ”, IDE lÄ«meņa produkti nevar iztikt bez visa veida integrācijas ar esoÅ”ajām lietojumprogrammām vai darbplÅ«smām. CLI ir tieÅ”i tas, kas nepiecieÅ”ams, lai programmā TestMace rakstÄ«tos testus integrētu nepārtrauktā integrācijas procesā. Darbs pie CLI rit pilnā sparā; sākotnējās versijas uzsāks projektu ar vienkārÅ”u konsoles pārskatu. Nākotnē plānojam pievienot atskaites izvadi JUnit formātā.

Spraudņu sistēma

Neskatoties uz visu mÅ«su rÄ«ka jaudu, gadÄ«jumu kopums, kuriem nepiecieÅ”ami risinājumi, ir neierobežots. Galu galā ir uzdevumi, kas ir raksturÄ«gi konkrētam projektam. Tāpēc nākotnē mēs plānojam pievienot SDK spraudņu izstrādei un katrs izstrādātājs varēs pievienot funkcionalitāti pēc savas patikas.

Mezglu veidu klāsta paplaŔināŔana

Šī mezglu kopa neaptver visus lietotāja pieprasītos gadījumus. Mezgli, kurus plānots pievienot:

  • Skripta mezgls - pārveido un ievieto datus, izmantojot js un atbilstoÅ”o API. Izmantojot Ŕāda veida mezglus, pakalpojumā Postman varat veikt tādas darbÄ«bas kā pirmspieprasÄ«juma un pēcpieprasÄ«juma skripti.
  • GraphQL mezgls - graphql atbalsts
  • Pielāgots apgalvojumu mezgls ā€“ ļaus paplaÅ”ināt projektā esoÅ”o apgalvojumu kopu
    Protams, Å”is nav galÄ«gais saraksts; tas tiks pastāvÄ«gi atjaunināts, cita starpā, pateicoties jÅ«su atsauksmēm.

FAQ

Ar ko tu atŔķiries no Pastnieka?

  1. Mezglu jēdziens, kas ļauj gandrīz bezgalīgi mērogot projekta funkcionalitāti
  2. Cilvēkam lasāms projekta formāts ar saglabāŔanu failu sistēmā, kas atvieglo darbu, izmantojot versiju kontroles sistēmas
  3. Iespēja izveidot testus bez programmÄ“Å”anas un uzlabots js atbalsts testa redaktorā (automātiskā pabeigÅ”ana, statiskais analizators)
  4. Uzlabota automātiskā pabeigÅ”ana un mainÄ«go paÅ”reizējās vērtÄ«bas izcelÅ”ana

Vai Å”is ir atvērtā pirmkoda produkts?

Nē, Å”obrÄ«d avoti ir slēgti, bet nākotnē apsveram iespēju avotus atvērt

No kā tu dzīvo?)

Kopā ar bezmaksas versiju mēs plānojam izlaist produkta maksas versiju. Tas galvenokārt ietvers lietas, kurām nepiecieÅ”ama servera puse, piemēram, sinhronizācija.

Secinājums

MÅ«su projekts ar lēcieniem virzās uz stabilu izlaiÅ”anu. Tomēr produktu jau var izmantot, un pozitÄ«vās atsauksmes no mÅ«su agrÄ«najiem lietotājiem ir pierādÄ«jums tam. Mēs aktÄ«vi apkopojam atsauksmes, jo bez cieÅ”as sadarbÄ«bas ar sabiedrÄ«bu nav iespējams izveidot labu rÄ«ku. MÅ«s varat atrast Å”eit:

Oficiālā mājas lapa

Telegram

Ļengans

Facebook

Problēmu izsekotājs

Gaidīsim Jūsu vēlmes un ieteikumus!

Avots: www.habr.com

Pievieno komentāru