Sveiki visi! Å odien vÄlamies iepazÄ«stinÄt IT kopienu ar mÅ«su produktu ā IDE darbam ar API . VarbÅ«t daži no jums jau zina par mums no . TomÄr visaptveroÅ”a rÄ«ka apskata nav bijis, tÄdÄļ novÄrÅ”am Å”o neÄrtÄ«bu.

MotivÄcija
VÄlamies sÄkt ar to, kÄ mÄs nonÄcÄm pie Å”Ädas idejas un nolÄmÄm izveidot savu rÄ«ku, lai uzlabotu darbu ar API. SÄksim ar funkcionalitÄtes sarakstu, kas jÄiekļauj produktÄ, par kuru, mÅ«suprÄt, var teikt, ka tas ir Ā«IDE darbam ar APIĀ»:
- PieprasÄ«jumu un scenÄriju (pieprasÄ«jumu secÄ«bu) veidoÅ”ana un izpilde
- DažÄdu testu rakstīŔana
- Testu Ä£enerÄÅ”ana
- Darbs ar API aprakstiem, tostarp importÄÅ”ana no tÄdiem formÄtiem kÄ Swagger, OpenAPI, WADL utt.
- Pieprasījumu mokuŔana
- Laba atbalsta nodroÅ”inÄÅ”ana vienam vai vairÄkiem programÄÅ”anas valodÄm skriptu rakstīŔanai, tostarp integrÄcija ar populÄrÄm bibliotÄm
- utt.
Sarakstu var papildinÄt pÄc patikas. TurklÄt ir svarÄ«gi izveidot ne tikai paÅ”u IDE, bet arÄ« noteiktu infrastruktÅ«ru, piemÄram, mÄkoÅu sinhronizÄciju, komandrindas rÄ«kus, tieÅ”saistes uzraudzÄ«bas pakalpojumu utt. Galu galÄ pÄdÄjo gadu tendences prasa ne tikai spÄcÄ«gu lietotnes funkcionalitÄti, bet arÄ« patÄ«kamu interfeisu.
Kam Å”Äds rÄ«ks ir nepiecieÅ”ams? AcÄ«mredzami, visiem, kas kaut kÄ ir saistÄ«ti ar API izstrÄdi un testÄÅ”anu ā izstrÄdÄtÄjiem un testÄtÄjiem =). TurklÄt, ja pirmo grupai parasti pietiek ar vienkÄrÅ”u pieprasÄ«jumu un vienkÄrÅ”u scenÄriju izpildi, tad testÄtÄjiem tas ir viens no galvenajiem rÄ«kiem, kas papildus tam jÄiekļauj jaudÄ«gs testu rakstīŔanas mehÄnisms ar iespÄju tos izpildÄ«t CI.
TÄtad, vadoties pÄc Å”iem kritÄrijiem, mÄs sÄkÄm izstrÄdÄt savu produktu. ApskatÄ«sim, kas mums izdevies Å”ajÄ posmÄ.
ÄtrÄ sÄkÅ”ana
SÄksim ar pirmo iepazīŔanos ar lietotni. To var lejupielÄdÄt . Å obrÄ«d tiek atbalstÄ«tas visas 3 galvenÄs platformas ā Windows, Linux, MacOS. LejupielÄdÄjiet, instalÄjiet, palaižiet. PirmajÄ palaiÅ”anÄ jÅ«s varat redzÄt Å”Ädu logu:

NoklikŔķiniet uz pluss zÄ«mes augÅ”ÄjÄ satura laukÄ, lai izveidotu savu pirmo pieprasÄ«jumu. TabulÄ ar pieprasÄ«jumu izskatÄs Å”Ädi:

Pajiem pie tÄ sÄ«kÄk. PieprasÄ«jumu saskarne ļoti atgÄdina populÄro rest-klientu saskarni, kas atvieglo migrÄciju no lÄ«dzÄ«giem rÄ«kiem. Veiksim pirmo pieprasÄ«jumu uz URL

Pirmo reizi aplÅ«kojot, atbildes panelis arÄ« nerada nekÄdas pÄrsteigumus. TomÄr vÄlos vÄrst jÅ«su uzmanÄ«bu uz dažÄm iespÄjÄm:
- Atbildes saturs ir attÄlots koka formÄtÄ, kas, pirmkÄrt, pievieno informativitÄti un, otrkÄrt, ļauj pievienot dažas interesantas funkcijas, par kurÄm zemÄk.
- Ir cilne Assertions, kurÄ tiek parÄdÄ«ts testu saraksts Å”im pieprasÄ«jumam.
KÄ var redzÄt, mÅ«su rÄ«ku var izmantot kÄ Ärtu rest-klientu. TomÄr mÄs Å”eit nebÅ«tu sanÄkuÅ”i, ja tÄ iespÄjas bÅ«tu ierobežotas tikai ar pieprasÄ«jumu sÅ«tīŔanu. TÄlÄk es izklÄstīŔu pamata jÄdzienus un funkcionalitÄtes TestMace.
Pamati jÄdzieni un iespÄjas
Mezgls
TestMace funkcionalitÄte ir sadalÄ«ta dažÄdos mezglu tipos. VirsÄjÄ piemÄrÄ mÄs demonstrÄjÄm RequestStep mezgla darbÄ«bu. TomÄr Å”obrÄ«d lietotnÄ ir pieejami arÄ« Å”Ädi mezglu tipi:
- RequestStep. Tas ir mezgls, ar kuru var izveidot pieprasÄ«jumu. KÄ bÄrna elements tam var bÅ«t tikai viens Assertion mezgls.
- Assertion. Mezgls tiek izmantots testu rakstīŔanai. Var bÅ«t bÄrna mezgls tikai RequestStep mezglam.
- Folder. Atļauj grupÄt Folder un RequestStep mezglus savÄ iekÅ”ienÄ.
- Project. Tas ir saknes mezgls, kas automÄtiski tiek izveidots, kad tiek izveidots projekts. PÄrÄjÄ ziÅÄ tas atkÄrto Folder mezgla funkcionalitÄti.
- Link. Saite uz Folder vai RequestStep mezglu. Ä»auj pÄrtulkot pieprasÄ«jumus un scenÄrijus.
- utt.
Mezgli atrodas scratches (paneļa apakÅ”ÄjÄ kreisajÄ pusÄ, kas paredzÄts Ätrai āvienreizÄjuā pieprasÄ«jumu izveidei) un project (paneļa augÅ”ÄjÄ kreisajÄ pusÄ), uz kuru pievÄrsÄ«sim uzmanÄ«bu sÄ«kÄk.
Projekts
PalaidnÄ jÅ«s varÄjÄt pamanÄ«t vientuļu Project rindu augÅ”ÄjÄ kreisajÄ stÅ«rÄ«. Tas ir projekta koka sakne. PalaidnÄ izveidojas pagaidu projekts, kura ceļŔ atkarÄ«gs no jÅ«su operÄtÄjsistÄmas. JÅ«s jebkurÄ brÄ«dÄ« varat pÄrvietot projektu jums tÄ«kamos vietÄs.
Galvenais projekta mÄrÄ·is ir iespÄja saglabÄt darbus failu sistÄmÄ un turpmÄkai sinhronizÄcijai caur versiju kontroles sistÄmÄm, scenÄriju izpildei CI, izmaiÅu pÄrskatīŔanai utt.
Mainīgie
MainÄ«gÄs ir viens no galvenajiem lietojumprogrammas mehÄnismiem. Tie, kas strÄdÄ ar rÄ«kiem, kas lÄ«dzÄ«gi TestMace, iespÄjams, jau ir sapratuÅ”i, par ko bÅ«s runa. TÄtad, mainÄ«gÄs ir veids, kÄ saglabÄt kopÄ«gus datus un sazinÄties starp mezgliem. Analogs, piemÄram, ir vides mainÄ«gie Postman vai Insomnia. TomÄr mÄs esam gÄjuÅ”i tÄlÄk un attÄ«stÄ«juÅ”i tÄmu. TestMace mainÄ«gÄs var iestatÄ«t mezgla lÄ«menÄ«. JebkurÄ. PastÄv arÄ« mehÄnisms, kas ļauj mantojot mainÄ«gos no priekÅ”teÄiem un pÄrklÄjot mainÄ«gos pÄcnÄcÄjÄ. TurklÄt pastÄv virkne iebÅ«vÄto mainÄ«go, kuru 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 attiecÄ«bÄ uz priekÅ”teci$responseā atbilde no servera$envā paÅ”reizÄjie vides mainÄ«gie$dynamicVarā dinamiskie mainÄ«gie, kas tiek radÄ«ti izpildes laikÄ vai pieprasÄ«jumÄ
$env ā bÅ«tÄ«bÄ tie ir parasti projekta lÄ«meÅa mainÄ«gie, tomÄr vides mainÄ«go kopums mainÄs atkarÄ«bÄ no izvÄlÄtÄs vides.
Piekļuve mainīgajam notiek caur ${variable_name}
KÄ mainÄ«gÄ vÄrtÄ«ba var bÅ«t cita mainÄ«gÄ vÄrtÄ«ba vai pat vesels izteikums. PiemÄram, kÄ mainÄ«gÄ URL var bÅ«t izteikums Å”ÄdÄ veidÄ
http://${host}:${port}/${endpoint}.
AtseviŔķi jÄatzÄ«mÄ iespÄja pieŔķirt mainÄ«gos skripta izpildes laikÄ. PiemÄram, bieži rodas nepiecieÅ”amÄ«ba saglabÄt autentifikÄcijas datus (tokenu vai visu galveni), kas nÄk no servera pÄc veiksmÄ«gas pieteikÅ”anÄs. TestMace ļauj saglabÄt Å”Ädus datus dinamiskajos mainÄ«gajos kÄdÄ no priekÅ”teÄiem. Lai novÄrstu konfliktiem ar jau esoÅ”ajiem āstatiskajiemā mainÄ«gajiem, dinamiskie mainÄ«gie ir izvietoti atseviÅ”Ä·Ä objektÄ. $dynamicVar.
ScenÄriji
Izmantojot visas iepriekÅ” minÄtÄs iespÄjas, jÅ«s varat izpildÄ«t veselas pieprasÄ«jumu scenÄrijus. PiemÄram, radīŔanas entitÄte -> pieprasÄ«jums pÄc entitÄtes -> entitÄtes dzÄÅ”ana. Å ajÄ gadÄ«jumÄ jÅ«s, piemÄram, varat izmantot Folder mezglu, lai grupÄtu vairÄkus RequestStep mezglus.
AutomÄtiskÄ pabeigÅ”ana un izteikuma vÄrtÄ«bas izgaismoÅ”ana
Lai Ärti strÄdÄtu ar mainÄ«gajiem (un ne tikai), ir nepiecieÅ”ama automÄtiskÄ papildinÄÅ”ana. Protams, arÄ« izteikumu vÄrtÄ«bu izcelÅ”ana, lai vieglÄk un ÄrtÄk saprastu, cik liela ir konkrÄtÄ mainÄ«gÄ vÄrtÄ«ba. Å eit ir klasisks gadÄ«jums, kad labÄk vienu reizi redzÄt, nekÄ simtreiz dzirdÄt:

