TestMace — jaudÄ«ga IDE darbam ar API

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

TestMace — jaudÄ«ga IDE darbam ar API

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 mÅ«su vietnē. Å 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:

TestMace — jaudÄ«ga IDE darbam ar API

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

TestMace — jaudÄ«ga IDE darbam ar API

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 https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace — jaudÄ«ga IDE darbam ar API

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:

  1. 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.
  2. 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:

TestMace — jaudÄ«ga IDE darbam ar API

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.

  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", "nevienāds", "lielāks", "lielāks vai vienāds", "mazāks", "mazāks vai vienāds".

  2. Satur vērtÄ«bu — pārbauda, vai apakÅ”virkne atrodas virknes sastāvā.

  3. XPath — pārbauda, vai pēc selektora XML atrodas noteikta vērtÄ«ba.

  4. 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:

TestMace — jaudÄ«ga IDE darbam ar API

Īstā ķirsītis uz kūkas ir ātra assertion izveide no atbildes, paskatieties uz to!

TestMace — jaudÄ«ga IDE darbam ar API

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 1

Kā 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:

TestMace — jaudÄ«ga IDE darbam ar API

Mapē failu sistēmā tas tiek attiecīgi struktūrizēts (parādīta tikai mapju hierarhija, bet jēga ir skaidra)

TestMace — jaudÄ«ga IDE darbam ar API

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?

  1. Mezglu koncepcija, kas ļauj praktiski bezgalīgi paplaŔināt projekta funkcionalitāti
  2. 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.
  3. Iespēja veidot testus bez programmēŔanas un uzlabota js atbalsta nodroÅ”ināŔana testu redaktorā (automātiska pabeigÅ”ana, statisks analizators)
  4. 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:

Oficiālā mājas lapa

Telegram

Slack

Facebook

Issues-tracker

Gaida jÅ«su vēlmes un priekÅ”likumus ar nepacietÄ«bu!

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster