TestMace - moćan IDE za rad sa API-jima

Zdravo svima! Danas želimo da IT javnosti predstavimo naš proizvod - IDE za rad sa API-jima TestMace. Možda neki od vas već znaju za nas iz prethodni članci. Međutim, nije bilo sveobuhvatnog pregleda alata, pa se bavimo ovim nesretnim nedostatkom.

TestMace - moćan IDE za rad sa API-jima

Motivacija

Želeo bih da počnem od toga kako smo, u stvari, došli do ovog života i odlučili da kreiramo sopstveni alat za napredni rad sa API-jem. Počnimo sa listom funkcionalnosti koje proizvod treba da ima, za koje, po našem mišljenju, možemo reći da je to „IDE za rad sa API-jima“:

  • Kreiranje i izvršavanje upita i skripti (sekvencije upita)
  • Pisanje raznih vrsta testova
  • Testna generacija
  • Rad sa API opisima, 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 sa popularnim bibliotekama
  • i tako dalje.

Lista se može proširiti po vašem ukusu. Štaviše, važno je kreirati ne samo sam IDE, već i određenu infrastrukturu, kao što je sinhronizacija u oblaku, alati komandne linije, servis za praćenje na mreži itd. Na kraju, trendovi posljednjih godina diktiraju nam ne samo moćnu funkcionalnost aplikacije, već i njeno ugodno sučelje.

Kome treba takav alat? Očigledno, svi oni koji su barem nekako povezani sa razvojem i testiranjem API-ja su programeri i testeri =). Štoviše, ako je za prve često dovoljno izvršavanje pojedinačnih upita i jednostavnih skripti, 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. Hajde da vidimo šta smo postigli u ovoj fazi.

Brzi početak

Počnimo s prvim upoznavanjem aplikacije. 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 prvi put pokrenete, možete vidjeti sljedeći prozor:

TestMace - moćan IDE za rad sa API-jima

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

TestMace - moćan IDE za rad sa API-jima

Pogledajmo to detaljnije. Interfejs zahtjeva je vrlo sličan sučelju popularnih rest klijenata, što olakšava migraciju sa sličnih alata. Napravimo prvi zahtjev za url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - moćan IDE za rad sa API-jima

Generalno, na prvi pogled, panel za odziv takođe ne izaziva iznenađenja. Međutim, želeo bih da vam skrenem pažnju na neke tačke:

  1. Tijelo odgovora je predstavljeno u obliku stabla, koje prvo dodaje informativni sadržaj, a drugo vam omogućava da dodate neke zanimljive karakteristike o kojima u nastavku
  2. Postoji kartica Tvrdnje koja prikazuje listu testova za dati zahtjev

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

Osnovni koncepti i karakteristike

Čvor

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

  • RequestStep. Ovo je čvor kroz koji možete kreirati zahtjev. Može imati samo jedan asertion čvor kao podređeni element.
  • Tvrdnja. Čvor se koristi za pisanje testova. Može biti samo podređeni čvor čvora RequestStep.
  • Folder. Omogućava vam da grupišete čvorove Folder i RequestStep unutar njih.
  • Projekt. Ovo je korijenski čvor, kreiran automatski kada je projekat kreiran. U suprotnom, ponavlja funkcionalnost čvora Folder.
  • Veza. Veza do čvora Folder ili RequestStep. Omogućava vam ponovno korištenje upita i skripti.
  • i tako dalje.

Čvorovi se nalaze u ogrebotinama (panel u donjem levom uglu, koji se koristi za brzo kreiranje „jednokratnih“ upita) i u projektima (panel u gornjem levom uglu), na čemu ćemo se detaljnije zadržati.

Projekat

Kada pokrenete aplikaciju, možda ćete primijetiti usamljenu liniju projekta u gornjem lijevom kutu. Ovo je korijen stabla projekta. Kada pokrenete projekat, kreira se privremeni projekat, put do kojeg zavisi od vašeg operativnog sistema. U svakom trenutku možete premjestiti projekat na mjesto koje vam odgovara.

