Zašto je TestMace bolji od Postmana

Zašto je TestMace bolji od Postmana

Pozdrav svima, izvolite TestMace! Možda mnogi ljudi znaju za nas iz naših prethodni članci. Za one koji su se tek pridružili: razvijamo IDE za rad s TestMace API-jem. Najčešće postavljeno pitanje pri usporedbi TestMacea s konkurentskim proizvodima je "Po čemu se razlikujete od Postmana?" Odlučili smo da je vrijeme da damo detaljan odgovor na ovo pitanje. U nastavku smo naveli naše prednosti u odnosu na Poštar.

Razdvajanje u čvorove

Ako radite s Postmanom, onda znate da sučelje zahtjeva sadrži sve potrebne funkcionalnosti. Postoje skripte, testovi i, zapravo, sami zahtjevi. To olakšava početnicima, ali u velikim scenarijima ovaj pristup nije fleksibilan. Što ako želite stvoriti nekoliko upita i izvršiti agregaciju na njima? Što ako želite izvršiti skriptu bez zahtjeva ili nekoliko logički odvojenih skripti u nizu? Uostalom, bilo bi dobro odvojiti testove od uobičajenih uslužnih skripti. Osim toga, pristup "dodaj sve funkcionalnosti u jedan čvor" nije skalabilan - sučelje brzo postaje preopterećeno.

TestMace inicijalno dijeli sve funkcionalnosti u različite vrste čvorova. Želite li podnijeti zahtjev? Za tebe je korak zahtjeva čvor Želiš li napisati scenarij? Za tebe je rukopis čvor Trebate testove? molim te - Tvrdnja čvor O da, još uvijek možete umotati cijelu ovu stvar mapa čvor I sve se to lako može kombinirati jedno s drugim. Ovaj pristup ne samo da je vrlo fleksibilan, već vam, u skladu s načelom jednokratne odgovornosti, omogućuje korištenje samo onoga što vam je trenutno potrebno. Zašto mi trebaju skripte i testovi ako samo želim podnijeti zahtjev?

Čovjeku čitljiv format projekta

Postoji konceptualna razlika između TestMacea i Postmana u načinu na koji su pohranjeni. U Postmanu su svi zahtjevi pohranjeni negdje u lokalnoj pohrani. Ako postoji potreba za dijeljenjem zahtjeva između nekoliko korisnika, tada morate koristiti ugrađenu sinkronizaciju. Zapravo, ovo je općeprihvaćen pristup, ali ne bez nedostataka. Što je sa sigurnošću podataka? Uostalom, politika nekih tvrtki možda ne dopušta pohranu podataka kod trećih strana. Međutim, mislimo da TestMace ima nešto bolje za ponuditi! A naziv ovog poboljšanja je "ljudski čitljiv projektni format."

Počnimo s činjenicom da u TestMaceu, u načelu, postoji entitet "projekt". A aplikacija je inicijalno razvijena s ciljem pohranjivanja projekata u sustavima za kontrolu verzija: stablo projekta je gotovo jedan na jedan projicirano na strukturu datoteke, yaml se koristi kao format za pohranu (bez dodatnih zagrada i zareza), a datotečni prikaz svakog čvora detaljno je opisan u dokumentaciji s komentarima. Ali u većini slučajeva nećete tražiti tamo - sva imena polja imaju logična imena.

Što to daje korisniku? To vam omogućuje vrlo fleksibilnu promjenu tijeka rada tima, koristeći poznate pristupe. Na primjer, programeri mogu pohraniti projekt u isto spremište kao i pozadina. U ograncima, osim promjene same baze koda, programer može ispraviti postojeće skripte upita i testove. Nakon unošenja promjena u repozitorij (git, svn, mercurial - što god vam se najviše sviđa), CI (vaš omiljeni, nitko ga nije nametnuo) pokreće naš uslužni program za konzolu testmace-cli, a izvještaj primljen nakon izvršenja (na primjer, u junit formatu, koji je također podržan u testmace-cli) šalje se u odgovarajući sustav. I gore spomenuti sigurnosni problem više nije problem.

Kao što vidite, TestMace ne nameće svoj ekosustav i paradigmu. Umjesto toga, lako se uklapa u uspostavljene procese.

Dinamičke varijable

TestMace slijedi koncept bez kodiranja: ako se problem može riješiti bez korištenja koda, mi pokušavamo pružiti tu priliku. Rad s varijablama je upravo ona vrsta funkcionalnosti gdje u većini slučajeva možete bez programiranja.

Primjer: dobili smo odgovor od poslužitelja, a dio odgovora želimo spremiti u varijablu. U Postmanu, u testnoj skripti (što je samo po sebi čudno) napisali bismo nešto poput:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