JÄatzÄ«mÄ, ka automÄtiskÄ papildinÄÅ”ana ir ieviesta ne tikai mainÄ«gajiem, bet arÄ«, piemÄram, virsrakstiem, zinÄmu virsrakstu vÄrtÄ«bÄm (piemÄram, automÄtiskÄ papildinÄÅ”ana Content-Type virsrakstam), protokoliem un daudzÄm citÄm lietÄm. Saraksts tiek pastÄvÄ«gi papildinÄts ar programmas izaugsmi.
Atcelt/izdarÄ«t atkÄrtoti
AtcelÅ”ana/atkÄrtoÅ”ana ir ļoti Ärta funkcija, tomÄr, kaut kÄpÄc, tÄ nav pieejama visur (un rÄ«ki darbam ar API nav izÅÄmums). Bet mÄs neesam no tiem!) Atcelt/atkÄrtot ir ieviests mÅ«su projekta ietvaros, ļaujot atcelt ne tikai konkrÄtas mezgla rediÄ£ÄÅ”anu, bet arÄ« tÄ izveidi, dzÄÅ”anu, pÄrvietoÅ”anu utt. ViskritiskÄkÄs operÄcijas prasa apstiprinÄjumu.
Testu izveide
Testu izveidi nodroÅ”ina Assertion mezgls. Viens no galvenajiem aspektiem ir iespÄja izveidot testus bez programÄÅ”anas, izmantojot iebÅ«vÄtos redaktorus.
Assertion mezgls sastÄv no vairÄkiem assertion (apgalvojumu). Katram assertion ir savs veids, Å”obrÄ«d eksistÄ vairÄki assertion veidi.
SalÄ«dzinÄt vÄrtÄ«bas ā vienkÄrÅ”i salÄ«dzina 2 vÄrtÄ«bas. Ir vairÄki salÄ«dzinÄÅ”anas operatori: "vienÄds", "nevienÄds", "lielÄks", "lielÄks vai vienÄds", "mazÄks", "mazÄks vai vienÄds".
Satur vÄrtÄ«bu ā pÄrbauda, vai apakÅ”virkne atrodas virknes sastÄvÄ.
XPath ā pÄrbauda, vai pÄc selektora XML atrodas noteikta vÄrtÄ«ba.
JavaScript assertion ā patvaļīgs skripts JavaScript valodÄ, kas atgriež true, ja viss ir izdevies, un false, ja neizdodas.
VÄrÅ”os pie jums, ka tikai pÄdÄjais prasa no lietotÄja programÄÅ”anas prasmes, bet pÄrÄjie 3 assertion tiek izveidoti, izmantojot grafisko interfeisu. LÅ«k, piemÄram, kÄ izskatÄs salÄ«dzinÄÅ”anas vÄrtÄ«bu assertion izveides dialogs:

ÄŖstÄ Ä·irsÄ«tis uz kÅ«kas ir Ätra assertion izveide no atbildes, paskatieties uz to!

TomÄr Å”Ädiem assertion ir acÄ«mredzamas ierobežojumi, saskaroties ar kuriem jÅ«s varat izmantot javascript assertion. Un Å”eit TestMace arÄ« nodroÅ”ina Ärtu vidi ar automÄtisko papildinÄÅ”anu, sintakses izcelÅ”anu un pat statisko analÄ«zi.
API apraksts
TestMace ļauj ne tikai izmantot API, bet arÄ« to dokumentÄt. TurklÄt paÅ”a apraksta struktÅ«ra ir hierarhiska un dabiski iekļaujas pÄrÄjÄ projektÄ. VÄl vairÄk, Å”obrÄ«d ir iespÄja importÄt API aprakstu no Swagger 2.0 / OpenAPI 3.0 formÄtiem. Apraksts nav tikai statisks, bet cieÅ”i integrÄjas ar pÄrÄjo projektu, piemÄram, ir pieejama URL, HTTP galvenes, query parametru un citu automÄtiskÄ pabeigÅ”ana, un nÄkotnÄ mÄs plÄnojam pievienot testus atbilstoÅ”i API aprakstam.
Zaru nodoŔana
GadÄ«jums: jums varÄtu vÄlÄties padalÄ«ties ar problemÄtisku pieprasÄ«jumu vai pat veselu scenÄriju ar kolÄÄ£i vai vienkÄrÅ”i pievienot to kļūdas ziÅojumam. TestMace segs arÄ« Å”o gadÄ«jumu: lietotne ļauj serializÄt jebkuru mezglu un pat apakÅ”kokus URL formÄtÄ. KopÄjiet un ielÄ«mÄjiet, un jÅ«s jau viegli esat pÄrvietojusi pieprasÄ«jumu uz citu maŔīnu vai projektu.
CilvÄkam saprotams projekta glabÄÅ”anas formÄts
Å obrÄ«d katrs mezgls tiek glabÄts atseviÅ”Ä·Ä failÄ ar paplaÅ”inÄjumu yml (kÄ tas ir gadÄ«jumÄ ar Assertion mezglu), vai arÄ« mapÄ ar mezgla nosaukumu un failu index.yml tajÄ.
LÅ«k, kÄ izskatÄs failar ļaujam ar pieprasÄ«jumu, kuru mÄs iepriekÅ” apskatÄ«jÄm:
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 1KÄ redzat, viss ir skaidrs. Ja vÄlas, Å”Ädu formÄtu ir pavisam Ärti rediÄ£Ät arÄ« manuÄli.
Mapju hierarhija failu sistÄmÄ pilnÄ«bÄ atkÄrto mezglu hierarhiju projektÄ. PiemÄram, scenÄrijs ar sekojoÅ”o veidu:

MapÄ failu sistÄmÄ tas tiek attiecÄ«gi struktÅ«rizÄts (parÄdÄ«ta tikai mapju hierarhija, bet jÄga ir skaidra)