Glavna svrha projekta je mogućnost pohranjivanja razvoja u datotečnom sistemu i dalje sinhronizacije kroz sisteme kontrole verzija, pokretanja skripti u CI-u, pregleda 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 govorimo. Dakle, varijable su način pohranjivanja zajedničkih podataka i komunikacije između čvorova. Analog, na primjer, su varijable okruženja u Postman ili Insomnia. Međutim, otišli smo dalje i razvili temu. U TestMaceu, varijable se mogu postaviti na nivou čvora. Bilo koji. Postoji i mehanizam za nasljeđivanje varijabli od predaka i preklapajućih varijabli kod potomaka. Osim toga, postoji niz ugrađenih varijabli, imena ugrađenih varijabli počinju sa $. Evo nekih od njih:

  • $prevStep — veza sa varijablama prethodnog čvora
  • $nextStep — veza do varijabli sljedećeg čvora
  • $parent - ista stvar, ali samo za pretka
  • $response - odgovor sa servera
  • $env - trenutne varijable okruženja
  • $dynamicVar - dinamičke varijable kreirane tokom izvršavanja skripte ili upita

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

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

Odvojeno, vredi napomenuti mogućnost dodeljivanja varijabli tokom izvršavanja skripte. Na primjer, često postoji potreba da se sačuvaju autorizacijski podaci (token ili cijelo zaglavlje) koji su došli sa servera nakon uspješne prijave. TestMace vam omogućava da takve podatke spremite u dinamičke varijable jednog od predaka. Kako bi se izbjegle kolizije sa već postojećim “statičkim” varijablama, dinamičke varijable se postavljaju u poseban objekt $dynamicVar.

Scenariji

Koristeći sve gore navedene funkcije, možete pokrenuti cijele skripte upita. Na primjer, kreiranje entiteta -> postavljanje upita entiteta -> brisanje entiteta. U ovom slučaju, na primjer, možete koristiti čvor Folder da grupišete nekoliko RequestStep čvorova.

Automatsko dovršavanje i isticanje izraza

Za prikladan rad s varijablama (i ne samo) potrebno je autodovrš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 jednom vidjeti nego sto puta čuti:

TestMace - moćan IDE za rad sa API-jima

Vrijedi 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. Lista se stalno ažurira kako aplikacija raste.

Poništi/ponovi

Poništavanje/ponovno izvršavanje izmjena je vrlo zgodna stvar, ali iz nekog razloga nije implementirana svuda (a alati za rad sa API-jem nisu izuzetak). Ali mi nismo jedni od njih!) Implementirali smo undo/redo kroz cijeli projekat, što vam omogućava da poništite ne samo uređivanje određenog čvora, već i njegovo kreiranje, brisanje, pomicanje itd. Najkritičnije operacije zahtijevaju potvrdu.

Kreiranje testova

Čvor Assertion je odgovoran za kreiranje testova. Jedna od glavnih karakteristika je mogućnost kreiranja testova bez programiranja, koristeći ugrađene editore.

Čvor Assertion sastoji se od skupa tvrdnji. Svaka tvrdnja ima svoj tip; trenutno postoji nekoliko tipova tvrdnji

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

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

  3. XPath - provjerava da li selektor u XML-u sadrži 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 zahtijeva od korisnika vještine programiranja, ostale 3 tvrdnje su kreirane pomoću grafičkog sučelja. Evo, na primjer, kako izgleda dijalog za kreiranje tvrdnje usporedbe vrijednosti:

TestMace - moćan IDE za rad sa API-jima

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

TestMace - moćan IDE za rad sa API-jima

Međutim, takve tvrdnje imaju očigledna ograničenja koja ćete možda htjeti upotrijebiti javascript tvrdnju da biste ih prevazišli. I ovdje TestMace također pruža ugodno okruženje sa autodovršavanjem, isticanjem sintakse, pa čak i statičkim analizatorom.

API opis

TestMace vam omogućava ne samo da koristite API, već i da ga dokumentujete. Štaviše, sam opis takođe ima hijerarhijsku strukturu i organski se uklapa u ostatak projekta. Pored toga, trenutno je moguće uvesti API opise iz Swagger 2.0 / OpenAPI 3.0 formata. Sam opis ne leži samo na teretu, već je usko integriran s ostatkom projekta, posebno je dostupno automatsko dovršavanje URL-ova, HTTP zaglavlja, parametara upita itd., au budućnosti planiramo dodati testove za usklađenost odgovora sa API opisom.

Čvor za dijeljenje

