TestMace - moćno IDE za rad s API-jima

Bok svima! Danas želimo informatičkoj javnosti predstaviti naš proizvod - IDE za rad s API-jima TestMace. Možda neki od vas već znaju za nas iz prethodni članci. Međutim, nije napravljena sveobuhvatna recenzija alata, pa se bavimo ovim nesretnim nedostatkom.

TestMace - moćno IDE za rad s API-jima

Motivacija

Htio bih započeti s tim kako smo zapravo došli u ovaj život i odlučili stvoriti vlastiti alat za napredni rad s API-jem. Počnimo s popisom funkcionalnosti koje bi proizvod trebao imati, a za koji, po našem mišljenju, možemo reći da je “IDE za rad s API-jima”:

  • Kreiranje i izvršavanje upita i skripti (sekvenci upita)
  • Pisanje raznih vrsta testova
  • Generacija testa
  • Rad s opisima API-ja, uključujući uvoz iz formata kao što su Swagger, OpenAPI, WADL itd.
  • Podrugljivi zahtjevi
  • Dobra podrška za jedan ili više jezika za pisanje skripti, uključujući integraciju s popularnim bibliotekama
  • itd.

Popis se može proširiti prema vašem ukusu. Štoviše, važno je stvoriti ne samo sam IDE, već i određenu infrastrukturu, kao što je sinkronizacija u oblaku, alati naredbenog retka, online usluga nadzora itd. Na kraju, trendovi posljednjih godina diktiraju nam ne samo moćnu funkcionalnost aplikacije, već i njezino ugodno sučelje.

Kome treba takav alat? Očito, svi oni koji su barem nekako povezani s razvojem i testiranjem API-ja su programeri i testeri =). Štoviše, ako je za prve često dovoljno izvršiti pojedinačne upite i jednostavne skripte, onda je za testere ovo jedan od glavnih alata, koji bi, između ostalog, trebao uključivati ​​moćan mehanizam za pisanje testova s ​​mogućnošću njihovog pokretanja u CI.

Dakle, slijedeći ove smjernice, počeli smo stvarati naš proizvod. Pogledajmo što smo postigli u ovoj fazi.

Brzi početak

Započnimo s prvim upoznavanjem s aplikacijom. Možete ga preuzeti na našoj web stranici. Trenutno su podržane sve 3 glavne platforme - Windows, Linux, MacOS. Preuzmite, instalirajte, pokrenite. Kada ga pokrenete prvi put, možete vidjeti sljedeći prozor:

TestMace - moćno IDE za rad s API-jima

Kliknite na znak plus na vrhu područja sadržaja kako biste izradili svoj prvi zahtjev. Kartica upita izgleda ovako:

TestMace - moćno IDE za rad s API-jima

Pogledajmo to detaljnije. Sučelje zahtjeva vrlo je slično sučelju popularnih rest klijenata, što olakšava migraciju sa sličnih alata. Učinimo prvi zahtjev na url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - moćno IDE za rad s API-jima

Općenito, na prvi pogled, ploča s odgovorima također ne iznenađuje. Međutim, želio bih vam skrenuti pozornost na neke točke:

  1. Tijelo odgovora predstavljeno je u obliku stabla, koje prvo dodaje informacijski sadržaj, a drugo vam omogućuje dodavanje nekih zanimljivih značajki o kojima je u nastavku
  2. Postoji kartica Tvrdnje, koja prikazuje popis testova za određeni zahtjev

Kao što vidite, naš se alat može koristiti kao prikladan klijent za odmor. Međutim, ne bismo bili ovdje da su njegove mogućnosti ograničene samo na slanje zahtjeva. Zatim ću prikazati osnovne koncepte i funkcionalnost TestMacea.

Osnovni pojmovi i značajke

čvor

TestMace funkcionalnost podijeljena je na različite vrste čvorova. U gornjem primjeru demonstrirali smo rad čvora RequestStep. Međutim, sljedeće vrste čvorova sada su također dostupne u aplikaciji:

  • RequestStep. Ovo je čvor preko kojeg možete kreirati zahtjev. Može imati samo jedan Assertion čvor kao podređeni element.
  • Tvrdnja. Čvor se koristi za pisanje testova. Može biti samo podređeni čvor čvora RequestStep.
  • Mapa. Omogućuje grupiranje čvorova Folder i RequestStep unutar njih samih.
  • Projekt. Ovo je korijenski čvor, kreiran automatski kada se kreira projekt. Inače, ponavlja funkcionalnost čvora Folder.
  • Veza. Veza na čvor Folder ili RequestStep. Omogućuje ponovnu upotrebu upita i skripti.
  • itd.

Čvorovi se nalaze u ogrebotinama (ploča dolje lijevo, služi za brzo kreiranje jednokratnih upita) iu projektima (ploča gore lijevo), na kojima ćemo se detaljnije zadržati.

Projekt

Kada pokrenete aplikaciju, mogli biste primijetiti usamljenu liniju Project u gornjem lijevom kutu. Ovo je korijen stabla projekta. Kada pokrenete projekt, kreira se privremeni projekt čiji put do njega ovisi o vašem operativnom sustavu. U bilo kojem trenutku možete premjestiti projekt na mjesto koje vam odgovara.

Glavna svrha projekta je mogućnost spremanja razvoja u datotečni sustav i njihova daljnja sinkronizacija kroz sustave kontrole verzija, pokretanje skripti u CI-ju, pregled promjena itd.

varijable

Varijable su jedan od ključnih mehanizama aplikacije. Oni od vas koji rade s alatima kao što je TestMace možda već imaju ideju o čemu pričamo. Dakle, varijable su način za pohranu zajedničkih podataka i komunikaciju između čvorova. Analog su, na primjer, varijable okruženja u Postmanu ili Insomniji. Ipak, otišli smo dalje i razvili temu. U TestMaceu, varijable se mogu postaviti na razini čvora. Bilo koje. Također postoji mehanizam za nasljeđivanje varijabli od predaka i preklapanje varijabli u potomcima. Osim toga postoji niz ugrađenih varijabli, nazivi ugrađenih varijabli počinju s $. Evo nekih od njih:

  • $prevStep — veza na varijable prethodnog čvora
  • $nextStep — veza na varijable sljedećeg čvora
  • $parent - ista stvar, ali samo za pretka
  • $response - odgovor poslužitelja
  • $env - trenutne varijable okoline
  • $dynamicVar - dinamičke varijable stvorene tijekom izvršavanja skripte ili upita

$env - ovo su u suštini obične varijable na razini projektnog čvora, međutim, skup varijabli okruženja mijenja se ovisno o odabranom okruženju.

Varijabli se pristupa putem ${variable_name}
Vrijednost varijable može biti druga varijabla ili čak cijeli izraz. Na primjer, varijabla url može biti izraz poput
http://${host}:${port}/${endpoint}.

Zasebno je vrijedno spomenuti mogućnost dodjele varijabli tijekom izvršavanja skripte. Na primjer, često je potrebno spremiti autorizacijske podatke (token ili cijelo zaglavlje) koji su došli s poslužitelja nakon uspješne prijave. TestMace vam omogućuje spremanje takvih podataka u dinamičke varijable jednog od predaka. Kako bi se izbjegle kolizije s već postojećim "statičkim" varijablama, dinamičke varijable su smještene u poseban objekt $dynamicVar.

scenariji

Koristeći sve gore navedene značajke, možete pokrenuti cijele skripte upita. Na primjer, stvaranje entiteta -> postavljanje upita entitetu -> brisanje entiteta. U ovom slučaju, na primjer, možete koristiti čvor Folder za grupiranje nekoliko čvorova RequestStep.

Automatsko dovršavanje i isticanje izraza

Za prikladan rad s varijablama (i ne samo) potrebno je automatsko dovršavanje. I naravno, isticanje vrijednosti izraza kako bi bilo lakše i praktičnije razjasniti čemu je određena varijabla jednaka. Upravo je to slučaj kada je bolje vidjeti jednom nego čuti sto puta:

TestMace - moćno IDE za rad s API-jima

Vrijedno je napomenuti da se automatsko dovršavanje implementira ne samo za varijable, već i, na primjer, za zaglavlja, vrijednosti određenih zaglavlja (na primjer, automatsko dovršavanje za zaglavlje Content-Type), protokole i još mnogo toga. Popis se stalno ažurira kako aplikacija raste.