Kas atvieglo projekta pÄrskata procesu.
ImportÄÅ”ana no Postman
Izlasot visu iepriekÅ” minÄto, daži lietotÄji var vÄlÄties izmÄÄ£inÄt (vai ne?) jauno produktu vai (nu kÄpÄc gan nÄ!) pilnÄ«bÄ to izmantot savÄ projektÄ. TomÄr migrÄciju var apturÄt liels skaits izstrÄdÅu tajÄ paÅ”Ä Postman. Å ÄdÄm situÄcijÄm TestMace atbalsta kolekciju importÄÅ”anu no Postman. Å obrÄ«d tiek atbalstÄ«ts imports bez testiem, tomÄr nÄkotnÄ mÄs neizslÄdzam arÄ« to atbalstu.
PlÄni
Ceru, da daudzu no tiem, kas izlasÄ«ja lÄ«dz Å”im brÄ«dim, patika mÅ«su produkts. TomÄr tas vÄl nav viss! Darbs pie produkta notiek pilnÄ sparÄ, un lÅ«k, dažas iezÄ«mes, kuras mÄs plÄnojam pievienot drÄ«zumÄ.
MÄkoÅa sinhronizÄcija
Viens no visvairÄk pieprasÄ«tajiem funkcijÄm. Å obrÄ«d mÄs piedÄvÄjam izmantot versiju kontroli kÄ sinhronizÄcijas risinÄjumu, tÄpÄc mÄs veidojam formÄtu draudzÄ«gÄku Å”Äda veida glabÄÅ”anai. TomÄr ne visiem Å”Äds darba plÅ«smas modelis ir piemÄrots, tÄpÄc plÄnots pievienot ierasto sinhronizÄcijas mehÄnismu caur mÅ«su serveriem.
flags -k integrÄcijai ar
KÄ jau minÄts iepriekÅ”, IDE lÄ«meÅa produkti neiztiek bez dažÄdÄm integrÄcijÄm ar jau esoÅ”Äm lietojumprogrammÄm vai darba plÅ«smÄm. CLI ir tieÅ”i nepiecieÅ”ams, lai integrÄtu testus, kas rakstÄ«ti TestMace, turpmÄkajÄ nepÄrtrauktÄs integrÄcijas procesÄ. Darbs pie CLI notiek pilnÄ sparÄ, agrÄ«nÄs versijÄs tiks pieejams projekts ar vienkÄrÅ”u konsoles reportu. NÄkotnÄ plÄnots pievienot ziÅojuma izvadi JUnit formÄtÄ.
PaplaÅ”inÄmais sistÄma
Neskatoties uz mÅ«su instrumenta jaudu, gadÄ«jumu komplekts, kas prasa risinÄjumus, ir neierobežots. Galu galÄ ir uzdevumi, kas ir specifiski noteiktam projektam. TieÅ”i tÄpÄc mÄs plÄnojam pievienot SDK pluginu izstrÄdei, ļaujot katram izstrÄdÄtÄjam pievienot funkcionalitÄti pÄc saviem ieskatiem.
UzskaitÄmo mezglu veidu paplaÅ”inÄÅ”ana
Å is mezglu komplekts nepÄrklÄj visus gadÄ«jumus, kas ir nepiecieÅ”ami lietotÄjam. Mezgli, kurus plÄnots pievienot:
- Script mezgls ā pÄrvÄrÅ” un izvieto datus, izmantojot js un atbilstoÅ”o API. Izmantojot Å”Äda veida mezglu, var realizÄt lietas, piemÄram, pre-request un post-request skriptus Postman.
- GraphQL mezgls ā GraphQL atbalsts
- Custom assertion mezgls ā ļaus paplaÅ”inÄt esoÅ”o assertion komplektu projektÄ.
Dabiski, tas nav galÄ«gais saraksts, tas pastÄvÄ«gi tiks papildinÄts arÄ«, Åemot vÄrÄ jÅ«su atsauksmes.
BUJ
KÄ jÅ«s atŔķiraties no Postman?
- Mezglu koncepcija, kas ļauj praktiski bezgalÄ«gi paplaÅ”inÄt projekta funkcionalitÄti
- CilvÄka lasÄmais projekta formÄts ar tÄ saglabÄÅ”anu failu sistÄmÄ, kas vienkÄrÅ”o darbu ar versiju kontroles sistÄmÄm.
- IespÄja veidot testus bez programmÄÅ”anas un uzlabota js atbalsta nodroÅ”inÄÅ”ana testu redaktorÄ (automÄtiska pabeigÅ”ana, statisks analizators)
- IevÄrojama automÄtiskÄ pabeigÅ”ana un paÅ”reizÄjo mainÄ«go vÄrtÄ«bu izgaismoÅ”ana
Vai tas ir open-source produkts?
NÄ, paÅ”laik avota kodi ir slÄgti, taÄu nÄkotnÄ mÄs apsveram iespÄju tos atvÄrt.
Uz kÄ jÅ«s dzÄ«vojat?)
KopÄ ar bezmaksas versiju mÄs plÄnojam izlaist maksas produkta versiju. TajÄ vispirms iekļausim funkcijas, kas prasa servera pusi, piemÄram, sinhronizÄciju.
SecinÄjums
MÅ«su projekts strauji tuvojas stabilai versijai. TomÄr jau tagad produktu var izmantot, un mÅ«su agrÄ«no lietotÄju pozitÄ«vÄs atsauksmes to apstiprina. MÄs aktÄ«vi vÄkam atsauksmes, jo bez cieÅ”as sadarbÄ«bas ar kopienu nav iespÄjams izstrÄdÄt labu rÄ«ku. MÅ«s var atrast Å”eit:
Gaida jÅ«su vÄlmes un priekÅ”likumus ar nepacietÄ«bu!
Avots: habr.com