No, po našem mišljenju, pisanje skripte za tako jednostavan i često korišten scenarij izgleda suvišno. Stoga je u TestMaceu moguće dodijeliti dio odgovora varijabli pomoću grafičkog sučelja. Pogledajte kako je jednostavno:

Zašto je TestMace bolji od Postmana

Sada će se sa svakim zahtjevom ova dinamička varijabla ažurirati. Ali možete prigovoriti, tvrdeći da je pristup Postmana fleksibilniji i omogućuje vam ne samo dodjelu, već i izvođenje neke predobrade. Evo kako izmijeniti prethodni primjer:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

Pa, za tu svrhu TestMace ima rukopis čvor, koji pokriva ovaj scenarij. Kako biste reproducirali prethodni slučaj, ali ga je već izvršio TestMace, trebate stvoriti čvor skripte nakon zahtjeva i koristiti sljedeći kod kao skriptu:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

Kao što vidite, sastav čvorova je i ovdje dobro poslužio. A za tako jednostavan slučaj kao što je gore opisano, možete jednostavno dodijeliti izraz ${crypto.MD5($response.data)} varijabla stvorena putem GUI!

Izrada testova putem GUI

Postman vam omogućuje izradu testova pisanjem skripti (u slučaju Postmana to je JavaScript). Ovaj pristup ima mnoge prednosti - gotovo neograničenu fleksibilnost, dostupnost gotovih rješenja itd.

Međutim, realnost je često takva (mi nismo takvi, život je takav) da tester nema programerskih vještina, ali želi donijeti korist ekipi upravo sada. Za takve slučajeve, slijedeći koncept bez kodiranja, TestMace vam omogućuje stvaranje jednostavnih testova putem GUI-ja bez pribjegavanja pisanju skripti. Evo, na primjer, kako izgleda proces kreiranja testa koji uspoređuje vrijednosti za jednakost:

Zašto je TestMace bolji od Postmana

Međutim, izrada testova u grafičkom uređivaču ne isključuje tu mogućnost pisanje testova u kodu. Ovdje su sve iste biblioteke kao u čvoru skripte i chai za pisanje testova.

Često se javljaju situacije kada se određeni upit ili čak cijela skripta treba izvršiti nekoliko puta u različitim dijelovima projekta. Primjer takvih zahtjeva može biti prilagođena višestupanjska autorizacija, dovođenje okruženja u željeno stanje itd. Općenito, govoreći u smislu programskih jezika, željeli bismo imati funkcije koje se mogu ponovno koristiti u različitim dijelovima aplikacije. U TestMaceu ovu funkciju obavlja link čvor Vrlo je jednostavan za korištenje:
1) izradite upit ili skriptu
2) kreirajte čvor tipa Link
3) u parametrima navedite poveznicu na skriptu stvorenu u prvom koraku

U naprednijoj verziji možete odrediti koje se dinamičke varijable iz skripte prosljeđuju na višu razinu u odnosu na vezu. Zvuči zbunjujuće? Recimo da smo stvorili mapu s imenom stvoriti-post, unutar kojega je dinamička varijabla dodijeljena ovom čvoru postId. Sada u čvoru veze stvoriti-post-link možete eksplicitno navesti da varijabla postId dodijeljen pretku stvoriti-post-link. Ovaj mehanizam (opet, u programskom jeziku) može se koristiti za vraćanje rezultata iz "funkcije". Općenito, cool je, DRY je u punom jeku i opet niti jedna linija koda nije oštećena.

Zašto je TestMace bolji od Postmana

Što se tiče poštara, postoji značajka zahtjeva za ponovno korištenje zahtjeva visi od 2015, a čini se da ima čak neki savjetida rade na ovom problemu. U svom sadašnjem obliku, Postman, naravno, ima mogućnost mijenjanja niti izvršavanja, što u teoriji vjerojatno omogućuje implementaciju sličnog ponašanja, ali ovo je više prljavi hack nego istinski radni pristup.

Ostale razlike

  • Veća kontrola nad opsegom varijabli. Najmanji opseg unutar kojeg se varijabla može definirati u Postmanu je zbirka. TestMace vam omogućuje definiranje varijabli za bilo koji upit ili mapu. U Postman Share zbirka vam omogućuje izvoz samo zbirki, dok u TestMace dijeljenje radi za bilo koji čvor
  • TestMace podržava nasljedna zaglavlja, koji se prema zadanim postavkama mogu zamijeniti podređenim upitima. Poštar ima nešto o ovome: zadatak, čak je i zatvoren, ali se nudi kao rješenje... koristiti skripte. U TestMaceu je sve to konfigurirano putem GUI-a i postoji opcija za opcionalno onemogućavanje naslijeđenih zaglavlja u određenim potomcima
  • Poništiti, povratiti. Radi ne samo pri uređivanju čvorova, već i pri premještanju, brisanju, preimenovanju i drugim operacijama koje mijenjaju strukturu projekta
  • Datoteke priložene zahtjevima postaju dio projekta i pohranjuju se s njim, pri čemu su savršeno sinkronizirane, za razliku od Postmana. (Da, više ne morate ručno birati datoteke svaki put kada pokrenete i prenositi ih kolegama u arhivi)

Značajke koje su već na putu

Nismo mogli odoljeti iskušenju da podignemo veo tajne nad sljedećim izdanjima, pogotovo kada je funkcionalnost vrlo ukusna i već prolazi poliranje prije izdanja. Dakle, upoznajmo se.

Funkcije

Kao što znate, Postman koristi takozvane dinamičke varijable za generiranje vrijednosti. Popis njih je impresivan a velika većina funkcija koristi se za generiranje lažnih vrijednosti. Na primjer, za generiranje nasumične e-pošte trebate napisati:

{{$randomEmail}}

Međutim, budući da su to varijable (iako dinamičke), ne mogu se koristiti kao funkcije: ne mogu se parametrizirati, stoga neće biti moguće uzeti hash iz niza.

Planiramo dodati "poštene" funkcije u TestMace. Unutar ${} bit će moguće ne samo pristupiti varijabli, već i pozvati funkciju. Oni. ako trebate generirati notornu lažnu e-poštu, jednostavno ćemo pisati

${faker.internet.email()}

Osim što se radi o funkciji, primijetit ćete da je moguće pozvati metodu na objektu. I umjesto velikog ravnog popisa dinamičkih varijabli, imamo skup logički grupiranih objekata.

Što ako želimo izračunati hash niza? Lako!

${crypto.MD5($dynamicVar.data)}

Primijetit ćete da čak možete proslijediti varijable kao parametre! U ovom trenutku, radoznali čitatelj može posumnjati da nešto nije u redu...

Korištenje JavaScripta u izrazima

... I to s dobrim razlogom! Kada su se formirali zahtjevi za funkcije, odjednom smo došli do zaključka da valjani javascript treba pisati u izrazima. Dakle, sada možete slobodno pisati izraze poput:

${1 + '' + crypto.MD5('asdf')}

I sve to bez skripti, točno u poljima za unos!

Što se tiče Postmana, ovdje možete koristiti samo varijable, a kada pokušate napisati i najmanji izraz, validator psuje i odbija ga izračunati.

Zašto je TestMace bolji od Postmana

Napredno automatsko dovršavanje

Trenutno TestMace ima standardno automatsko dovršavanje koje izgleda ovako:

Zašto je TestMace bolji od Postmana

Ovdje je, osim retka za automatsko dovršavanje, naznačeno čemu taj redak pripada. Ovaj mehanizam radi samo u izrazima u zagradama ${}.

Kao što vidite, dodani su vizualni markeri koji označavaju vrstu varijable (na primjer, niz, broj, polje itd.). Također možete promijeniti načine automatskog dovršavanja (na primjer, možete odabrati automatsko dovršavanje s varijablama ili zaglavljima). Ali ni to nije najvažnije!

Prvo, automatsko dovršavanje radi čak iu izrazima (gdje je to moguće). Ovako to izgleda:

Zašto je TestMace bolji od Postmana

I drugo, automatsko dovršavanje je sada dostupno u skriptama. Pogledajte kako radi!

Zašto je TestMace bolji od Postmana

Nema smisla uspoređivati ​​ovu funkcionalnost s Postmanom - tamo je automatsko dovršavanje ograničeno samo na statične popise varijabli, zaglavlja i njihovih vrijednosti (ispravite me ako sam nešto zaboravio). Skripte se ne popunjavaju automatski :)

Zaključak

Listopad je obilježio godinu dana od početka razvoja naših proizvoda. Za to vrijeme uspjeli smo puno toga napraviti iu nekim aspektima sustići konkurente. No, kako god bilo, naš je cilj napraviti doista praktičan alat za rad s API-jima. Imamo još puno posla, evo okvirnog plana razvoja našeg projekta za narednu godinu: https://testmace.com/roadmap.

Vaše povratne informacije omogućit će nam da se bolje snalazimo u obilju značajki, a vaša podrška daje nam snagu i povjerenje da radimo pravu stvar. Slučajno je danas važan dan za naš projekt - dan kada je TestMace objavljen Potraga za proizvodima. Molim vas podržite naš projekt, jako nam je važan. Štoviše, danas je na našoj PH stranici primamljiva ponuda i to ograničena

Izvor: www.habr.com

Dodajte komentar