TestMace. Fillim i shpejtë

TestMace. Fillim i shpejtë

Përshëndetje të gjithëve. Ne po dalim ngadalë nga hije dhe vazhdojmë serinë e artikujve rreth produktit tonë. Pas të kaluarën artikullit përmbledhës morëm shumë komente (kryesisht pozitive), propozime dhe raportime për defekte. Sot do të tregojmë TestMace në praktikë dhe ju do të mund të vlerësoni disa karakteristika të aplikacionit tonë. Për një imazh më të plotë, ju rekomandojmë të konsultoheni me dokumentacionin tonë në adresën http://docs-ru.testmace.com. Pra, le të nisim!

Instalimi

TĂ« fillojmĂ« me tĂ« zakonshmet. Aplikacioni Ă«shtĂ« i disponueshĂ«m dhe me tĂ« vĂ«rtetĂ« testi bĂ«het nĂ« tri platforma — Linux, Windows, MacOS. Ju mund tĂ« shkarkoni instaluesin pĂ«r sistemin operativ tĂ« interesit nga websajti ynĂ«. PĂ«r pĂ«rdoruesit e Linux-it ka mundĂ«sinĂ« e instalimit tĂ« paketĂ«s snap. ShpresojmĂ« tĂ« arrijmĂ« sĂ« shpejti tĂ« jemi tĂ« pranishĂ«m edhe nĂ« Microsoft Store dhe App Store (por a Ă«shtĂ« e nevojshme? ÇfarĂ« mendoni?).

Scenari i eksperimentit

Kemi zgjedhur skenarin e mëposhtëm si subjekt:

  • do tĂ« hyjmĂ«: pĂ«rdoruesi — admin, fjalĂ«kalimi — password
  • do tĂ« shtojmĂ« njĂ« regjistrim tĂ« ri
  • do tĂ« verifikojmĂ« shtimin e saktĂ« tĂ« regjistrimit

Do ta testojmë në https://testmace-quick-start.herokuapp.com/. Ky është një json-server, i përsosur për testimin e aplikacioneve të tilla. Ne vetëm kemi shtuar autentifikimin me token në të gjitha ruterat e json-server dhe kemi krijuar metodën e login për të marrë këtë token. Do të ecim hap pas hapi, duke përmirësuar gradualisht projektin tonë.

Krijimi i projektit dhe përpjekja për të krijuar një entitet pa autorizim

Së pari, le të krijojmë një projekt të ri (File->New project). Nëse po e ndizni aplikacionin për herë të parë, projekti i ri do të hapet automatikisht. Le të fillojmë me një kërkesë për të krijuar një regjistrim të ri (ndoshta krijimi i regjistrimeve është i disponueshëm pa autorizim). Zgjidhni në menunë kontekstuale Project pikët Add node -> RequestStep. Si emër të nodit do të caktojmë create-post. Si rezultat, në pemë do të krijohet një nod i ri dhe do të hapet skeda e këtij nodi. Le të caktojmë parametrat e mëposhtëm të kërkesës:

  • Lloji i kĂ«rkesĂ«s: POST
  • url: https://testmace-quick-start.herokuapp.com/posts
  • Trupi i kĂ«rkesĂ«s: json me vlerĂ«n {"title": "New testmace quick start post"}
    Nëse e keni bërë gjithçka siç duhet, ndërfaqja do të duket siçvijon:

TestMace. Fillim i shpejtë

MegjithatĂ«, nĂ«se pĂ«rpiqemi tĂ« realizojmĂ« kĂ«rkesĂ«n, serveri do tĂ« kthejĂ« kodin 401 dhe pa autorizim, nuk do tĂ« kemi mundĂ«si tĂ« punojmĂ« nĂ« kĂ«tĂ« server. ÇfarĂ« do tĂ« thoshim, e pritur).

Shtoni kërkesën për autorizim

Siç u tha më parë, ne kemi POST endpoint /login, i cili pranon si trup të kërkesës json të këtij lloji: {"username": "<username>", "password": "<password>"}, ku username dhe password (po ashtu, nga hyrja e mësipërme) kanë vlera admin dhe password përkatësisht. Në përgjigje, ky endpoint kthen json të këtij lloji {"token": "<token>}".Ne do ta përdorim për autorizim. Le të krijojmë RequestStep një nod me emrin kyçni, si prind do të shërbejë Project nodi. Me anë të drag-and-drop, lëvizni këtë nod në pemë lart se nodi create-post. Le të caktojmë parametrat e mëposhtëm për kërkesën e sapokrijuar:

Do ta realizojmë kërkesën dhe do të marrim një kod dyqind me tokenin në përgjigje. Kështu:

TestMace. Fillim i shpejtë

Rrëfimi: heqja e dublikimeve të domenit

Derisa kĂ«rkesat nuk lidhen nĂ« njĂ« skenar tĂ« vetĂ«m. Por kjo nuk Ă«shtĂ« e vetmja e metĂ«. NĂ«se shikoni me kujdes, do tĂ« vini re se tĂ« paktĂ«n domeni Ă«shtĂ« i dublikuar nĂ« tĂ« dyja kĂ«rkesat. E keqe. ËshtĂ« koha pĂ«r tĂ« rifaktorizuar kĂ«tĂ« pjesĂ« tĂ« skenarit tĂ« ardhshĂ«m dhe ne do tĂ« ndihmojmĂ« me kĂ«tĂ« variablat.

NĂ« njĂ« kuptim tĂ« parĂ«, variablat kanĂ« tĂ« njĂ«jtin funksion si nĂ« instrumente dhe gjuhĂ« tĂ« tjera programuese — eliminimin e dublimeve, rritjen e lexueshmĂ«risĂ«, etj. MĂ« shumĂ« pĂ«r variablat mund tĂ« lexoni nĂ« dokumentacionin tonĂ«. NĂ« kĂ«tĂ« rast na nevojiten variablat e pĂ«rdoruesve.

Le të përcaktojmë në nivelin e nodit të Projektit variablën domain me vlerë https://testmace-quick-start.herokuapp.com. Për këtë është e nevojshme

  • TĂ« hapim skedĂ«n e kĂ«tij nodi dhe tĂ« klikojmĂ« nĂ« ikonĂ«n e kalkulatorit nĂ« tĂ« djathte lart
  • TĂ« klikojmĂ« nĂ« + ADD VARIABLE
  • TĂ« shkruajmĂ« emrin dhe vlerĂ«n e variablĂ«s
    Në rastin tonë, dialogu me variablën e shtuar do të duket si më poshtë:

TestMace. Fillim i shpejtë

Mirë. Tani, për shkak të trashëgimisë, ne mund ta përdorim këtë variabël në pasardhësit e çdo niveli të thellësisë. Në rastin tonë, këto janë nodet kyçni dhe create-post. Për të përdorur variablën në fushën e tekstit, duhet të shkruajmë ${<variable_name>}. P.sh., url për login shndërrohet në ${domain}/login, përkatësisht për create-post nodi url do të duket si ${domain}/posts.

Në këtë mënyrë, duke u udhëhequr nga principi DRY, përmirësuam pak skenarin.

Ruajmë tokenin në variabël

Pasi po flasim pĂ«r variablat, le tĂ« zgjerojmĂ« pak kĂ«tĂ« temĂ«. Deri nĂ« kĂ«tĂ« moment, nĂ« rastin e login-it tĂ« suksesshĂ«m, ne marrim nga serveri njĂ« token autentikimi, tĂ« cilin do ta kemi nevojĂ« pĂ«r kĂ«rkesat e ardhshme. Le tĂ« ruajmĂ« kĂ«tĂ« token nĂ« njĂ« variabĂ«l. Duke qenĂ« se vlera e variablĂ«s do tĂ« pĂ«rcaktohet gjatĂ« ekzekutimit tĂ« skenarit, do tĂ« pĂ«rdorim pĂ«r kĂ«tĂ« njĂ« mekanizĂ«m tĂ« veçantĂ« — variablat dinamike.

Së pari, do të realizojmë kërkesën për login. Në skedën Parsed përgjigjen, vendosni kursorin mbi tokenin dhe në menunë kontekstuale (e cila thirret duke klikuar me butonin e djathtë të miut ose duke shtypur butonin 
) zgjidhni pikën është ideal. Le të shqyrtojmë së bashku se si funksionon. Në skedën e përgjigjes të nyjës id në menunë e kontekstit, duhet të zgjidhni opsionin. Një dialog do të shfaqet me fushat e mëposhtme:

  • Path — cili pjesĂ« e pĂ«rgjigjes merret (nĂ« rastin tonĂ« kjo Ă«shtĂ« body.token)
  • Vlera aktuale — cila vlerĂ« ndodhet nĂ« rrugĂ«n Path (nĂ« rastin tonĂ«, kjo Ă«shtĂ« vlera e tokenit)
  • — nĂ« cilin nga pararendĂ«sit do tĂ« krijojmĂ« variablĂ«n dinamike. Do tĂ« zgjidhim — emri i variablĂ«s ku Vlera aktuale do tĂ« ruhet. NĂ« rastin tonĂ«, kjo do tĂ« jetĂ« token
  • Node — nĂ« cilin nga paraardhĂ«sit do tĂ« krijohet variabla — nĂ« cilin nga pararendĂ«sit do tĂ« krijojmĂ« variablĂ«n dinamike. Do tĂ« zgjidhim. Do tĂ« zgjedhim Project

Dialogu i plotësuar duket si më poshtë:

TestMace. Fillim i shpejtë

Tani, çdo herë që ekzekutohet nodi kyçni variabla dinamike token do të përditësohet me vlerën e re nga përgjigjja. Dhe kjo variabla do të ruhet në Project nodi dhe përmes trashëgimisë do të jetë e disponueshme për pasardhësit.

Për t'u referuar variablave dinamikë, është e nevojshme të përdoret variabla e integruar $dynamicVar. Për shembull, për të arritur në token e ruajtur, është e nevojshme të thërrasësh ${$dynamicVar.token}.

Përshtatni tokenin e autorizimit në kërkesa

Në hapat e mëparshëm, ne morëm tokenin e autorizimit dhe gjithçka që duhet të bëjmë është të shtojmë një kokë Authorization me vlerën Bearer në të gjitha kërkesat që kërkojnë autorizim, duke përfshirë dhe në create-post. Për këtë ka disa mënyra:

  1. Të kopjoni manualisht tokenin dhe të shtoni kokën e autorizimit në kërkesat që ju interesojnë. Ky është një mënyrë funksionale, por përdorimi i saj kufizohet vetëm në kërkesat e tipit 'bëra dhe e hodha'. Nuk do të funksionojë për ekzekutime të shumta të skenarëve
  2. Të përdorni funksionalitetin OAuth 2.0 është zhvilluar vetëm për.
  3. Përdorni kokat standarde

Përdorimi i mënyrës së dytë duket i qartë, megjithatë në kontekstin e këtij artikulli ky qasje
 nuk është interesante. Po të jemi të sinqertë: mekanizmat e autorizimit plus-minus janë të njohura për ju nga mjetet e tjera (edhe pse kemi gjëra si trashëgimia e autorizimeve) dhe është e vështirë të ngjallin pyetje.

Një tjetër gjë janë kokat standarde! Nëse duhet ta thjeshtëzojmë, kokat standarde janë kokat HTTP të trashëguara nga paraardhësit, të cilat në mënyrë standarde shtohen në kërkesë nëse nuk janë shkyçur shprehimisht. Me këtë funksionalitet, për shembull, mund të realizoni një autorizim të personalizuar ose thjesht të evitoni shumimin në skenarë. Do ta aplikojmë këtë funksionalitet për të përfshirë tokenin në kokat.

Kur ne paraprakisht ruajmë tokenin në variablën dinamike $dynamicVar.token në nivelin e nodit Project. Na mbetet të bëjmë si më poshtë:

  1. Të përcaktojmë kokën standarde Authorization me vlerë Bearer ${$dynamicVar.token} në nivelin e nodit Project. Për këtë, në ndërfaqen e nodit Project është e nevojshme të hapim dialogun me kokat standarde (butoni Headers në këndin e sipërm të djathtë) dhe të shtojmë kokën përkatëse. Dialogu me vlerat e plota do të duket si më poshtë:
    TestMace. Fillim i shpejtë
  2. Çaktivizoni kĂ«tĂ« kokĂ« nga kĂ«rkesa e login. Kjo Ă«shtĂ« e qartĂ«: nĂ« momentin e login-it nuk e kemi ende tokenin dhe me kĂ«tĂ« kĂ«rkesĂ« do ta vendosim atĂ«. Prandaj nĂ« ndĂ«rfaqen e kĂ«rkesĂ«s sĂ« login nĂ« skedĂ«n Headers nĂ« zonĂ«n Inherited tĂ« heqim markĂ«n nga koka e autorizimit.

Kjo është gjithçka. Tani, koka e autorizimit do të shtohet në të gjitha kërkesat që janë pasardhës të nodit Project, përveç nodit të login-it. Kështu, në këtë fazë kemi një skenar të gatshëm dhe na mbetet vetëm ta fillojmë. Mund ta fillojmë skenarin duke zgjedhur pikën Ekzekuto në menunë kontekstuale të nodit Project.

Kontrolloni saktësinë e krijimit të postit

Në këtë fazë skenari ynë di të bëjë login dhe, duke përdorur tokenin e autorizimit, të krijojë një post. Megjithatë, na nevojitet të sigurohemi që posti i ri të ketë emrin korrekt. Pra, në thelb, na mbetet të bëjmë sa vijon:

  • TĂ« dĂ«rgojmĂ« njĂ« kĂ«rkesĂ« pĂ«r tĂ« marrĂ« postin sipas id,
  • TĂ« kontrollojmĂ« qĂ« emri, qĂ« ka ardhur nga serveri, Ă«shtĂ« nĂ« pĂ«rputhje me emrin e kaluar gjatĂ« krijimit tĂ« postit

Le t'i hedhim një sy hapit të parë. Duke u bazuar në atë që id përcaktohet gjatë ekzekutimit të skriptit, duhet të krijojmë një variablë dinamike (të quajtur postId) nga nodi create-post në nivelin e nodit Project. Si ta bëjmë këtë, ne e dimë tashmë, është e mjaftueshme të citojmë seksionin Ruajmë tokenin në variabël. Na mbetet vetëm të krijojmë një kërkesë për të marrë postin sipas këtij id. Për këtë, le të krijojmë një RequestStep get-post me parametrat e mëposhtëm:

  • Tipi i kĂ«rkesĂ«s: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

PĂ«r realizimin e hapit tĂ« dytĂ«, na nevojitet tĂ« njihemi me Assertion nodi. Nodi Assertion Ă«shtĂ« njĂ« nodĂ« qĂ« lejon tĂ« shkruhen verifikime pĂ«r kĂ«rkesa tĂ« caktuara. Çdo nodi Assertion mund tĂ« pĂ«rmbajĂ« disa pohime (kontrollesh). MĂ« shumĂ« rreth tĂ« gjitha llojeve tĂ« pohimeve do tĂ« mund tĂ« lexoni nĂ« dokumentacion. Ne do ta pĂ«rdorim Compare pohimin me operatorin equal. Ka disa mĂ«nyra pĂ«r tĂ« krijuar pohime:

  1. Më e gjatë. Nga menuja kontekstuale të nodit RequestStep, krijoni një nodë Assertion manualisht. Në nodin e krijuar Assertion, shtoni pohimin që ju intereson dhe plotësoni fushat.
  2. Shpejt. Krijoni një nod të Assertsionit së bashku me assertion-in nga përgjigja e nodit RequestStep përmes menusë kontekstuale

Të dyta përdorim. Kështu do të duket për rastin tonë.

TestMace. Fillim i shpejtë

Për ata që nuk e kuptuan, këtu ndodh për siguiente:

  1. Bëni një kërkesë në nodin get-post
  2. Në skedën Parsed të përgjigjes, thoni menusë kontekstuale dhe zgjidhni Krijo assertion -> Compare -> Baraz

Urime, krijuam testin tonë të parë! E thjeshtë, a nuk është e vërtetë? Tani mund të ekzekutoni skenarin plotësisht dhe të shijoni rezultatin. Ka mbetur për të refaktorizuar pak dhe nxjerrë title në një variabël të veçantë. Por ne do ta lëmë këtë për ju si detyrë shtëpie)

Përfundimi

Në këtë udhëzues ne krijuam një skenar të plotë dhe gjithashtu bëmë një përmbledhje të disa veçorive të produktit tonë. Sigurisht, ne nuk e shfrytëzuam të gjithë funksionalitetin dhe në artikujt e ardhshëm do të bëjmë një përmbledhje të detajuar të mundësive të TestMace. Qëndroni në kontroll të azhurnimeve!

P.S. Për ata që e kanë të vështirë të riprodhojnë të gjitha hapat, ne kemi vendosur me mirësjellje repo me projektin nga artikulli. Mund ta hapni me File -> Hap projektin dhe zgjidhni dosjen Projekt.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster