TestMace. Brzi početak

TestMace. Brzi početak

Zdravo svima. Polako izlazimo iz sjene i nastavljamo seriju članaka o našem proizvodu. Poslije prethodni Pregledni članak, dobili smo mnogo povratnih informacija (uglavnom pozitivnih), prijedloga i izvještaja o greškama. Danas ćemo pokazati TestMace u akciji i moći ćete cijeniti neke od karakteristika naše aplikacije. Za potpunije uranjanje, savjetujem vam da pogledate našu dokumentaciju na http://docs-ru.testmace.com. Dakle, idemo!

postavljanje

Počnimo sa banalnošću. Aplikacija je dostupna i zapravo testirana na tri platforme - Linux, Windows, MacOS. Možete preuzeti instalacioni program za OS koji vas zanima našu web stranicu. Za korisnike Linuxa moguća je instalacija snap paket. Zaista se nadamo da će Microsoft Store i App Store uskoro doći do toga (Da li je potrebno? Šta mislite?).

Eksperimentalni scenario

Odabrali smo sljedeći standardni scenario kao naš ispitanik:

  • Prijava: korisnik - admin, lozinka - lozinka
  • dodajte novi unos
  • Provjerimo da li je zapis ispravno dodan

Mi ćemo testirati dalje https://testmace-quick-start.herokuapp.com/. Ovo je normalno json-server, savršeno za testiranje takvih aplikacija. Upravo smo dodali autorizaciju putem tokena na sve rute json-servera i kreirali metodu prijave za primanje ovog tokena. Kretaćemo se progresivno, postepeno poboljšavajući naš projekat.

Kreiranje projekta i pokušaj kreiranja entiteta bez autorizacije

Prvo, napravimo novi projekat (fajl->Novi projekat). Ako aplikaciju pokrećete prvi put, automatski će se otvoriti novi projekat. Prvo, pokušajmo napraviti zahtjev za kreiranje novog zapisa (u slučaju da je kreiranje zapisa dostupno bez autorizacije). Odaberite stavke iz kontekstnog menija projektnog čvora Dodaj čvor -> RequestStep. Postavite ime čvora na kreiraj-post. Kao rezultat, novi čvor će biti kreiran u stablu i otvoriće se kartica za ovaj čvor. Postavimo sljedeće parametre zahtjeva:

TestMace. Brzi početak

Međutim, ako pokušamo ispuniti zahtjev, server će vratiti 401 kod i bez autorizacije nećemo dobiti ništa na ovom serveru. Pa, općenito, kako se i očekivalo).

Dodavanje zahtjeva za autorizaciju

Kao što je već rečeno, imamo POST krajnju tačku /login, koji uzima json kao tijelo zahtjeva u obliku: {"username": "<username>", "password": "<password>"}gde username и password (opet, iz uvodnog stava iznad) imaju značenja admin и password respektivno. Kao odgovor, ova krajnja tačka vraća json like {"token": "<token>"}. Koristit ćemo ga za autorizaciju. Kreirajmo RequestStep čvor sa imenom Ulogovati se, ponašaće se kao predak Projekat čvor Koristeći prevlačenje i ispuštanje, pomjerite dati čvor u stablu više od čvora kreiraj-post. Postavimo sljedeće parametre za novokreirani zahtjev:

Izvršimo zahtjev i primimo dvostoti kod sa tokenom u odgovoru. Ovako nešto:

TestMace. Brzi početak

Refaktoring: uklanjanje dupliciranja domena

Za sada zahtjevi nisu povezani u jednu skriptu. Ali to nije jedini nedostatak. Ako pažljivo pogledate, primijetit ćete da je barem domen dupliciran u oba zahtjeva. Nije dobro. Vrijeme je da prepravimo ovaj dio buduće skripte, a varijable će nam pomoći u tome.

U prvoj aproksimaciji, varijable imaju istu ulogu kao i u drugim sličnim alatima i programskim jezicima - eliminišući dupliciranje, povećavajući čitljivost, itd. Više o varijablama možete pročitati u našu dokumentaciju. U ovom slučaju će nam trebati korisničke varijable.