Slučaj: želite da podijelite problematičan zahtjev ili čak cijeli skript sa kolegom ili ga jednostavno priložite grešci. TestMace pokriva i ovaj slučaj: aplikacija vam omogućava da serijalizirate bilo koji čvor, pa čak i podstablo u URL-u. Copy-paste i lako možete prenijeti zahtjev na drugu mašinu ili projekat.

Čovjeku čitljiv format pohrane projekta

Trenutno je svaki čvor pohranjen u zasebnoj datoteci sa ekstenzijom yml (kao što je slučaj sa čvorom Assertion), ili u folderu s imenom čvora i index.yml fajlom u njemu.
Na primjer, ovako izgleda fajl zahtjeva koji smo napravili u pregledu iznad:

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

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

Hijerarhija fascikli u sistemu datoteka u potpunosti ponavlja hijerarhiju čvorova u projektu. Na primjer, skripta poput:

TestMace - moćan IDE za rad sa API-jima

Mapira sistem datoteka na sljedeću strukturu (prikazuje se samo hijerarhija foldera, ali je suština jasna)

TestMace - moćan IDE za rad sa API-jima

Ovo olakšava proces pregleda projekta.

Uvoz iz poštara

Nakon što pročitaju sve gore navedeno, neki korisnici će poželjeti isprobati (zar ne?) novi proizvod ili (što se, dovraga ne šalim!) u potpunosti koristiti u svom projektu. Međutim, migracija se može zaustaviti velikim brojem dešavanja u istom Poštaru. U takvim slučajevima, TestMace podržava uvoz kolekcija iz Postmana. Trenutno je podržan uvoz bez testiranja, ali ne isključujemo njihovu podršku u budućnosti.

Planovi

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

Sinhronizacija u oblaku

Jedna od najtraženijih karakteristika. Trenutno predlažemo korištenje sistema kontrole verzija za sinhronizaciju, za koji format činimo pogodnijim za ovu vrstu pohrane. Međutim, ovaj tok posla nije pogodan za svakoga, pa planiramo da dodamo mehanizam sinhronizacije koji je mnogima poznat preko naših servera.

CLI

Kao što je gore pomenuto, proizvodi na nivou IDE ne mogu bez svih vrsta integracija sa postojećim aplikacijama ili radnim tokovima. CLI je upravo ono što je potrebno za integraciju testova napisanih u TestMaceu u kontinuirani proces integracije. Rad na CLI-u je u punom jeku; rane verzije će pokrenuti projekat sa jednostavnim izvještajem na konzoli. U budućnosti planiramo dodati izlaz izvještaja u JUnit formatu.

Sistem dodataka

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

Proširivanje raspona tipova čvorova

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

  • Čvor skripte - pretvara i postavlja podatke koristeći js i odgovarajući API. Koristeći ovu vrstu čvora, možete raditi stvari kao što su skripte prije zahtjeva i post-request u Postman-u.
  • GraphQL čvor - podrška za graphql
  • Čvor prilagođene tvrdnje - omogućit će vam da proširite skup postojećih tvrdnji u projektu
    Naravno, ovo nije konačna lista, ona će se stalno ažurirati zbog, između ostalog, vaših povratnih informacija.

FAQ

Po čemu se razlikuješ od Poštara?

  1. Koncept čvorova, koji vam omogućava gotovo beskonačno skaliranje funkcionalnosti projekta
  2. Čovjeku čitljiv format projekta sa pohranjivanjem u sistem datoteka, što pojednostavljuje rad pomoću sistema kontrole verzija
  3. Mogućnost kreiranja testova bez programiranja i naprednija js podrška u uređivaču testova (autokompletiranje, statički analizator)
  4. Napredno automatsko dovršavanje 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 cega zivis?)

Uz besplatnu verziju, planiramo izdati i plaćenu verziju proizvoda. To će prvenstveno uključivati ​​stvari koje zahtijevaju serversku stranu, na primjer, sinhronizaciju.

zaključak

Naš projekat se kreće skokovima i granicama ka stabilnom izdanju. Međutim, proizvod se već može koristiti, a pozitivne povratne informacije naših ranih korisnika su dokaz za to. Aktivno prikupljamo povratne informacije, jer bez bliske saradnje sa zajednicom nemoguće je napraviti dobar alat. Možete nas pronaći ovdje:

Službena web stranica

telegram

zatišje

Facebook

Issues tracker

Radujemo se vašim željama i prijedlozima!

izvor: www.habr.com

Dodajte komentar