Sveiki visiem. MÄs lÄnÄm izkÄpjam no Änas un turpinÄm rakstu sÄriju par mÅ«su produktu. PÄc iepriekÅ”ÄjÄ pÄrskata rakstu, saÅÄmÄm daudz atsauksmju (galvenokÄrt pozitÄ«vas), ieteikumu un kļūdu ziÅojumu. Å odien mÄs parÄdÄ«sim TestMace darbÄ«bÄ, un jÅ«s varÄsit novÄrtÄt dažas mÅ«su lietojumprogrammas funkcijas. Lai iegÅ«tu pilnÄ«gÄku iegremdÄÅ”anu, iesaku skatÄ«t mÅ«su dokumentÄciju vietnÄ http://docs-ru.testmace.com. TÄtad, ejam!
UzstÄdÄ«Å”ana
SÄksim ar banalitÄti. AplikÄcija ir pieejama un faktiski testÄta uz trÄ«s platformÄm ā Linux, Windows, MacOS. JÅ«s varat lejupielÄdÄt instalÄÅ”anas programmu tai OS, no kuras jÅ«s interesÄ mÅ«su vietne. Linux lietotÄjiem ir iespÄjams instalÄt snap iepakojums. MÄs ļoti ceram, ka Microsoft Store un App Store drÄ«zumÄ tiks pie tÄ (Vai tas ir nepiecieÅ”ams? KÄ jÅ«s domÄjat?).
EksperimentÄls scenÄrijs
MÄs kÄ testa priekÅ”metu izvÄlÄjÄmies Å”Ädu standarta scenÄriju:
PieteikÅ”anÄs: lietotÄjs - admin, parole - parole
pievienot jaunu ierakstu
PÄrbaudÄ«sim, vai ieraksts ir pievienots pareizi
MÄs pÄrbaudÄ«sim tÄlÄk https://testmace-quick-start.herokuapp.com/. Tas ir normÄli json-serveris, lieliski piemÄrots Å”Ädu lietojumprogrammu testÄÅ”anai. MÄs tikko pievienojÄm pilnvarojumu ar pilnvaru visiem json-servera marÅ”rutiem un izveidojÄm pieteikÅ”anÄs metodi Ŕīs pilnvaras saÅemÅ”anai. MÄs virzÄ«simies uz priekÅ”u pakÄpeniski, pakÄpeniski uzlabojot savu projektu.
Projekta izveide un entītijas izveide bez atļaujas
Vispirms izveidosim jaunu projektu (fileja->Jauns projekts). Ja lietojumprogrammu palaižat pirmo reizi, automÄtiski tiks atvÄrts jauns projekts. Vispirms mÄÄ£inÄsim iesniegt pieprasÄ«jumu izveidot jaunu ierakstu (ja ierakstu izveide ir pieejama bez autorizÄcijas). Projekta mezgla konteksta izvÄlnÄ atlasiet vienumus Pievienot mezglu -> PieprasÄ«juma darbÄ«ba. Iestatiet mezgla nosaukumu uz izveidot-post. RezultÄtÄ kokÄ tiks izveidots jauns mezgls un tiks atvÄrta Ŕī mezgla cilne. IestatÄ«sim Å”Ädus pieprasÄ«juma parametrus:
PieprasÄ«juma pamatteksts: json ar vÄrtÄ«bu {"title": "New testmace quick start post"}
Ja visu izdarÄ«jÄt pareizi, interfeiss izskatÄ«sies Å”Ädi:
TaÄu, ja mÄÄ£inÄsim izpildÄ«t pieprasÄ«jumu, serveris atgriezÄ«s 401 kodu un bez autorizÄcijas mÄs Å”ajÄ serverÄ« neko nesaÅemsim. Nu, kopumÄ, kÄ gaidÄ«ts).
AutorizÄcijas pieprasÄ«juma pievienoÅ”ana
KÄ jau minÄts, mums ir POST galapunkts /login, kas izmanto json kÄ veidlapas pieprasÄ«juma pamattekstu: {"username": "<username>", "password": "<password>"}Kur username Šø password (atkal, no ievada rindkopas iepriekÅ”) ir nozÄ«mes admin Šø password attiecÄ«gi. Atbildot uz to, Å”is galapunkts atgriež json lÄ«dzÄ«gu {"token": "<token>"}. MÄs to izmantosim autorizÄcijai. Izveidosim PieprasÄ«juma darbÄ«ba mezgls ar nosaukumu PieslÄgties, darbosies kÄ sencis projekts mezgls Izmantojot vilkÅ”anu un nomeÅ”anu, pÄrvietojiet noteiktu mezglu kokÄ augstÄk par mezglu izveidot-post. Jaunizveidotajam pieprasÄ«jumam iestatÄ«sim Å”Ädus parametrus:
PieprasÄ«juma pamatteksts: json ar vÄrtÄ«bu {"username": "admin", "password": "password"}
IzpildÄ«sim pieprasÄ«jumu un atbildÄ saÅemsim divsimto kodu ar marÄ·ieri. Kaut kas tamlÄ«dzÄ«gs:
Refaktorings: domÄna dublÄÅ”anÄs noÅemÅ”ana
PagaidÄm pieprasÄ«jumi nav saistÄ«ti vienÄ skriptÄ. Bet tas nav vienÄ«gais trÅ«kums. Ja paskatÄs uzmanÄ«gi, jÅ«s ievÄrosiet, ka vismaz domÄns ir dublÄts abos pieprasÄ«jumos. Nav labi. Ir pienÄcis laiks pÄrveidot Å”o nÄkotnes skripta daļu, un mainÄ«gie mums to palÄ«dzÄs.
PirmkÄrt, mainÄ«gie pilda tÄdu paÅ”u lomu kÄ citos lÄ«dzÄ«gos rÄ«kos un programmÄÅ”anas valodÄs - novÄrÅ” dublÄÅ”anos, uzlabo lasÄmÄ«bu utt. VairÄk par mainÄ«gajiem varat lasÄ«t sadaÄ¼Ä mÅ«su dokumentÄcija. Å ajÄ gadÄ«jumÄ mums bÅ«s nepiecieÅ”ami lietotÄja mainÄ«gie.
DefinÄsim mainÄ«go projekta mezgla lÄ«menÄ« domain ar nozÄ«mi https://testmace-quick-start.herokuapp.com. Å im nolÅ«kam tas ir nepiecieÅ”ams
Atveriet cilni ar Å”o mezglu un noklikŔķiniet uz kalkulatora ikonas augÅ”ÄjÄ labajÄ stÅ«rÄ«
KlikŔķiniet uz + PIEVIENOT MAINÄŖGO
Ievadiet mainÄ«gÄ nosaukumu un vÄrtÄ«bu
MÅ«su gadÄ«jumÄ dialoglodziÅÅ” ar pievienoto mainÄ«go izskatÄ«sies Å”Ädi:
LABI. Tagad mantojuma dÄļ mÄs varam izmantot Å”o mainÄ«go jebkura ligzdoÅ”anas lÄ«meÅa pÄcnÄcÄjiem. MÅ«su gadÄ«jumÄ tie ir mezgli PieslÄgties Šø izveidot-post. Lai teksta laukÄ izmantotu mainÄ«go, jums ir jÄraksta ${<variable_name>}. PiemÄram, pieteikÅ”anÄs URL tiek pÄrveidots par ${domain}/login, attiecÄ«gi par izveidot-post mezgla URL izskatÄ«sies ${domain}/posts.
TÄdÄjÄdi, vadoties pÄc DRY principa, esam nedaudz uzlabojuÅ”i scenÄriju.
SaglabÄjiet marÄ·ieri mainÄ«gajÄ
TÄ kÄ mÄs runÄjam par mainÄ«gajiem, nedaudz izvÄrsÄ«sim Å”o tÄmu. Å obrÄ«d veiksmÄ«gas pieteikÅ”anÄs gadÄ«jumÄ no servera saÅemam autorizÄcijas marÄ·ieri, kas mums bÅ«s nepiecieÅ”ams turpmÄkajos pieprasÄ«jumos. SaglabÄsim Å”o marÄ·ieri mainÄ«gajÄ. Jo mainÄ«gÄ vÄrtÄ«ba tiks noteikta skripta izpildes laikÄ, mÄs izmantojam Ä«paÅ”u mehÄnismu - dinamiskie mainÄ«gie.
Vispirms izpildÄ«sim pieteikÅ”anÄs pieprasÄ«jumu. CilnÄ ParsÄts atbildiet, pÄrvietojiet kursoru virs marÄ·iera un konteksta izvÄlnÄ (kas tiek izsaukta vai nu ar peles labo pogu, vai noklikŔķinot uz pogas ...) atlasiet vienumu PieŔķirt mainÄ«gajam. Tiks parÄdÄ«ts dialoglodziÅÅ” ar Å”Ädiem laukiem:
taka ā kura atbildes daļa ir Åemta (mÅ«su gadÄ«jumÄ tÄ ir body.token)
PaÅ”reizÄjÄ vÄrtÄ«ba ā kÄda vÄrtÄ«ba atrodas ceÄ¼Ä (mÅ«su gadÄ«jumÄ tÄ ir simboliskÄ vÄrtÄ«ba)
MainÄ«gais nosaukums ā mainÄ«gÄ lieluma nosaukums kur PaÅ”reizÄjÄ vÄrtÄ«ba tiks saglabÄts. MÅ«su gadÄ«jumÄ tÄ bÅ«s token
mezgls ā kurÄ no senÄiem mainÄ«gais tiks izveidots MainÄ«gais nosaukums. AtlasÄ«sim projektu
Pabeigtais dialoglodziÅÅ” izskatÄs Å”Ädi:
Tagad katru reizi, kad mezgls tiek izpildÄ«ts PieslÄgties dinamiskais mainÄ«gais token tiks atjauninÄts ar jauno vÄrtÄ«bu no atbildes. Un Å”is mainÄ«gais tiks saglabÄts projekts mezgls un, pateicoties mantojumam, bÅ«s pieejams pÄcnÄcÄjiem.
Lai piekļūtu dinamiskajiem mainÄ«gajiem, ir jÄizmanto iebÅ«vÄtais mainÄ«gais$dynamicVar. PiemÄram, lai piekļūtu saglabÄtajam marÄ·ierim, jums ir jÄzvana ${$dynamicVar.token}.
IepriekÅ”ÄjÄs darbÄ«bÄs mÄs saÅÄmÄm autorizÄcijas pilnvaru, un viss, kas mums jÄdara, ir pievienot galveni Authorization ar nozÄ«mi Bearer <tokenValue> visos pieprasÄ«jumos, kuriem nepiecieÅ”ama autorizÄcija, tostarp izveidot-post. Ir vairÄki veidi, kÄ to izdarÄ«t:
ManuÄli kopÄjiet pilnvaru un pievienojiet interesÄjoÅ”o pieprasÄ«jumu autorizÄcijas galveni. Metode darbojas, taÄu tÄs izmantoÅ”ana ir ierobežota tikai ar āizgatavota un izmestaā veida pieprasÄ«jumiem. Nav piemÄrots atkÄrtotai skriptu izpildei
OtrÄs metodes izmantoÅ”ana Ŕķiet paÅ”saprotama, taÄu Ŕī raksta kontekstÄ Å”Ä« pieeja ir... neinteresanta. Nu, tieÅ”Äm: autorizÄcijas mehÄnisms plus mÄ«nuss jums ir pazÄ«stams no citiem rÄ«kiem (pat ja mums ir tÄdas lietas kÄ autorizÄcijas mantojums), un tas, visticamÄk, neradÄ«s jautÄjumus.
VÄl viena lieta ir noklusÄjuma galvenes! ÄŖsumÄ, noklusÄjuma galvenes ir mantotas HTTP galvenes, kas tiek pievienotas pieprasÄ«jumam pÄc noklusÄjuma, ja vien tÄs nav skaidri atspÄjotas. Izmantojot Å”o funkcionalitÄti, varat, piemÄram, ieviest pielÄgotu autorizÄciju vai vienkÄrÅ”i atbrÄ«voties no skriptu dublÄÅ”anÄs. Izmantosim Å”o funkciju, lai galvenÄs nodotu marÄ·ieri.
IepriekÅ” mÄs apdomÄ«gi saglabÄjÄm marÄ·ieri dinamiskÄ mainÄ«gajÄ $dynamicVar.token projekta mezgla lÄ«menÄ«. Atliek tikai veikt Å”Ädas darbÄ«bas:
DefinÄjiet noklusÄjuma nosaukumu Authorization ar nozÄ«mi Bearer ${$dynamicVar.token} projekta mezgla lÄ«menÄ«. Lai to izdarÄ«tu, mezgla projekta saskarnÄ ir jÄatver dialoglodziÅÅ” ar noklusÄjuma virsrakstiem (poga Galvenes augÅ”ÄjÄ labajÄ stÅ«rÄ«) un pievienojiet atbilstoÅ”u nosaukumu. Dialogs ar aizpildÄ«tajÄm vÄrtÄ«bÄm izskatÄ«sies Å”Ädi:
AtspÄjojiet Å”o pieteikÅ”anÄs pieprasÄ«juma galveni. Tas ir saprotams: pieteikÅ”anÄs brÄ«dÄ« mums vÄl nav marÄ·iera, un mÄs to instalÄsim ar Å”o pieprasÄ«jumu. TÄpÄc pieprasÄ«juma pieteikÅ”anÄs saskarnÄ cilnÄ Galvenes apgabalÄ Mantots noÅemiet atzÄ«mi no galvenes AutorizÄcija.
Tas ir viss. Tagad autorizÄcijas galvene tiks pievienota visiem pieprasÄ«jumiem, kas ir projekta mezgla atvasinÄjumi, izÅemot pieteikÅ”anÄs mezglu. IzrÄdÄs, ka Å”ajÄ posmÄ mums jau ir gatavs skripts un atliek tikai to palaist. Varat palaist skriptu, atlasot skrÄjiens projekta mezgla konteksta izvÄlnÄ.
ZiÅas izveides pareizÄ«bas pÄrbaude
Å ajÄ posmÄ mÅ«su skripts var pieteikties un, izmantojot autorizÄcijas marÄ·ieri, izveidot ziÅu. TomÄr mums ir jÄpÄrliecinÄs, vai jaunizveidotajai ziÅai ir pareizs nosaukums. Tas ir, bÅ«tÄ«bÄ atliek tikai veikt Å”Ädas darbÄ«bas:
NosÅ«tiet pieprasÄ«jumu saÅemt pastu pÄc id,
PÄrbaudiet, vai no servera saÅemtais nosaukums atbilst nosaukumam, kas tika nosÅ«tÄ«ts, veidojot ziÅu
ApskatÄ«sim pirmo soli. TÄ kÄ id vÄrtÄ«ba tiek noteikta skripta izpildes laikÄ, jums ir jÄizveido dinamiskais mainÄ«gais (sauksim to postId) no mezgla izveidot-post projekta mezgla lÄ«menÄ«. MÄs jau zinÄm, kÄ to izdarÄ«t, vienkÄrÅ”i skatiet sadaļu SaglabÄjiet marÄ·ieri mainÄ«gajÄ. Atliek tikai izveidot pieprasÄ«jumu, lai saÅemtu ziÅu, izmantojot Å”o id. Lai to izdarÄ«tu, izveidosim RequestStep get-post ar Å”Ädiem parametriem:
Pieprasījuma veids: GET
URL: ${domain}/posts/${$dynamicVar.postId}
Lai Ä«stenotu otro soli, mums jÄiepazÄ«stas ar Apgalvojums mezgls. Apgalvojuma mezgls ir mezgls, kas ļauj rakstÄ«t pÄrbaudes konkrÄtiem pieprasÄ«jumiem. Katrs apgalvojuma mezgls var saturÄt vairÄkus apgalvojumus (pÄrbaudes). VairÄk par visu veidu apgalvojumiem varat lasÄ«t mÅ«su vietnÄ dokumentÄcija. MÄs izmantosim Compare apgalvojums ar operatoru equal. Ir vairÄki veidi, kÄ izveidot apgalvojumus:
Gari. ManuÄli izveidojiet Assertion mezglu no RequestStep mezgla konteksta izvÄlnes. IzveidotajÄ Apgalvojuma mezglÄ pievienojiet intereÅ”u apgalvojumu un aizpildiet laukus.
Ätri. Izveidojiet Assertion mezglu kopÄ ar apgalvojumu no RequestStep mezgla atbildes, izmantojot konteksta izvÄlni
Izmantosim otro metodi. LÅ«k, kÄ tas izskatÄ«sies mÅ«su gadÄ«jumÄ.
Apsveicam, esam izveidojuÅ”i savu pirmo testu! VienkÄrÅ”i, vai ne? Tagad varat pilnÄ«bÄ palaist skriptu un baudÄ«t rezultÄtu. Atliek tikai to nedaudz pÄrveidot un izÅemt title atseviÅ”Ä·Ä mainÄ«gajÄ. Bet mÄs to atstÄsim jums kÄ mÄjasdarbu)
SecinÄjums
Å ajÄ rokasgrÄmatÄ mÄs izveidojÄm pilnvÄrtÄ«gu scenÄriju un tajÄ paÅ”Ä laikÄ pÄrskatÄ«jÄm dažas mÅ«su produkta funkcijas. Protams, mÄs neizmantojÄm visu funkcionalitÄti un turpmÄkajos rakstos sniegsim detalizÄtu pÄrskatu par TestMace iespÄjÄm. Sekojiet lÄ«dzi!
PS Tiem, kam ir slinkums reproducÄt visus soļus, esam laipni ierakstÄ«juÅ”i krÄtuve ar projektu no raksta. JÅ«s varat to atvÄrt ar fileja -> AtvÄrts projekts un atlasiet mapi Projekts.