Miks TestMace on parem kui Postman?

Miks TestMace on parem kui Postman?

Tere kõigile, olgu TestMace! Võib-olla teavad paljud meist meie eelmine artiklid. Äsja liitunutele: töötame välja IDE-d, et töötada koos TestMace API-ga. TestMace'i võrdlemisel konkureerivate toodetega on kõige sagedamini küsitav küsimus: "Mille poolest erinete Postmanist?" Otsustasime, et on aeg anda sellele küsimusele üksikasjalik vastus. Allpool oleme välja toonud oma eelised võrreldes Kirjakandja.

Jagamine sõlmedeks

Kui töötate Postmaniga, siis teate, et päringu liides sisaldab kõiki vajalikke funktsioone. Seal on skriptid, testid ja tegelikult ka taotlused. See muudab algajatele lihtsamaks, kuid suurte stsenaariumide korral pole see lähenemisviis paindlik. Mida teha, kui soovite luua mitu päringut ja neid koondada? Mida teha, kui soovite käivitada skripti ilma päringuta või mitut loogiliselt eraldatud skripti järjest? Lõppude lõpuks oleks hea mõte eraldada testid tavalistest utiliidi skriptidest. Lisaks ei ole lähenemine "lisa kõik funktsioonid ühte sõlme" skaleeritav - liides muutub kiiresti ülekoormatuks.

TestMace jagab algselt kõik funktsioonid erinevat tüüpi sõlmedeks. Kas soovite esitada taotluse? See on sulle taotluse samm sõlm Kas soovite stsenaariumi kirjutada? See on sulle käsikiri sõlm Kas vajate teste? Palun - Väide sõlm Oh jah, sa võid ikka kogu selle asja sisse mässida kausta sõlm Ja seda kõike saab hõlpsasti omavahel kombineerida. Selline lähenemine pole mitte ainult väga paindlik, vaid võimaldab ühtse vastutuse põhimõttest lähtuvalt kasutada ainult seda, mida hetkel tõeliselt vaja on. Miks ma vajan skripte ja teste, kui tahan lihtsalt päringu esitada?

Inimloetav projektivorming

TestMace'i ja Postmani vahel on kontseptuaalne erinevus nende salvestamise viisis. Postmanis salvestatakse kõik päringud kuhugi kohalikku salvestusruumi. Kui taotlusi on vaja jagada mitme kasutaja vahel, peate kasutama sisseehitatud sünkroonimist. Tegelikult on see üldtunnustatud lähenemisviis, kuid mitte ilma puudusteta. Aga andmete turvalisus? Lõppude lõpuks ei pruugi mõne ettevõtte poliitika lubada andmete salvestamist kolmandate isikutega. Siiski arvame, et TestMace'il on midagi paremat pakkuda! Ja selle täiustuse nimi on "inimloetav projektivorming".

Alustame sellest, et TestMace'is on põhimõtteliselt olemas "projekt" olem. Ja rakendus töötati algselt välja, pidades silmas projektide salvestamist versioonihaldussüsteemidesse: projektipuu projitseeritakse peaaegu üks-ühele failistruktuurile, salvestusvorminguna kasutatakse yamli (ilma täiendavate sulgude ja komadeta) ning iga sõlme failiesitlust kirjeldatakse üksikasjalikult kommentaaridega dokumentatsioonis. Kuid enamikul juhtudel te sinna ei vaata – kõigil väljanimedel on loogilised nimed.

Mida see kasutajale annab? See võimaldab muuta meeskonna töövoogu väga paindlikult, kasutades tuttavaid lähenemisviise. Näiteks saavad arendajad salvestada projekti taustaprogrammiga samasse hoidlasse. Filiaalides saab arendaja lisaks koodibaasi enda muutmisele parandada olemasolevaid päringuskripte ja teste. Pärast hoidlas muudatuste tegemist (git, svn, mercurial – mis iganes teile meeldib) käivitab CI (teie lemmik, mitte kellegi poolt peale surutud) meie konsooliutiliidi testmace-cli, ja pärast täitmist saadud aruanne (näiteks junit-vormingus, mida toetab ka testmace-cli) saadetakse vastavasse süsteemi. Ja ülalmainitud turvaprobleem pole enam probleem.

Nagu näete, ei kehtesta TestMace oma ökosüsteemi ja paradigmat. Selle asemel sobib see hõlpsasti väljakujunenud protsessidesse.

Dünaamilised muutujad

TestMace järgib koodivaba kontseptsiooni: kui probleemi saab lahendada ilma koodi kasutamata, püüame seda võimalust pakkuda. Muutujatega töötamine on täpselt selline funktsionaalsus, kus enamikul juhtudel saab ilma programmeerimiseta hakkama.

Näide: saime serverilt vastuse ja tahame osa vastusest muutujasse salvestada. Postimehes kirjutaksime testskriptis (mis on iseenesest kummaline) midagi sellist:

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