Hajde da definišemo varijablu na nivou projektnog čvora domain sa značenjem https://testmace-quick-start.herokuapp.com. Za to je neophodno

  • Otvorite karticu sa ovim čvorom i kliknite na ikonu kalkulatora u gornjem desnom uglu
  • Kliknite na + DODAJ VARIJABLU
  • Unesite naziv i vrijednost varijable
    U našem slučaju, dijalog sa dodanom varijablom će izgledati ovako:

TestMace. Brzi početak

UREDU. Sada, zbog nasljeđivanja, ovu varijablu možemo koristiti u potomcima bilo kojeg nivoa ugniježđenja. U našem slučaju to su čvorovi Ulogovati se и kreiraj-post. Da biste koristili varijablu u tekstualnom polju, morate pisati ${<variable_name>}. Na primjer, URL za prijavu se pretvara u ${domain}/login, odnosno za kreiraj-post URL čvora će izgledati ovako ${domain}/posts.

Tako smo, vođeni DRY principom, malo unapredili scenario.

Sačuvajte token u varijablu

Pošto govorimo o varijablama, hajde da malo proširimo ovu temu. Trenutno, u slučaju uspješne prijave, od servera dobijamo autorizacijski token, koji će nam biti potreban u narednim zahtjevima. Sačuvajmo ovaj token u varijablu. Jer vrijednost varijable će biti određena tokom izvršavanja skripte, za to koristimo poseban mehanizam - dinamičke varijable.

Prvo, izvršimo zahtjev za prijavu. U kartici Raščlanjeno odgovorite, pomaknite kursor preko tokena i u kontekstualnom meniju (koji se poziva ili desnom tipkom miša ili klikom na dugme ...) odaberite stavku Dodijeli varijablu. Pojavit će se dijalog sa sljedećim poljima:

  • put — koji dio odgovora je uzet (u našem slučaju jeste body.token)
  • Trenutna vrijednost — koja vrijednost leži duž puta (u našem slučaju to je vrijednost tokena)
  • Ime varijable — naziv varijable gdje Trenutna vrijednost će biti sačuvana. U našem slučaju će biti token
  • čvor — u kojem od predaka će se varijabla kreirati Ime varijable. Odaberimo projekat

Završeni dijalog izgleda ovako:

TestMace. Brzi početak

Sada svaki put kada se čvor izvrši Ulogovati se dinamička varijabla token bit će ažuriran novom vrijednošću iz odgovora. I ova varijabla će biti pohranjena u Projekat čvor i, zahvaljujući nasljeđivanju, biće dostupan potomcima.

Da biste pristupili dinamičkim varijablama, morate koristiti ugrađena varijabla $dynamicVar. Na primjer, da biste pristupili pohranjenom tokenu, trebate nazvati ${$dynamicVar.token}.

Mi prosljeđujemo token autorizacije u zahtjeve

U prethodnim koracima smo dobili token za autorizaciju i sve što trebamo učiniti je dodati zaglavlje Authorization sa značenjem Bearer <tokenValue> u svim zahtjevima za koje je potrebna autorizacija, uključujući kreiraj-post. Postoji nekoliko načina da to učinite:

  1. Ručno kopirajte token i dodajte zaglavlje autorizacije zahtjevima od interesa. Metoda radi, ali je njena upotreba ograničena samo na zahtjeve tipa „napravljeno i odbačeno“. Nije prikladno za ponovno izvršavanje skripti
  2. Koristite funkcionalnost autorizacija.
  3. Upotreba podrazumevana zaglavlja

Korištenje druge metode čini se očiglednim, ali u kontekstu ovog članka, ovaj pristup je... nezanimljiv. Pa, stvarno: mehanizam autorizacije plus minus vam je poznat iz drugih alata (čak i ako imamo stvari poput autorizacijsko nasljeđivanje) i malo je vjerovatno da će izazvati pitanja.

Druga stvar su podrazumevana zaglavlja! Ukratko, podrazumevana zaglavlja su nasleđena HTTP zaglavlja koja se podrazumevano dodaju zahtevu osim ako nisu eksplicitno onemogućena. Koristeći ovu funkcionalnost, možete, na primjer, implementirati prilagođenu autorizaciju ili se jednostavno riješiti dupliciranja u skriptama. Upotrijebimo ovu funkciju za prosljeđivanje tokena u zaglavljima.

Ranije smo razborito spremili token u dinamičku varijablu $dynamicVar.token na nivou projektnog čvora. Sve što ostaje je da uradite sledeće:

  1. Definirajte zadani naslov Authorization sa značenjem Bearer ${$dynamicVar.token} na nivou projektnog čvora. Da biste to uradili, u interfejsu projekta čvora morate otvoriti dijalog sa podrazumevanim naslovima (dugme zaglavlja u gornjem desnom uglu) i dodajte odgovarajući naslov. Dijalog sa popunjenim vrijednostima će izgledati ovako:
    TestMace. Brzi početak
  2. Onemogućite ovo zaglavlje iz zahtjeva za prijavu. To je razumljivo: u trenutku prijave još nemamo token i instalirat ćemo ga sa ovim zahtjevom. Stoga, u sučelju za prijavu zahtjeva na kartici zaglavlja na području Naslijeđeno poništite zaglavlje Autorizacija.

To je sve. Sada će zaglavlje autorizacije biti dodano svim zahtjevima koji su potomci čvora projekta, osim čvora za prijavu. Ispostavilo se da u ovoj fazi već imamo spreman skript i sve što treba da uradimo je da ga pokrenemo. Možete pokrenuti skriptu odabirom trčanje u kontekstualnom meniju projektnog čvora.

Provjera ispravnosti kreiranja objave

U ovoj fazi, naša skripta se može prijaviti i, koristeći token za autorizaciju, kreirati objavu. Međutim, moramo biti sigurni da novokreirani post ima ispravan naziv. To jest, u suštini, sve što ostaje je da uradite sledeće:

  • Pošaljite zahtjev za primanje poruke po ID-u,
  • Provjerite da li se ime primljeno od servera podudara s imenom poslanim prilikom kreiranja objave

Pogledajmo prvi korak. Budući da se vrijednost id određuje tokom izvršavanja skripte, potrebno je kreirati dinamičku varijablu (nazovimo je postId) iz čvora kreiraj-post na nivou projektnog čvora. Već znamo kako to učiniti, samo pogledajte odjeljak Sačuvajte token u varijablu. Sve što ostaje je kreirati zahtjev za primanje objave koristeći ovaj ID. Da bismo to uradili, kreirajmo RequestStep get-post sa sljedećim parametrima:

  • Vrsta zahtjeva: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Da bismo implementirali drugi korak, moramo se upoznati sa Tvrdnja čvor. Čvor Assertion je čvor koji vam omogućava da pišete provjere za specifične zahtjeve. Svaki čvor tvrdnje može sadržavati nekoliko tvrdnji (provjera). Više o svim vrstama tvrdnji možete pročitati kod nas dokumentaciju. Koristićemo Compare tvrdnja sa operatorom equal. Postoji nekoliko načina za kreiranje tvrdnji:

  1. Dugo. Ručno kreirajte čvor Assertion iz kontekstnog menija RequestStep čvora. U kreiranom čvoru Asertion dodajte tvrdnju od interesa i popunite polja.
  2. Brzo. Kreirajte čvor Assertion zajedno sa tvrdnjom iz odgovora čvora RequestStep koristeći kontekstni meni

Koristimo drugu metodu. Ovako će to izgledati za naš slučaj.

TestMace. Brzi početak

Za one koji ne razumeju, evo šta se dešava:

  1. Napravite zahtjev u čvoru get-post
  2. Na kartici Raščlanjeno odgovorite, pozovite kontekstni meni i izaberite Kreirajte tvrdnju -> porediti -> jednak

Čestitamo, napravili smo naš prvi test! Jednostavno, zar ne? Sada možete u potpunosti pokrenuti skriptu i uživati ​​u rezultatu. Ostaje samo da ga malo prepravimo i izvadimo title u zasebnu varijablu. Ali ovo ćemo vam ostaviti kao domaći zadatak)

zaključak

U ovom vodiču kreirali smo potpuni scenario i istovremeno pregledali neke od karakteristika našeg proizvoda. Naravno, nismo iskoristili sve funkcionalnosti i u narednim člancima ćemo dati detaljan pregled mogućnosti TestMace-a. Stay tuned!

PS Za one koji su previše lijeni da reproduciraju sve korake, ljubazno smo snimili spremište sa projektom iz članka. Možete ga otvoriti sa fajl -> Otvoreni projekat i izaberite fasciklu Project.

izvor: www.habr.com

Dodajte komentar