{"id":37666,"date":"2019-10-31T22:18:55","date_gmt":"2019-10-31T19:18:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya\/"},"modified":"2019-10-31T22:18:55","modified_gmt":"2019-10-31T19:18:55","slug":"unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya","title":{"rendered":"Testet e nj\u00ebsive n\u00eb DB \u2014 si e b\u00ebjm\u00eb ne n\u00eb Sportmaster, pjesa e dyt\u00eb","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Pjesa e par\u00eb \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/464335\/\">k\u00ebtu<\/a><\/noindex>.<\/i><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/465047\/\"><img decoding=\"async\" alt=\"Testet e nj\u00ebsive n\u00eb DB \u2014 si e b\u00ebjm\u00eb ne n\u00eb Sportmaster, pjesa e dyt\u00eb\" src=\"\/wp-content\/uploads\/2019\/09\/b9fb8c934885abdf3ef928bfd75bdc2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Imagjinoni nj\u00eb situat\u00eb. Ju keni detyr\u00ebn p\u00ebr t\u00eb zhvilluar nj\u00eb funksionalitet t\u00eb ri. Keni disa pun\u00eb nga paraardh\u00ebsit tuaj. N\u00ebse supozojm\u00eb se nuk keni asnj\u00eb detyrim moral, si do t\u00eb vepronit?<\/p>\n<p>M\u00eb s\u00eb shpeshti, t\u00eb gjitha punimet e vjetra harrohen dhe gjith\u00e7ka fillon nga fillimi. Askush nuk e p\u00eblqen t\u00eb p\u00ebrzihet me kodin e t\u00eb tjer\u00ebve, dhe n\u00ebse ka koh\u00eb, p\u00ebrse t\u00eb mos merresh me krijimin e nj\u00eb sistemi t\u00eb ri? Ky \u00ebsht\u00eb nj\u00eb qasje tipike, dhe n\u00eb shum\u00eb aspekte \u00ebsht\u00eb e sakt\u00eb. Por n\u00eb projektin ton\u00eb nuk vepruam k\u00ebshtu. N\u00eb themel t\u00eb sistemit t\u00eb ardhsh\u00ebm t\u00eb testimit automatizuar, ne vendos\u00ebm punimet mbi testet unitare n\u00eb utPLSQL nga paraardh\u00ebsit tan\u00eb, dhe m\u00eb pas filluam t\u00eb punojm\u00eb n\u00eb disa drejtime paralele.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li><b>Rind\u00ebrtimi i testeve t\u00eb vjetra unitare.<\/b> Me rind\u00ebrtimin kuptohet p\u00ebrshtatja e testeve sipas gjendjes aktuale t\u00eb sistemit t\u00eb besnik\u00ebris\u00eb dhe p\u00ebrshtatja e testeve sipas standardeve t\u00eb utPLSQL. <\/li>\n<li><b>Zgjidhja e problemit t\u00eb kuptimit, \u00e7far\u00eb sakt\u00ebsisht, cilat metoda dhe procese, jan\u00eb mbuluar nga testet automatike. <\/b>Duhet ose ta mbani k\u00ebt\u00eb informacion n\u00eb mendje, ose t\u00eb nxirrni p\u00ebrfundime bazuar n\u00eb kodin e testeve automatike. Prandaj, ne vendos\u00ebm t\u00eb formulojm\u00eb nj\u00eb katalog. \u00c7do test automatik iu dha nj\u00eb kod unik mnemonik, kemi formuluar nj\u00eb p\u00ebrshkrim dhe kemi regjistruar konfigurimet (p.sh., n\u00eb cilat kushte duhet t\u00eb nis\u00eb, ose \u00e7far\u00eb duhet t\u00eb ndodh\u00eb n\u00ebse testi p\u00ebrfundonte me d\u00ebshtim). N\u00eb thelb, kemi plot\u00ebsuar metadat\u00ebn mbi testet automatike dhe i kemi vendosur k\u00ebto metadata n\u00eb tabelat standarde t\u00eb skem\u00ebs utPLSQL.<\/li>\n<li><b>Definimi i strategjis\u00eb s\u00eb zgjerimit, pra, p\u00ebrzgjedhja e funksionalitetit q\u00eb do t\u00eb kontrollohet me an\u00eb t\u00eb testeve automatike.<\/b> Ne vendos\u00ebm t\u00eb q\u00ebndrojm\u00eb me v\u00ebmendje n\u00eb tre gj\u00ebra: p\u00ebrmir\u00ebsimet e reja t\u00eb sistemit, incidentet nga prodhimi dhe proceset ky\u00e7 t\u00eb sistemit. K\u00ebshtu, ne zhvillohemi paralelisht me l\u00ebshimin, duke siguruar nj\u00eb cil\u00ebsi m\u00eb t\u00eb lart\u00eb, duke zgjeruar p\u00ebrmasat e regresit dhe duke siguruar q\u00ebndrueshm\u00ebrin\u00eb e sistemit n\u00eb vendet kritike. Nj\u00eb nga k\u00ebto pika t\u00eb ngushta ishte procesi i shp\u00ebrndarjes s\u00eb zbritjeve dhe bonuseve n\u00eb fatur\u00eb.<\/li>\n<li><b>Natyrisht, filluam t\u00eb zhvillojm\u00eb teste t\u00eb reja automatike. <\/b>Nj\u00eb nga detyrat e para t\u00eb l\u00ebshimit ishte vler\u00ebsimi i performanc\u00ebs s\u00eb mostrave t\u00eb paracaktuara t\u00eb sistemit t\u00eb besnik\u00ebris\u00eb. N\u00eb projektin ton\u00eb kemi nj\u00eb bllok me SQL t\u00eb ngurt\u00eb t\u00eb dh\u00ebna, t\u00eb cilat p\u00ebrzgjedhin klient\u00ebt sipas kushteve. P\u00ebr shembull, t\u00eb marrim nj\u00eb list\u00eb t\u00eb gjith\u00eb klient\u00ebve, blerja e fundit e t\u00eb cil\u00ebve ka qen\u00eb n\u00eb nj\u00eb qytet t\u00eb caktuar, ose list\u00ebn e klient\u00ebve, t\u00eb cil\u00ebt kan\u00eb nj\u00eb mesatare blerjeje m\u00eb t\u00eb lart\u00eb se nj\u00eb vler\u00eb t\u00eb caktuar. Duke shkruar teste automatike, ne verifikuam mostrave t\u00eb paracaktuara, regjistruam parametrat standard t\u00eb performanc\u00ebs dhe p\u00ebr m\u00eb tep\u00ebr kemi p\u00ebrfituar testi t\u00eb ngarkes\u00ebs.<\/li>\n<li><b>Puna me testet automatike duhet t\u00eb jet\u00eb e p\u00ebrshtatshme<\/b>. Dy veprime kryesore realizohen m\u00eb shpesh: fillimi i testeve automatike dhe krijimi i t\u00eb dh\u00ebnave testuese. Keshtu n\u00eb sistemin ton\u00eb u krijuan dy module ndihm\u00ebse: moduli i nisjes dhe moduli i gjenerimit t\u00eb t\u00eb dh\u00ebnave.\n<p>Moduli i nisjes paraqitet n\u00eb form\u00ebn e nj\u00eb procedure universale me nj\u00eb paramet\u00ebr tekstual hyr\u00ebs. Si paramet\u00ebr, mund t\u00eb kalosh mnemonic code t\u00eb testit automat, emrin e paket\u00ebs, emrin e testit, konfigurimin e testit automat ose nj\u00eb fjal\u00eb ky\u00e7e t\u00eb rezervuar. Procedura p\u00ebrzgjedh dhe nis t\u00eb gjitha testet automatike q\u00eb p\u00ebrmbushin kushtet.<\/p>\n<p>Moduli i gjenerimit t\u00eb t\u00eb dh\u00ebnave paraqitet n\u00eb form\u00ebn e nj\u00eb pakete, n\u00eb t\u00eb cil\u00ebn p\u00ebr \u00e7do objekt t\u00eb sistemit t\u00eb testuar (tabela n\u00eb DB), \u00ebsht\u00eb krijuar nj\u00eb procedur\u00eb speciale q\u00eb fut t\u00eb dh\u00ebna atje. N\u00eb k\u00ebt\u00eb procedur\u00eb, vlerat standarde jan\u00eb maksimumi plot\u00ebsuar, duke siguruar krijimin e objekteve me t\u00eb v\u00ebrtet\u00eb me nj\u00eb klikim. Dhe p\u00ebr leht\u00ebsin\u00eb e p\u00ebrdorimit jan\u00eb krijuar shabllon\u00ebt e t\u00eb dh\u00ebnave t\u00eb krijuara. P\u00ebr shembull, t\u00eb krijosh nj\u00eb klient t\u00eb nj\u00eb moshe t\u00eb caktuar me nj\u00eb telefon prov\u00eb dhe nj\u00eb blerje t\u00eb kryer.<\/li>\n<li><b>Testet automatike duhet t\u00eb nisen dhe t\u00eb funksionojn\u00eb n\u00eb nj\u00eb koh\u00eb t\u00eb pranueshme p\u00ebr sistemin tuaj. <\/b>Prandaj, \u00ebsht\u00eb organizuar nj\u00eb nisje e p\u00ebrditshme n\u00eb mesnat\u00eb, mbi rezultatet e s\u00eb cil\u00ebs formohet nj\u00eb raport i t\u00eb dh\u00ebnave dhe d\u00ebrgohet gjith\u00eb ekipit t\u00eb zhvillimit p\u00ebrmes post\u00ebs korporative. Pas rikthimit t\u00eb testeve t\u00eb vjetra dhe krijimit t\u00eb t\u00eb rinjve, koha totale e pun\u00ebs ishte 30 minuta. Nj\u00eb performanc\u00eb e till\u00eb k\u00ebnaqi t\u00eb gjith\u00eb, pasi nisja kalonte n\u00eb koh\u00eb jopune.\n<p>Por optimizimin e shpejt\u00ebsis\u00eb s\u00eb funksionimit duhej punuar. P\u00ebrdit\u00ebsimi i sistemit t\u00eb besnik\u00ebris\u00eb b\u00ebhet n\u00eb prodhim gjat\u00eb nat\u00ebs. Gjat\u00eb nj\u00eb prej l\u00ebshimeve, u b\u00ebn\u00eb ndryshime urgjente gjat\u00eb nat\u00ebs. Nj\u00eb pritje gjysm\u00eb ore p\u00ebr rezultatet e testeve automatike n\u00eb or\u00ebn tre t\u00eb m\u00ebngjesit nuk e b\u00ebnte t\u00eb lumtur personin p\u00ebrgjegj\u00ebs p\u00ebr l\u00ebshimin (p\u00ebrsh\u00ebndetje t\u00eb ngrohta p\u00ebr Aleksej Vasyukov!), dhe n\u00eb m\u00ebngjesin e ardhsh\u00ebm u than\u00eb shum\u00eb fjal\u00eb t\u00eb ngrohta p\u00ebr sistemin ton\u00eb. Por, pas analizave, u vendos nj\u00eb norm\u00eb pes\u00eb minut\u00ebshe p\u00ebr funksionimin.<\/p>\n<p>P\u00ebr t\u00eb p\u00ebrshpejtuar performanc\u00ebn, ne p\u00ebrdor\u00ebm dy metoda: testet automatike filluan t\u00eb ekzekutoheshin n\u00eb tre rrjedha paralele, fal\u00eb asaj q\u00eb ishte shum\u00eb e p\u00ebrshtatshme p\u00ebr arkitektur\u00ebn e sistemit ton\u00eb t\u00eb besnik\u00ebris\u00eb. Gjithashtu, ne braktis\u00ebm qasjen ku testi automatik nuk krijonte t\u00eb dh\u00ebna testuese p\u00ebr veten, por p\u00ebrpiqej t\u00eb gjej\u00eb di\u00e7ka t\u00eb p\u00ebrshtatshme n\u00eb sistem. Pas ndryshimeve, koha e p\u00ebrgjithshme e pun\u00ebs u reduktua n\u00eb 3-4 minuta.<\/li>\n<li><b>Projekti me testet automatike duhet t\u00eb mund t\u00eb vendoset n\u00eb ambiente t\u00eb ndryshme.<\/b> N\u00eb fillim t\u00eb rrug\u00ebs pati p\u00ebrpjekje p\u00ebr t\u00eb shkruar skripte t\u00eb veta, por b\u00ebhet e qart\u00eb se instalimi automatizuar q\u00eb shkruhet vet\u00eb \u00ebsht\u00eb nj\u00eb tmerr i plot\u00eb, dhe ne iu drejtua zgjidhjeve industriale. Duke qen\u00eb se projekti ka shum\u00eb kod (fillimisht ne ruajm\u00eb kodin e testeve automatike) dhe shum\u00eb pak t\u00eb dh\u00ebna (t\u00eb dh\u00ebnat kryesore jan\u00eb metadat p\u00ebr testet automatike), zbatimi i Liquibase n\u00eb projekt ishte mjaft i thjesht\u00eb.\n<p>Kjo \u00ebsht\u00eb nj\u00eb bibliotek\u00eb e pavarur nga baza e dh\u00ebnave me burim t\u00eb hapur p\u00ebr gjurmimin, menaxhimin dhe aplikimin e ndryshimeve t\u00eb skem\u00ebs s\u00eb baz\u00ebs s\u00eb dh\u00ebnave. Ajo kontrollohet p\u00ebrmes komandave n\u00eb linj\u00eb ose framework-e si Apache Maven. Parimi i funksionimit t\u00eb Liquibase \u00ebsht\u00eb mjaft i thjesht\u00eb. Ne kemi nj\u00eb projekt t\u00eb organizuar n\u00eb nj\u00eb m\u00ebnyr\u00eb t\u00eb caktuar, i cili p\u00ebrb\u00ebhet nga ndryshime ose skripte q\u00eb duhen implementuar n\u00eb serverin e synuar, dhe skedar\u00eb menaxhues q\u00eb p\u00ebrcaktojn\u00eb se n\u00eb cil\u00ebn rend dhe me cilat parametra k\u00ebto ndryshime duhet t\u00eb instalohen. <\/p>\n<p>N\u00eb nivelin e DBMS krijohet nj\u00eb tav\u00ebll speciale, n\u00eb t\u00eb cil\u00ebn Liquibase ruan logun e aplikimeve. \u00c7do ndryshim ka nj\u00eb hash t\u00eb llogaritur, i cili \u00e7do her\u00eb krahasohet midis projektit dhe gjendjes n\u00eb baz\u00eb. Fal\u00eb Liquibase, ne leht\u00ebsisht aplikojm\u00eb ndryshimet tona n\u00eb \u00e7do ambient. Testet automatike tani ekzekutohen n\u00eb ambientet testuese dhe t\u00eb l\u00ebshimit, si dhe n\u00eb kontejner\u00eb (ambientet personale t\u00eb zhvilluesve).<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Testet e nj\u00ebsive n\u00eb DB \u2014 si e b\u00ebjm\u00eb ne n\u00eb Sportmaster, pjesa e dyt\u00eb\" src=\"\/wp-content\/uploads\/2019\/09\/4306f6c33543d38f5d8b77f67e22e247.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPra, le t\u00eb flasim p\u00ebr rezultatet e p\u00ebrdorimit t\u00eb sistemit ton\u00eb t\u00eb testeve unit. <\/p>\n<ol>\n<li>Sigurisht, n\u00eb radh\u00eb t\u00eb par\u00eb, ne jemi t\u00eb bindur se kemi filluar t\u00eb zhvillojm\u00eb nj\u00eb softuer m\u00eb cil\u00ebsor. Testet automatike ekzekutohen \u00e7do dit\u00eb dhe \u00e7do l\u00ebshim gjejn\u00eb dhjet\u00ebra gabime. Dhe nj\u00eb pjes\u00eb e k\u00ebtyre gabimeve \u00ebsht\u00eb vet\u00ebm indirekt e lidhur me funksionalitetin q\u00eb ne v\u00ebrtet donim ta ndryshonim. Ka dyshime t\u00eb m\u00ebdha se k\u00ebto gabime ishin gjetur me testim manual. <\/li>\n<li>Ekipi yn\u00eb ka fituar besim se funksionaliteti specifik punon si\u00e7 duhet\u2026 Kjo vlen ve\u00e7an\u00ebrisht p\u00ebr proceset tona kritike. P\u00ebr shembull, gjat\u00eb gjasht\u00eb muajve t\u00eb fundit nuk kemi pasur probleme me shp\u00ebrndarjen e zbritjeve dhe bonuseve n\u00eb kupon, megjith\u00ebse kemi pasur ndryshime \u00e7do l\u00ebshim, ndryshe nga periudhat e m\u00ebparshme kur ndonj\u00ebher\u00eb shfaqeshin gabime.<\/li>\n<li>Na \u00ebsht\u00eb arritur t\u00eb reduktojm\u00eb numrin e iteracioneve t\u00eb testimit. Fal\u00eb faktit se testet automatike shkruhen p\u00ebr funksionalitetin e ri, kodit me cil\u00ebsi m\u00eb t\u00eb lart\u00eb i kalon analist\u00ebve dhe gjithashtu testeve, sepse ai tashm\u00eb \u00ebsht\u00eb verifikuar.<\/li>\n<li>Pjesa e punimeve t\u00eb testimit automatizuar p\u00ebrdoret nga zhvilluesit. P\u00ebr shembull, t\u00eb dh\u00ebnat testuese n\u00eb kontejner\u00eb krijohen p\u00ebrmes modulit t\u00eb gjenerimit t\u00eb objekteve.<\/li>\n<li>\u00cbsht\u00eb e r\u00ebnd\u00ebsishme q\u00eb ne kemi krijuar nj\u00eb \"pranimin\" t\u00eb sistemit t\u00eb testimit automatizuar nga ana e zhvilluesve. Ka kuptim q\u00eb kjo \u00ebsht\u00eb e r\u00ebnd\u00ebsishme dhe e dobishme. Dhe nga p\u00ebrvoja ime mund t\u00eb them se kjo nuk \u00ebsht\u00eb ashtu. Testet automatike duhet t\u00eb shkruhen, ato duhet t\u00eb mbahen dhe t\u00eb zhvillohen, t\u00eb analizohet rezultatet, dhe shpesh k\u00ebto harxhime kohe thjesht nuk ia vlen. M\u00eb e leht\u00eb \u00ebsht\u00eb t\u00eb shkosh n\u00eb prodhim dhe atje t\u00eb merresh me problemet. Mir\u00ebpo, k\u00ebtu zhvilluesit radhiten n\u00eb radh\u00eb dhe k\u00ebrkojn\u00eb t\u00eb mbulohet funksionaliteti i tyre me teste automatike.<\/li>\n<\/ol>\n<h2>\u00c7far\u00eb pason<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Testet e nj\u00ebsive n\u00eb DB \u2014 si e b\u00ebjm\u00eb ne n\u00eb Sportmaster, pjesa e dyt\u00eb\" src=\"\/wp-content\/uploads\/2019\/09\/a11596618e97c0afaa9f5f25b613575e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe t\u00eb flasim p\u00ebr planet e zhvillimit t\u00eb projektit p\u00ebr testimin automatizuar.<\/p>\n<p>Sigurisht, nd\u00ebrsa sistemi i besnik\u00ebris\u00eb s\u00eb Sportmaster vazhdon t\u00eb jet\u00eb i gjall\u00eb dhe t\u00eb zhvillohet, \u00ebsht\u00eb gjithashtu e mundur t\u00eb zhvillosh praktisht pafund\u00ebsisht testet automatike. Prandaj, drejtimi kryesor i zhvillimit \u00ebsht\u00eb zgjerimi i zon\u00ebs s\u00eb mbulimit.<\/p>\n<p>Me rritjen e numrit t\u00eb testeve automatike, koha totale e funksionimit t\u00eb tyre do t\u00eb rritet pa ndalur, dhe ne do t\u00eb duhet t\u00eb kthehemi p\u00ebrs\u00ebri te \u00e7\u00ebshtja e performanc\u00ebs. M\u00eb s\u00eb shumti, zgjidhja do t\u00eb jet\u00eb rritja e numrit t\u00eb rrjedhave paralele.<\/p>\n<p>Por k\u00ebto jan\u00eb rrug\u00ebt e dukshme t\u00eb zhvillimit. N\u00ebse flasim p\u00ebr di\u00e7ka m\u00eb t\u00eb nd\u00ebrlikuar, le t\u00eb theksojm\u00eb k\u00ebt\u00eb:<\/p>\n<ol>\n<li>Aktualisht, menaxhimi i testeve automatike kryhet n\u00eb nivelin e DBMS, pra, njohurit\u00eb e PL\/SQL jan\u00eb t\u00eb nevojshme p\u00ebr nj\u00eb funksionim t\u00eb suksessh\u00ebm. N\u00ebse \u00ebsht\u00eb e nevojshme, menaxhimi i sistemit (p.sh., ekzekutimi i testimeve ose krijimi i metadatan\u00ebve) mund t\u00eb nxirret n\u00eb ndonj\u00eb panel administrativ, duke p\u00ebrdorur Jenkins ose di\u00e7ka t\u00eb ngjashme.<\/li>\n<li>T\u00eb gjith\u00eb e duan matjen sasiore dhe cil\u00ebsore. P\u00ebr testimin automatizuar, nj\u00eb indikator universale \u00ebsht\u00eb Code Coverage ose metrika e mbulimit t\u00eb kodit. N\u00ebp\u00ebrmjet k\u00ebtij treguesi, ne mund t\u00eb p\u00ebrcaktojm\u00eb se sa p\u00ebrqind e kodit t\u00eb sistemit ton\u00eb n\u00eb testim mbulohet nga testet automatike. Duke filluar nga versioni 12.2, Oracle ofron mund\u00ebsi p\u00ebr llogaritjen e k\u00ebsaj metri dhe rekomandon p\u00ebrdorimin e paket\u00ebs standard DBMS_PLSQL_CODE_COVERAGE.\n<p>Sistemi yn\u00eb i testimit automatizuar \u00ebsht\u00eb pak m\u00eb shum\u00eb se nj\u00eb vit dhe ndoshta tani \u00ebsht\u00eb koha m\u00eb e p\u00ebrshtatshme p\u00ebr vler\u00ebsimin e mbulimit. N\u00eb projektin tim t\u00eb kaluar (projekti nuk \u00ebsht\u00eb Sportmaster), dhe kjo ka ndodhur. Pas nj\u00eb viti pune me testet automatike, drejtoria vendosi t\u00eb vler\u00ebsonte se sa p\u00ebrqind e kodit mbulojm\u00eb. Me mbulimin m\u00eb t\u00eb madh se 1%, drejtoria do t\u00eb ishte e k\u00ebnaqur. Ne, zhvilluesit, priteshim nj\u00eb rezultat rreth 10%. Kemi lidhur code coverage, mas\u00ebm, dhe mor\u00ebm 20%. Me g\u00ebzim shkuam p\u00ebr nj\u00eb shp\u00ebrblim, por si u shkuam atje dhe \u00e7far\u00eb ndodhi m\u00eb pas \u00ebsht\u00eb nj\u00eb histori krejt tjet\u00ebr.<\/li>\n<li>Testet automatike mund t\u00eb verifikojn\u00eb sh\u00ebrbimet web t\u00eb ekspozuara. Oracle e lejon k\u00ebt\u00eb, dhe ne nuk do t\u00eb hasim nj\u00eb s\u00ebr\u00eb problemesh. <\/li>\n<li>Dhe, natyrisht, sistemi yn\u00eb p\u00ebr testimin e automatizuar mund t\u00eb aplikohet n\u00eb nj\u00eb projekt tjet\u00ebr. Zgjidhja q\u00eb kemi arritur \u00ebsht\u00eb universale dhe k\u00ebrkon vet\u00ebm p\u00ebrdorimin e Oracle. Kam d\u00ebgjuar se n\u00eb projekte t\u00eb tjera t\u00eb Sportmaster ka interes p\u00ebr testimin automatizuar dhe ndoshta do t\u00eb shkojm\u00eb te ata.<\/li>\n<\/ol>\n<p><\/p>\n<h2>P\u00ebrfundimet<\/h2>\n<p>\nLe t\u00eb p\u00ebrmbledhim. N\u00eb projektin e sistemit t\u00eb besnik\u00ebris\u00eb n\u00eb Sportmaster kemi arritur t\u00eb realizojm\u00eb nj\u00eb sistem t\u00eb testimit t\u00eb automatizuar. Baza e saj \u00ebsht\u00eb zgjidhja utPLSQL nga Steven Feierstain. Rreth utPLSQL \u00ebsht\u00eb kodi i testeve automatizuese dhe module t\u00eb ndihm\u00ebs t\u00eb shkruara vet\u00eb: moduli i nisjes, moduli i gjenerimit t\u00eb t\u00eb dh\u00ebnave dhe t\u00eb tjera. Testet automatizuese kryhen \u00e7do dit\u00eb dhe, m\u00eb e r\u00ebnd\u00ebsishmja, funksionojn\u00eb dhe sjellin p\u00ebrfitim. Jemi t\u00eb bindur se kemi filluar t\u00eb l\u00ebshojm\u00eb softuer me cil\u00ebsi m\u00eb t\u00eb lart\u00eb. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, zgjidhja e marr\u00eb \u00ebsht\u00eb universale dhe mund t\u00eb aplikohet lirsh\u00ebm n\u00eb \u00e7do projekt ku nevojitet organizimi i testimit t\u00eb automatizuar n\u00eb DBMS Oracle.<\/p>\n<p><i>P.S. Ky artikull doli t\u00eb mos jet\u00eb shum\u00eb konkret: ka shum\u00eb tekst dhe praktikisht nuk ka shembuj teknik\u00eb. N\u00ebse tematik\u00ebn globale e gjen interesante, jemi t\u00eb gatsh\u00ebm ta vazhdojm\u00eb dhe t\u00eb kthehemi me nj\u00eb vazhdim, ku do t\u00eb tregojm\u00eb se \u00e7far\u00eb ka ndryshuar n\u00eb gjasht\u00eb muajt e fundit dhe do t\u00eb sjellim shembuj kodi.<\/p>\n<p>Shkruani komente, n\u00ebse ka aspekte, n\u00eb t\u00eb cilat duhet t\u00eb theksojm\u00eb n\u00eb t\u00eb ardhmen, ose pyetje q\u00eb k\u00ebrkojn\u00eb shpjegim.<\/i><\/p>\n<p class=\"for_users_only_msg\">Vet\u00ebm p\u00ebrdoruesit e regjistruar mund t\u00eb marrin pjes\u00eb n\u00eb anket\u00eb. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Hyni<\/a><\/noindex>, ju lutem.<\/p>\n<h2 class=\"default-block__polling-title\">A po shkruajm\u00eb m\u00eb tej p\u00ebr k\u00ebt\u00eb?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Po, sigurisht<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Jo, faleminderit<\/p>\n<\/li>\n<\/ul>\n<p>    12 p\u00ebrdorues votuan. 4 p\u00ebrdorues abstenuan.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/465047\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u0437\u0434\u0435\u0441\u044c. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041f\u0435\u0440\u0435\u0434 \u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043c\u043e\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0435, \u0442\u043e \u043a\u0430\u043a \u0431\u044b \u0432\u044b \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u0438? \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0441\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u0431\u0432\u0435\u043d\u0438\u044e \u0438 \u0432\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430. \u0412 \u0447\u0443\u0436\u043e\u043c \u043a\u043e\u0434\u0435 \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043b\u044e\u0431\u0438\u0442, \u0430 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28269,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37666","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u0437\u0434\u0435\u0441\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Unit-\u0442\u0435\u0441\u0442\u044b \u0432 \u0421\u0423\u0411\u0414 \u2014 \u043a\u0430\u043a \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u0447\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u0437\u0434\u0435\u0441\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:18:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:55+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e dyt\u00eb | ProHoster","description":"Pjesa e par\u00eb \u2013 k\u00ebtu.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Unit-\u0442\u0435\u0441\u0442\u044b \u0432 \u0421\u0423\u0411\u0414 \u2014 \u043a\u0430\u043a \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u0447\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f | ProHoster","og:description":"\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u0437\u0434\u0435\u0441\u044c.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:18:55+00:00","article:modified_time":"2019-10-31T19:18:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37666","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:48:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:23:06","updated":"2026-01-23 18:48:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=37666"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37666\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/28269"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=37666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=37666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=37666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}