Poništiti, povratiti

Poništavanje/ponovljenje promjena vrlo je zgodna stvar, ali iz nekog razloga nije implementirana svugdje (i alati za rad s API-jima nisu iznimka). Ali mi nismo jedni od tih!) Implementirali smo poništavanje/ponavljanje kroz cijeli projekt, što vam omogućuje da poništite ne samo uređivanje određenog čvora, već i njegovo stvaranje, brisanje, premještanje itd. Najkritičnije operacije zahtijevaju potvrdu.

Izrada testova

Čvor Assertion je odgovoran za kreiranje testova. Jedna od glavnih značajki je mogućnost izrade testova bez programiranja, pomoću ugrađenih uređivača.

Čvor tvrdnje sastoji se od skupa tvrdnji. Svaka tvrdnja ima svoju vrstu, trenutno postoji nekoliko vrsta tvrdnji

  1. Usporedite vrijednosti - jednostavno uspoređuje 2 vrijednosti. Postoji nekoliko operatora usporedbe: jednako, nije jednako, veće od, veće od ili jednako, manje od, manje od ili jednako.

  2. Sadrži vrijednost - provjerava pojavljivanje podniza u nizu.

  3. XPath - provjerava sadrži li selektor u XML-u određenu vrijednost.

  4. JavaScript tvrdnja je proizvoljna javascript skripta koja vraća true u slučaju uspjeha i false u slučaju neuspjeha.

Napominjem da samo posljednja od korisnika zahtijeva vještine programiranja, ostale 3 tvrdnje izrađuju se pomoću grafičkog sučelja. Evo, na primjer, kako izgleda dijalog za stvaranje tvrdnje o usporedbi vrijednosti:

TestMace - moćno IDE za rad s API-jima

Šlag na torti je brzo stvaranje tvrdnji iz odgovora, pogledajte ga samo!

TestMace - moćno IDE za rad s API-jima

Međutim, takve tvrdnje imaju očita ograničenja, za čije prevladavanje možda želite koristiti javascript tvrdnje. A ovdje TestMace također pruža ugodno okruženje s automatskim dovršavanjem, isticanjem sintakse, pa čak i statičkim analizatorom.

Opis API-ja

TestMace vam omogućuje ne samo korištenje API-ja, već i njegovo dokumentiranje. Štoviše, sam opis također ima hijerarhijsku strukturu i organski se uklapa u ostatak projekta. Osim toga, trenutno je moguće uvesti API opise iz Swagger 2.0 / OpenAPI 3.0 formata. Sam opis ne leži samo kao mrtva težina, već je usko integriran s ostatkom projekta, posebice dostupno je automatsko dovršavanje URL-ova, HTTP zaglavlja, parametara upita itd., a u budućnosti planiramo dodati testove za usklađenost odgovora s API opisom.

Čvor dijeljenja

Slučaj: želite podijeliti problematičan zahtjev ili čak cijelu skriptu s kolegom ili je jednostavno priložiti bugu. TestMace pokriva i ovaj slučaj: aplikacija vam omogućuje serijalizaciju bilo kojeg čvora, pa čak i podstabla u URL-u. Kopirajte-zalijepite i jednostavno možete prenijeti zahtjev na drugo računalo ili projekt.

Čovjeku čitljiv format za pohranu projekta

Trenutačno je svaki čvor pohranjen u zasebnoj datoteci s ekstenzijom yml (kao što je slučaj s čvorom Assertion) ili u mapi s nazivom čvora i datotekom index.yml u njoj.
Na primjer, ovako izgleda datoteka zahtjeva koju smo napravili u gornjoj recenziji:

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

Kao što vidite, sve je vrlo jasno. Ako želite, ovaj se format može lako urediti ručno.

Hijerarhija mapa u datotečnom sustavu u potpunosti ponavlja hijerarhiju čvorova u projektu. Na primjer, skripta poput:

TestMace - moćno IDE za rad s API-jima

Preslikava datotečni sustav u sljedeću strukturu (prikazuje se samo hijerarhija mape, ali bit je jasna)

TestMace - moćno IDE za rad s API-jima

To olakšava proces pregleda projekta.

Uvoz iz poštara

Nakon što pročitaju sve gore navedeno, neki će korisnici poželjeti isprobati (zar ne?) novi proizvod ili ga (što, dovraga, nije šala!) u potpunosti iskoristiti u svom projektu. Međutim, migracija se može zaustaviti velikim brojem razvoja u istom Postmanu. Za takve slučajeve, TestMace podržava uvoz zbirki iz Postmana. Trenutačno je podržan uvoz bez testova, ali ne isključujemo mogućnost podrške u budućnosti.

Planovi

Nadam se da se mnogima od onih koji su do sada čitali svidio naš proizvod. Međutim, to nije sve! Rad na proizvodu je u punom jeku i evo nekih značajki koje planiramo dodati uskoro.

Sinkronizacija u oblaku

Jedna od najtraženijih značajki. Trenutačno predlažemo korištenje sustava za kontrolu verzija za sinkronizaciju, za koji format činimo prilagođenijim ovoj vrsti pohrane. Međutim, ovaj tijek rada nije prikladan za svakoga, pa planiramo dodati mehanizam sinkronizacije koji je mnogima poznat putem naših poslužitelja.

CLI

Kao što je gore spomenuto, proizvodi na razini IDE ne mogu bez svih vrsta integracija s postojećim aplikacijama ili tijekovima rada. CLI je upravo ono što je potrebno za integraciju testova napisanih u TestMaceu u kontinuirani proces integracije. Rad na CLI-ju je u punom jeku; rane verzije će pokrenuti projekt s jednostavnim izvješćem konzole. U budućnosti planiramo dodati izlaz izvješća u JUnit formatu.

Sustav dodataka

Unatoč svoj snazi ​​našeg alata, skup slučajeva koji zahtijevaju rješenja je neograničen. Uostalom, postoje zadaci koji su specifični za određeni projekt. Zato u budućnosti planiramo dodati SDK za razvoj dodataka i svaki programer će moći dodati funkcionalnost po svojoj želji.

Širenje raspona vrsta čvorova

Ovaj skup čvorova ne pokriva sve slučajeve koje korisnik zahtijeva. Čvorovi koji se planiraju dodati:

  • Čvor skripte - pretvara i postavlja podatke pomoću js-a i odgovarajućeg API-ja. Koristeći ovu vrstu čvora, možete raditi stvari kao što su skripte prije zahtjeva i nakon zahtjeva u Postmanu.
  • GraphQL čvor - podrška za graphql
  • Prilagođeni čvor tvrdnji - omogućit će vam da proširite skup postojećih tvrdnji u projektu
    Naravno, ovo nije konačan popis, on će se stalno ažurirati zahvaljujući, između ostalog, vašim povratnim informacijama.

FAQ

Po čemu se razlikuješ od poštara?

  1. Koncept čvorova, koji vam omogućuje gotovo beskrajno skaliranje funkcionalnosti projekta
  2. Čovjeku čitljiv format projekta sa spremanjem u datotečni sustav, što pojednostavljuje rad pomoću sustava za kontrolu verzija
  3. Mogućnost izrade testova bez programiranja i naprednija js podrška u uređivaču testova (autokomplecija, statički analizator)
  4. Napredno autocompletion i isticanje trenutne vrijednosti varijabli

Je li ovo proizvod otvorenog koda?

Ne, trenutno su izvori zatvoreni, ali u budućnosti razmatramo mogućnost otvaranja izvora

Od čega živiš?)

Uz besplatnu verziju, planiramo izdati verziju proizvoda koja se plaća. Prvenstveno će uključivati ​​stvari koje zahtijevaju poslužiteljsku stranu, na primjer, sinkronizaciju.

Zaključak

Naš se projekt velikim koracima kreće prema stabilnom izdanju. Međutim, proizvod se već može koristiti, a to dokazuju pozitivne povratne informacije naših prvih korisnika. Aktivno prikupljamo povratne informacije, jer bez bliske suradnje sa zajednicom nemoguće je izgraditi dobar alat. Možete nas pronaći ovdje:

Službena web stranica

Telegram

Zatišje

Facebook

Praćenje problema

Radujemo se Vašim željama i prijedlozima!

Izvor: www.habr.com

Dodajte komentar