Kuid meie arvates tundub sellise lihtsa ja sageli kasutatava stsenaariumi jaoks stsenaariumi kirjutamine üleliigne. Seetõttu on TestMace'is võimalik graafilise liidese abil määrata osa vastusest muutujale. Vaadake, kui lihtne see on:

Miks TestMace on parem kui Postman?

Ja nüüd värskendatakse seda dünaamilist muutujat iga taotluse korral. Kuid võite vastu vaielda, väites, et Postimehe lähenemine on paindlikum ja võimaldab teil mitte ainult ülesandeid teha, vaid ka eeltöötlust teha. Eelmise näite muutmiseks tehke järgmist.

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

Noh, selleks on TestMace käsikiri sõlm, mis katab selle stsenaariumi. Eelmise, kuid TestMace'i poolt juba käivitatud juhtumi reprodutseerimiseks peate päringu järgi looma skriptisõlme ja kasutama skriptina järgmist koodi:

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

Nagu näete, toimis sõlmede koostis ka siin hästi. Ja sellisel ülalkirjeldatud lihtsal juhul saate lihtsalt avaldise määrata ${crypto.MD5($response.data)} GUI kaudu loodud muutuja!

Testide loomine GUI kaudu

Postman võimaldab luua teste skripte kirjutades (Postimehe puhul on selleks JavaScript). Sellel lähenemisel on palju eeliseid – peaaegu piiramatu paindlikkus, valmislahenduste kättesaadavus jne.

Tegelikkus on aga sageli selline (me pole sellised, elu on selline), et testijal pole programmeerimisoskusi, kuid ta tahaks praegu meeskonnale kasu tuua. Sellistel juhtudel võimaldab TestMace koodivaba kontseptsiooni järgides luua lihtsaid teste GUI kaudu ilma skripte kirjutamata. Siin näeb näiteks välja võrdõiguslikkuse väärtusi võrdleva testi loomise protsess:

Miks TestMace on parem kui Postman?

Testide loomine graafilises redaktoris ei välista aga võimalust testide kirjutamine koodis. Siin on kõik samad teegid nagu skriptisõlmes ja chai testide kirjutamiseks.

Tihti tekivad olukorrad, kui teatud päring või isegi terve skript tuleb projekti erinevates osades mitu korda täita. Selliste päringute näide võib olla kohandatud mitmeastmeline autoriseerimine, keskkonna soovitud olekusse viimine jne. Üldiselt, kui rääkida programmeerimiskeeltest, siis sooviksime funktsioone, mida saaks rakenduse erinevates osades uuesti kasutada. TestMace'is täidab seda funktsiooni link sõlm Seda on väga lihtne kasutada:
1) looge päring või skript
2) looge link tüüpi sõlm
3) määrake parameetrites link esimeses etapis loodud skriptile

Täpsemas versioonis saate määrata, millised skripti dünaamilised muutujad edastatakse lingi suhtes kõrgemale tasemele. Kõlab segane? Oletame, et lõime nimega kausta loo-postitus, mille sees sellele sõlmele on määratud dünaamiline muutuja postId. Nüüd lingisõlmes loo-postita-link saate selle muutuja selgesõnaliselt määrata postId määratud esivanemale loo-postita-link. Seda mehhanismi (taaskord programmeerimiskeeles) saab kasutada "funktsiooni" tulemuse tagastamiseks. Üldiselt on lahe, DRY on täies hoos ja jällegi ei saanud viga ühtegi koodirida.

Miks TestMace on parem kui Postman?

Mis puutub Postmani, siis on päringute taaskasutamiseks funktsioonitaotlus ripub alates 2015. aastast, ja tundub, et on isegi mõned vihjedet nad tegelevad selle probleemiga. Praegusel kujul on Postmanil muidugi võimalus muuta täitmise lõime, mis teoreetiliselt võimaldab tõenäoliselt sarnast käitumist rakendada, kuid see on pigem räpane häkkimine kui tõeliselt töötav lähenemine.

Muud erinevused

  • Suurem kontroll muutujate ulatuse üle. Väikseim ulatus, mille piires saab muutujat Postmanis määratleda, on kogumine. TestMace võimaldab teil määratleda muutujaid mis tahes päringu või kausta jaoks. Postman Share'is võimaldab kogu eksportida ainult kogusid, samas kui TestMace'is töötab jagamine kõigi sõlmede jaoks
  • TestMace toetab päritavad päised, mille saab vaikimisi asendada alampäringutega. Postimehel on midagi selle kohta: väljakutse, ja see on isegi suletud, kuid seda pakutakse lahendusena... kasutada skripte. TestMace'is on see kõik konfigureeritud GUI kaudu ja valikuliselt on võimalik teatud järeltulijate päritud päised keelata
  • Võta tagasi/Tee uuesti. Töötab mitte ainult sõlmede redigeerimisel, vaid ka teisaldamisel, kustutamisel, ümbernimetamisel ja muudel projekti struktuuri muutvatel toimingutel
  • Taotlustele lisatud failid muutuvad projekti osaks ja salvestatakse koos sellega, kuid erinevalt Postmanist on need ideaalselt sünkroonitud. (Jah, te ei pea enam iga käivitamisel faile käsitsi valima ja arhiivis olevatele kolleegidele edastama)

Funktsioonid, mis on juba teel

Me ei suutnud vastu panna kiusatusele kergitada saladuseloori järgmistel väljaannetel, eriti kui funktsionaalsus on väga maitsev ja on juba väljalaskeeelsel lihvimisel. Niisiis, kohtume.

Funktsioonid

Nagu teate, kasutab Postman väärtuste genereerimiseks nn dünaamilisi muutujaid. Nende nimekiri on muljetavaldav ja enamikku funktsioone kasutatakse võltsväärtuste genereerimiseks. Näiteks juhusliku meili loomiseks peate kirjutama:

{{$randomEmail}}

Kuna need on muutujad (ehkki dünaamilised), ei saa neid funktsioonidena kasutada: neid ei saa parameetritega määrata, mistõttu ei saa stringist räsi võtta.

Plaanime lisada TestMace'i "ausaid" funktsioone. Otse ${} sees on võimalik mitte ainult muutujale juurde pääseda, vaid ka funktsiooni kutsuda. Need. kui teil on vaja luua kurikuulsa võltsmeil, siis me lihtsalt kirjutame

${faker.internet.email()}

Lisaks sellele, et see on funktsioon, märkate, et objektil on võimalik kutsuda meetodit. Ja suure lameda dünaamiliste muutujate loendi asemel on meil loogiliselt rühmitatud objektide komplekt.

Mis siis, kui tahame arvutada stringi räsi? Lihtsalt!

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

Märkate, et saate isegi muutujaid parameetritena edastada! Siinkohal võib uudishimulik lugeja kahtlustada, et midagi on valesti...

JavaScripti kasutamine väljendites

... Ja seda mõjuval põhjusel! Funktsioonide nõuete kujundamisel jõudsime järsku järeldusele, et avaldistesse tuleks kirjutada kehtiv javascript. Nii et nüüd võite vabalt kirjutada väljendeid nagu:

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

Ja seda kõike ilma skriptideta, otse sisestusväljadel!

Mis puutub Postmani, siis siin saab kasutada ainult muutujaid ja kui proovite kirjutada vähimatki avaldist, siis validaator kirub ja keeldub seda arvutamast.

Miks TestMace on parem kui Postman?

Täiustatud automaatne täitmine

Praegu on TestMace'il standardne automaatne täitmine, mis näeb välja järgmine:

Miks TestMace on parem kui Postman?

Siin on lisaks automaatse täitmise reale märgitud, mille alla see rida kuulub. See mehhanism töötab ainult sulgudega ${} ümbritsetud avaldistes.

Nagu näete, on lisatud visuaalsed markerid, mis näitavad muutuja tüüpi (näiteks string, arv, massiiv jne). Samuti saate muuta automaatse täitmise režiime (näiteks saate valida muutujate või päistega automaatse täitmise). Kuid isegi see pole kõige olulisem!

Esiteks töötab automaatne täitmine isegi avaldistes (kui võimalik). See näeb välja selline:

Miks TestMace on parem kui Postman?

Ja teiseks on automaatne täitmine nüüd saadaval skriptidena. Vaadake, kuidas see töötab!

Miks TestMace on parem kui Postman?

Seda funktsiooni pole mõtet Postmaniga võrrelda - seal on automaatne täitmine piiratud ainult muutujate, päiste ja nende väärtuste staatiliste loenditega (parandage mind, kui ma midagi unustasin). Skripte ei täideta automaatselt :)

Järeldus

Oktoobris möödus aasta meie tootearenduse algusest. Selle ajaga jõudsime palju asju ära teha ja mõnes mõttes konkurentidele järele jõuda. Kuid olgu kuidas on, meie eesmärk on luua tõeliselt mugav tööriist API-dega töötamiseks. Meil on veel palju tööd teha, siin on umbkaudne plaan meie järgmise aasta projekti arendamiseks: https://testmace.com/roadmap.

Teie tagasiside võimaldab meil funktsioonide rohkuses paremini liikuda ning teie tugi annab meile jõudu ja kindlustunnet, et teeme õiget asja. Juhtub nii, et täna on meie projekti jaoks tähtis päev – päev, mil TestMace avaldati ProductHunt. Palun toetage meie projekti, see on meile väga oluline. Pealegi on meie PH lehel täna ahvatlev pakkumine ja see on piiratud

Allikas: www.habr.com

Lisa kommentaar