{"id":37495,"date":"2019-10-31T22:17:57","date_gmt":"2019-10-31T19:17:57","guid":{"rendered":"https:\/\/prohoster.info\/blog\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-pervaya\/"},"modified":"2019-10-31T22:17:57","modified_gmt":"2019-10-31T19:17:57","slug":"unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-pervaya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-pervaya","title":{"rendered":"Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje, Habr!<\/p>\n<p>M\u00eb quajn\u00eb Maksim Ponomarenko dhe jam zhvillues n\u00eb Sportmaster. Kam 10 vjet p\u00ebrvoj\u00eb n\u00eb fush\u00ebn e IT. Kam nisur karrier\u00ebn time n\u00eb testimin manual, pastaj kam kaluar n\u00eb zhvillimin e bazave t\u00eb t\u00eb dh\u00ebnave. Gjat\u00eb kat\u00ebr viteve t\u00eb fundit, duke grumbulluar njohurit\u00eb e fituara nga testimi dhe zhvillimi, merrem me automatizimin e testimit n\u00eb nivelin e DBMS.<\/p>\n<p>N\u00eb ekipin e Sportmaster kam qen\u00eb pak m\u00eb shum\u00eb se nj\u00eb vit dhe n\u00eb nj\u00eb nga projektet e m\u00ebdha merrem me zhvillimin e testimit t\u00eb automatizuar. N\u00eb prill, ne me djemt\u00eb nga Sportmaster Lab pat\u00ebm nj\u00eb prezantim n\u00eb konferenc\u00ebn n\u00eb Krasnodar, titulli i prezantimit tim ishte \"Testet e nj\u00ebsi n\u00eb DBMS\", dhe tani dua ta ndaj at\u00eb me ju. Do t\u00eb ket\u00eb shum\u00eb tekst, k\u00ebshtu q\u00eb vendosa ta ndaj prezantimin n\u00eb dy postime. N\u00eb t\u00eb parin, do t\u00eb flasim p\u00ebr autotestet dhe testimin n\u00eb p\u00ebrgjith\u00ebsi, nd\u00ebrsa n\u00eb t\u00eb dytin do t\u00eb ndalem m\u00eb n\u00eb detaje n\u00eb sistemin ton\u00eb t\u00eb testimit t\u00eb nj\u00ebsi dhe rezultatet e zbatimit t\u00eb saj.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/464335\/\"><img decoding=\"async\" alt=\"Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb\" src=\"\/wp-content\/uploads\/2019\/08\/4e521cc85eb3a3806860a40ab2e4050f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Fillimisht pak teori t\u00eb m\u00ebrzitshme. \u00c7far\u00eb \u00ebsht\u00eb testimi automatik? Ky \u00ebsht\u00eb nj\u00eb testim, i cili kryhet me mjete programore, dhe n\u00eb IT-n\u00eb moderne p\u00ebrdoret gjithnj\u00eb e m\u00eb shum\u00eb n\u00eb zhvillimin e software-it. Kjo lidhet me faktin se kompanit\u00eb rriten, rriten sistemet e tyre informatik\u00eb dhe p\u00ebr rrjedhoj\u00eb rritet edhe sasia e funksionaliteteve q\u00eb duhet testuar. T\u00eb kryesh testim manual po b\u00ebhet gjithnj\u00eb e m\u00eb e kushtueshme.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKam punuar n\u00eb nj\u00eb kompani t\u00eb madhe, ku l\u00ebshimet b\u00ebhen \u00e7do dy muaj. Gjat\u00eb k\u00ebsaj periudhe, nj\u00eb muaj shpenzohej p\u00ebr q\u00eb dhjet\u00eb tester t\u00eb kontrollonin manualisht funksionalitetin. Fal\u00eb implementimit t\u00eb automatizimit nga nj\u00eb ekip i vog\u00ebl zhvilluesish, arrit\u00ebm t\u00eb reduktonim koh\u00ebn e testimit n\u00eb 2 jav\u00eb brenda nj\u00eb viti e gjysm\u00eb. Jo vet\u00ebm q\u00eb rrit\u00ebm shpejt\u00ebsin\u00eb e testimit, por gjithashtu p\u00ebrmir\u00ebsuam cil\u00ebsin\u00eb e tij. Testet automatike ekzekutohen rregullisht dhe ato gjithmon\u00eb realizojn\u00eb t\u00eb gjitha kontrollet e parashikuara, pra ne p\u00ebrjashtojm\u00eb faktor\u00ebt njer\u00ebzor\u00eb. <\/p>\n<p>P\u00ebr IT-n\u00eb moderne karakterizohet fakti se nga zhvilluesi mund t\u00eb k\u00ebrkohet jo vet\u00ebm t\u00eb shkruaj kodin e produktit, por edhe t\u00eb shkruaj teste nj\u00ebsie, t\u00eb cilat kontrollojn\u00eb k\u00ebt\u00eb kod. <\/p>\n<p>Por what do you do if your system is primarily based on server logic? There is no universal solution or best practices on the market. Typically, companies address this issue by creating their own custom testing systems. This particular custom automated testing system was developed for our project, and I will discuss it in my presentation. <\/p>\n<p><img decoding=\"async\" alt=\"Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb\" src=\"\/wp-content\/uploads\/2019\/08\/fee34f7214fb2075ee50fa0f4af14a44.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Testing Loyalty<\/h2>\n<p>\nFirst, let\u2019s talk about the project where we deployed the automated testing system. Our project is the loyalty system of Sportmaster (by the way, we have already written about it in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/453252\/\">this post<\/a><\/noindex>).<\/p>\n<p>If your company is large enough, your loyalty system will have three standard properties: <\/p>\n<ul>\n<li>Your system will be high-load<\/li>\n<li>Your system will involve complex computational processes<\/li>\n<li>Your system will be actively enhanced. <\/li>\n<\/ul>\n<p>\nLet\u2019s go in order\u2026 Together, when considering all Sportmaster brands, we have over 1000 stores in Russia, Ukraine, China, Kazakhstan, and Belarus. In these stores, around 300,000 purchases are made daily. This means that every second, 3-4 receipts enter our system. Naturally, our loyalty system is high-load. And since it is actively used, we must provide the highest quality standards, as any software error leads to significant financial, reputational, and other losses. <\/p>\n<p>At the same time, more than a hundred different promotions are running at Sportmaster. The promotions vary: there are product-related ones, those related to specific days of the week, promotions tied to specific stores, those based on purchase amounts, and many more. In general, it\u2019s quite a lot. Customers have bonuses and promo codes that are used during purchases. All this makes the calculation of any order a rather non-trivial task. <\/p>\n<p>Algoritmi q\u00eb realizon procesimin e porosive \u00ebsht\u00eb v\u00ebrtet i friksh\u00ebm dhe i nd\u00ebrlikuar. \u00c7do ndryshim n\u00eb k\u00ebt\u00eb algoritm\u00eb \u00ebsht\u00eb nj\u00eb gj\u00eb mjaft e rrezikshme. T\u00eb duken ndryshime t\u00eb jashtme t\u00eb pakta, mund t\u00eb \u00e7ojn\u00eb n\u00eb efekte mjaft t\u00eb paparashikueshme. Dhe pik\u00ebrisht k\u00ebto procese t\u00eb nd\u00ebrlikuara t\u00eb llogaritjes, sidomos ato q\u00eb zbatojn\u00eb funksionalitet kritik, jan\u00eb kandidat\u00eb t\u00eb shk\u00eblqyer p\u00ebr automatizim. T\u00eb kontrollosh me dor\u00eb dhjet\u00ebra raste t\u00eb ngjashme \u00ebsht\u00eb shum\u00eb i lodhsh\u00ebm n\u00eb koh\u00eb. Dhe p\u00ebrderisa pika e hyrjes n\u00eb proces mbetet e pandryshuar, nj\u00eb her\u00eb e p\u00ebrshkruan at\u00eb, mund t\u00eb krijosh shpejt teste automatike dhe t\u00eb ndihesh i sigurt p\u00ebr funksionalitetin.<\/p>\n<p>Duke pasur parasysh se sistemi jon\u00eb \u00ebsht\u00eb p\u00ebrdorur aktivisht, biznesi do t\u00eb d\u00ebshiroj\u00eb di\u00e7ka t\u00eb re nga ju, t\u00eb jetoni n\u00eb hap me koh\u00ebn dhe t\u00eb jeni t\u00eb orientuar ndaj klientit. N\u00eb sistemin ton\u00eb t\u00eb besnik\u00ebris\u00eb, publikimet dalin \u00e7do dy muaj. K\u00ebshtu, \u00e7do dy muaj na nevojitet t\u00eb kryejm\u00eb nj\u00eb regres t\u00eb plot\u00eb t\u00eb gjith\u00eb sistemit. Natyrisht, si n\u00eb \u00e7do IT moderne, zhvillimi nuk kalon menj\u00ebher\u00eb nga zhvilluesi n\u00eb prodhim. Ai lind n\u00eb kontur t\u00eb zhvilluesit, pastaj kalon me radh\u00eb p\u00ebrmes ekranit t\u00eb testimit, publikimit, pranimit dhe m\u00eb n\u00eb fund arrin n\u00eb prodhim. T\u00eb pakt\u00ebn n\u00eb kontur\u00ebt e testimit dhe publikimit, ne duhet t\u00eb kryejm\u00eb regres t\u00eb plot\u00eb t\u00eb gjith\u00eb sistemit. <\/p>\n<p>Vet\u00ebsit\u00eb e p\u00ebrshkruara jan\u00eb standarde p\u00ebr pothuajse \u00e7do sistem besnik\u00ebrie. Le t\u00eb flasim p\u00ebr ve\u00e7orit\u00eb e projektit ton\u00eb.<\/p>\n<p>Teknologjikisht, 90% e logjik\u00ebs s\u00eb sistemit ton\u00eb t\u00eb besnik\u00ebris\u00eb \u00ebsht\u00eb serverike dhe realizohet n\u00eb Oracle. Ka nj\u00eb klient t\u00eb vendosur n\u00eb Delphi, i cili kryen funksionin e administratorit ARM. Ka sh\u00ebrbime uebi t\u00eb vendosura p\u00ebr aplikacione t\u00eb jashtme (p.sh. faqja e internetit). Prandaj, \u00ebsht\u00eb mjaft logjike q\u00eb n\u00ebse ne do t\u00eb zhvillonim nj\u00eb sistem t\u00eb testimit t\u00eb automatizuar, do ta b\u00ebnim k\u00ebt\u00eb n\u00eb Oracle.<\/p>\n<p>Sistemi i besnik\u00ebris\u00eb n\u00eb Sportmaster ekziston p\u00ebr m\u00eb shum\u00eb se 7 vjet dhe \u00ebsht\u00eb krijuar nga zhvillues t\u00eb ve\u00e7ant\u00eb... Numri mesatar i zhvilluesve n\u00eb projektin ton\u00eb gjat\u00eb k\u00ebtyre 7 viteve ka qen\u00eb 3-4 persona. Por gjat\u00eb vitit t\u00eb fundit, ekipi yn\u00eb \u00ebsht\u00eb rritur ndjesh\u00ebm, dhe tani mbi projekt punojn\u00eb 10 persona. Pra, n\u00eb projekt vijn\u00eb njer\u00ebz q\u00eb nuk jan\u00eb t\u00eb njohur me detyrat standarde, proceset dhe arkitektur\u00ebn. Dhe ekziston nj\u00eb rrezik i shtuar q\u00eb do t\u00eb kalojm\u00eb konkurrent\u00eb.<\/p>\n<p>Projektin karakterizon mungesa e testuesve t\u00eb dedikuar si nj\u00ebsi t\u00eb caktuar. Testimi, pa dyshim, ekziston, por testimi merret nga analist\u00ebt, p\u00ebrve\u00e7 detyrave t\u00eb tjera kryesore: komunikimi me tregtar\u00ebt, p\u00ebrdoruesit, p\u00ebrpunimi i k\u00ebrkesave p\u00ebr sistemin etj. Megjithat\u00eb, efikasiteti i specializimit dhe p\u00ebrqendrimit n\u00eb nj\u00eb gj\u00eb t\u00eb vetme nuk \u00ebsht\u00eb anuluar.<\/p>\n<p>Duke marr\u00eb parasysh t\u00eb gjitha t\u00eb dh\u00ebnat e m\u00ebsip\u00ebrme, p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar cil\u00ebsin\u00eb e produktit t\u00eb ofruar dhe p\u00ebr t\u00eb shkurtuar koh\u00ebt e zhvillimit, ideja e automatizimit t\u00eb testimit n\u00eb projekt duket mjaft logjike. Dhe n\u00eb etapa t\u00eb ndryshme t\u00eb ekzistenc\u00ebs s\u00eb sistemit t\u00eb besnik\u00ebris\u00eb, zhvillues t\u00eb ve\u00e7ant\u00eb kan\u00eb b\u00ebr\u00eb p\u00ebrpjekje p\u00ebr t\u00eb mbuluar kodin e tyre me testet e nj\u00ebsive. Ky ishte nj\u00eb proces i ndar\u00eb, ku secili p\u00ebrdorte arkitektur\u00ebn dhe metodat e tij. Rezultatet p\u00ebrfundimtare ishin t\u00eb zakonshme p\u00ebr testet e nj\u00ebsive: testet jan\u00eb zhvilluar, p\u00ebrdoren p\u00ebr nj\u00eb koh\u00eb, grumbullohen n\u00eb depozit\u00ebn e versioneve t\u00eb skedar\u00ebve, por n\u00eb nj\u00eb moment stopojn\u00eb s\u00eb ekzekutimi dhe harrohen. Kjo ndodhte kryesisht sepse testet ishin lidhur m\u00eb shum\u00eb me ekzekutuesin specifik, sesa me projektin.<\/p>\n<h2>P\u00ebr ndihm\u00eb vjen utPLSQL<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb\" src=\"\/wp-content\/uploads\/2019\/08\/f21dfcb085aace687566dc51cb9b5613.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDini ndonj\u00eb gj\u00eb p\u00ebr Steven Feuerstein? <\/p>\n<p>Ky \u00ebsht\u00eb nj\u00eb njeri i zgjuar, q\u00eb ka kaluar nj\u00eb pjes\u00eb t\u00eb gjat\u00eb t\u00eb karrier\u00ebs s\u00eb tij duke punuar me Oracle dhe me PL\/SQL, dhe ka shkruar nj\u00eb num\u00ebr t\u00eb konsideruesh\u00ebm punimesh mbi k\u00ebt\u00eb tem\u00eb. Nj\u00eb nga librat e tij t\u00eb njohur \u00ebsht\u00eb titulluar: \u00abOracle PL\/SQL. P\u00ebr profesionist\u00ebt\u00bb. Pik\u00ebrisht Steve-i \u00ebsht\u00eb ai q\u00eb ka zhvilluar zgjidhjen utPLSQL, ose si\u00e7 e shpjegon, framework-un p\u00ebr testimin e nj\u00ebsive p\u00ebr Oracle PL\/SQL. Zgjidhja utPLSQL u krijua n\u00eb vitin 2016, por vazhdon t\u00eb zhvillohet aktivisht dhe t\u00eb l\u00ebshohen versione t\u00eb reja. N\u00eb momentin e paraqitjes, versioni m\u00eb i fundit daton m\u00eb 24 mars 2019.<br \/>\n\u00c7far\u00eb \u00ebsht\u00eb kjo? Ky \u00ebsht\u00eb nj\u00eb projekt i ve\u00e7ant\u00eb me burim t\u00eb hapur. Peshon disa mega byte, p\u00ebrfshir\u00eb shembuj dhe dokumentacion. Fizikisht, p\u00ebrfaq\u00ebson nj\u00eb skem\u00eb t\u00eb ve\u00e7ant\u00eb n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave ORACLE me nj\u00eb grup paketa dhe tabelash p\u00ebr organizimin e testimit t\u00eb nj\u00ebsive. Instalimi merr disa sekonda. Nj\u00eb ve\u00e7ori e dallueshme e utPLSQL \u00ebsht\u00eb thjesht\u00ebsia e p\u00ebrdorimit. <br \/>\nGlobalisht, utPLSQL p\u00ebrfaq\u00ebson nj\u00eb mekaniz\u00ebm p\u00ebr ekzekutimin e testeve t\u00eb nj\u00ebsive, ku nj\u00eb test nj\u00ebsie kuptohet si procedurat standarde t\u00eb paketave Oracle, organizimi i t\u00eb cilave p\u00ebrputhet me disa rregulla. P\u00ebrve\u00e7 ekzekutimit, utPLSQL ruan nj\u00eb log t\u00eb t\u00eb gjitha ekzekutimeve t\u00eb testeve tuaja, si dhe ka nj\u00eb sistem t\u00eb brendsh\u00ebm raportimi.<\/p>\n<p>Le t\u00eb shohim nj\u00eb shembull se si duket kodi i nj\u00eb testi nj\u00ebsie, i realizuar sipas k\u00ebsaj metodike.<\/p>\n<p><img decoding=\"async\" alt=\"Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb\" src=\"\/wp-content\/uploads\/2019\/08\/6fc8cc2d84c6c32a8b5269ebad1d2381.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPra, n\u00eb ekran paraqitet kodi standard i specifikimit t\u00eb paket\u00ebs me testet nj\u00ebsive. Cilat jan\u00eb k\u00ebrkesat e detyrueshme? Paketa duhet t\u00eb ket\u00eb nj\u00eb prefiks \u00abutp_\u00bb. Pikerisht i nj\u00ebjti prefiks duhet t\u00eb ken\u00eb t\u00eb gjitha procedurat me teste. N\u00eb paket\u00eb duhet patjet\u00ebr t\u00eb jen\u00eb dy procedura standarde: \u00abutp_setup\u00bb dhe \u00abutp_teardown\u00bb. Procedura e par\u00eb thirret p\u00ebrpara \u00e7do testi nj\u00ebsie, nd\u00ebrsa e dyta pas ekzekutimit.<\/p>\n<p>\u00abutp_setup\u00bb, n\u00eb p\u00ebrgjith\u00ebsi, p\u00ebrgatit sistemin ton\u00eb p\u00ebr ekzekutimin e testit nj\u00ebsie, p\u00ebr shembull, krijon t\u00eb dh\u00ebna testimi. \u00abutp_teardown\u00bb \u2014 p\u00ebrkundrazi, kthen gjith\u00e7ka n\u00eb parametrat fillestar\u00eb dhe shfuqizon rezultatet e ekzekutimit.<\/p>\n<p>K\u00ebtu \u00ebsht\u00eb nj\u00eb shembull i testit m\u00eb t\u00eb thjesht\u00eb unit, i cili kontrollon normalizimin e numrit t\u00eb telefonit t\u00eb klientit n\u00eb form\u00ebn standarde p\u00ebr sistemin ton\u00eb t\u00eb besnik\u00ebris\u00eb. Nuk ka ndonj\u00eb standard t\u00eb detyruesh\u00ebm p\u00ebr si duhet t\u00eb shkruhen procedurat me teste unit. Rregullisht, b\u00ebhet thirrja e ndonj\u00eb metode t\u00eb sistemit q\u00eb po testohet, dhe rezultati, i kthyer nga kjo metod\u00eb, krahasonhet me standardin. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme q\u00eb krahasimi i rezultatit standard dhe atij t\u00eb marr\u00eb t\u00eb ndodh\u00eb p\u00ebrmes metodave standarde utPLSQL.<\/p>\n<p>N\u00eb testin unit mund t\u00eb ket\u00eb \u00e7do num\u00ebr kontrollesh. Si\u00e7 duket nga shembulli, ne b\u00ebjm\u00eb kat\u00ebr thirrje radhazi t\u00eb metod\u00ebs q\u00eb po testohet p\u00ebr normalizimin e numrit t\u00eb telefonit dhe pas \u00e7do thirrjeje vler\u00ebsojm\u00eb rezultatin. Gjat\u00eb zhvillimit t\u00eb testit unit duhet t\u00eb merret parasysh se ekzistojn\u00eb kontrolle q\u00eb nuk ndikojn\u00eb aspak n\u00eb sistem, nd\u00ebrsa disa k\u00ebrkojn\u00eb kthimin n\u00eb gjendjen fillestare t\u00eb sistemit. <br \/>\nP\u00ebr shembull, n\u00eb testin unit t\u00eb paraqitur, ne thjesht formatizojm\u00eb numrin e telefonit t\u00eb hyrjes, q\u00eb nuk ndikon aspak n\u00eb sistemin e besnik\u00ebris\u00eb. <\/p>\n<p>Por n\u00ebse ne shkruajm\u00eb testet unit p\u00ebr metod\u00ebn e krijimit t\u00eb klientit t\u00eb ri, pas \u00e7do kontrolli nj\u00eb klient i ri do t\u00eb krijohet n\u00eb sistem, e cila mund t\u00eb ndikoj\u00eb n\u00eb ekzekutimin e m\u00ebvonsh\u00ebm t\u00eb testit.<\/p>\n<p><img decoding=\"async\" alt=\"Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb\" src=\"\/wp-content\/uploads\/2019\/08\/7d649b354776c15d8a70a0d9a05363b4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebshtu ekzekutohen testet unit. Pranohet dy variante ekzekutimi: ekzekutimi i t\u00eb gjitha testeve unit nga nj\u00eb paket\u00eb e caktuar ose ekzekutimi i nj\u00eb testi unit t\u00eb caktuar n\u00eb nj\u00eb paket\u00eb t\u00eb caktuar.<\/p>\n<p><img decoding=\"async\" alt=\"Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb\" src=\"\/wp-content\/uploads\/2019\/08\/46628b60eb0fe0d20df822ddca914947.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebshtu duket nj\u00eb shembull i sistemit t\u00eb brendsh\u00ebm t\u00eb raportim. Nga rezultatet e testit unit, utPLSQL nd\u00ebrtan nj\u00eb raport t\u00eb vog\u00ebl. N\u00eb t\u00eb shohim rezultatin p\u00ebr \u00e7do kontroll t\u00eb caktuar dhe rezultatin e p\u00ebrgjithsh\u00ebm t\u00eb ekzekutimit t\u00eb testit unit. <\/p>\n<h2>6 rregulla p\u00ebr testet automatik\u00eb<\/h2>\n<p>\nPara se t\u00eb fillojm\u00eb krijimin e nj\u00eb sistemi t\u00eb ri t\u00eb testimeve automatike p\u00ebr sistemin e besnik\u00ebris\u00eb, s\u00eb bashku me menaxhimin ne p\u00ebrcaktuam parimet, t\u00eb cilave testet tona t\u00eb ardhshme automatike duhet t'u p\u00ebrmbahen.<\/p>\n<p><img decoding=\"async\" alt=\"Testet unitare n\u00eb DBMS \u2013 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb\" src=\"\/wp-content\/uploads\/2019\/08\/84be59663203abb373e7074b9a6cd4e4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Testet automatike duhet t\u00eb jen\u00eb efektive dhe t\u00eb sjellin dobi. Ne kemi zhvillues t\u00eb shk\u00eblqyer, t\u00eb cil\u00ebt patjet\u00ebr duhet t\u00eb p\u00ebrmenden, sepse ndonj\u00eb prej tyre do ta shoh\u00eb k\u00ebt\u00eb raport dhe ata shkruajn\u00eb nj\u00eb kod t\u00eb shk\u00eblqyer. Por edhe kodi i tyre i shk\u00eblqyer nuk \u00ebsht\u00eb perfekt dhe ka p\u00ebrmbajtur, p\u00ebrmban dhe do t\u00eb p\u00ebrmbaj\u00eb gabime. Testet automatike duhet t'i gjejn\u00eb k\u00ebto gabime. N\u00ebse kjo nuk ndodh, at\u00ebher\u00eb ose ne po shkruajm\u00eb teste automatik\u00eb t\u00eb dob\u00ebta, ose kemi arritur n\u00eb nj\u00eb zon\u00eb t\u00eb vdekur, e cila n\u00eb thelb nuk po zhvillohet. N\u00eb t\u00eb dy rastet, ne po b\u00ebjm\u00eb di\u00e7ka t\u00eb gabuar dhe qasja jon\u00eb \u00ebsht\u00eb thjesht pa kuptim.<\/li>\n<li>Testet automatike duhet t\u00eb p\u00ebrdoren. \u00cbsht\u00eb e pafrytshme t\u00eb shpenzosh shum\u00eb koh\u00eb dhe energji n\u00eb zhvillimin e nj\u00eb produkti t\u00eb softuerit, ta vendos\u00ebsh at\u00eb n\u00eb nj\u00eb repo dhe ta harrosh. Testet duhet t\u00eb ekzekutohen dhe sa m\u00eb rregullisht t\u00eb jet\u00eb e mundur.<\/li>\n<li>Testet automatike duhet t\u00eb funksionojn\u00eb n\u00eb m\u00ebnyr\u00eb stabile. Pavar\u00ebsisht nga koha e dit\u00ebs, ambienti i ekzekutimit dhe cilatdo konfigurime t\u00eb tjera t\u00eb sistemit, ekzekutimet e testeve duhet t\u00eb japin t\u00eb nj\u00ebjtin rezultat. Zakonisht, kjo sigurohet nga fakti q\u00eb testet automatike punojn\u00eb me t\u00eb dh\u00ebna testuese t\u00eb ve\u00e7anta me cil\u00ebsime t\u00eb vendosura t\u00eb sistemit.<\/li>\n<li>Testet automatike duhet t\u00eb punojn\u00eb me nj\u00eb shpejt\u00ebsi t\u00eb pranueshme p\u00ebr projektin tuaj. Ky koh\u00eb p\u00ebrcaktohet individualisht p\u00ebr secilin sistem. Disa mund t\u00eb lejojn\u00eb t\u00eb punojn\u00eb gjat\u00eb gjith\u00eb dit\u00ebs, ndersa p\u00ebr disa \u00ebsht\u00eb kritike t\u00eb p\u00ebrfundojn\u00eb brenda disa sekondash. Cilat kan\u00eb qen\u00eb normat e shpejt\u00ebsis\u00eb q\u00eb kemi arritur n\u00eb projektin ton\u00eb, do t'ju tregoj pak m\u00eb von\u00eb.<\/li>\n<li>Zhvillimi i testeve automatike duhet t\u00eb jet\u00eb fleksib\u00ebl. Nuk \u00ebsht\u00eb e d\u00ebshirueshme t\u00eb heqim dor\u00eb nga kontrollimi i ndonj\u00eb funksionaliteti thjesht sepse ne nuk e kemi b\u00ebr\u00eb k\u00ebshtu m\u00eb par\u00eb ose p\u00ebr ndonj\u00eb bindje tjet\u00ebr. utPLSQL nuk vendos asnj\u00eb kufizim p\u00ebr zhvillimin, dhe Oracle n\u00eb thelb lejon realizimin e gj\u00ebrave t\u00eb ndryshme. Shumica e detyrave ka nj\u00eb zgjidhje, pyetja \u00ebsht\u00eb vet\u00ebm p\u00ebr koh\u00ebn dhe p\u00ebrpjekjet e shpenzuara.<\/li>\n<li>Implementimi. Ne kemi disa ambientet ku nevojitet ekzekutimi i testeve. N\u00eb secilin nga k\u00ebto ambiente mund t\u00eb p\u00ebrdit\u00ebsohet nj\u00eb dump me t\u00eb dh\u00ebna n\u00eb \u00e7do moment. Duhet t\u00eb drejtohet projekti me teste automatike n\u00eb nj\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb ket\u00eb mund\u00ebsi p\u00ebr ta instaluar plot\u00ebsisht ose pjes\u00ebrisht pa dhimbje.<\/li>\n<\/ol>\n<p>Dhe n\u00eb postimin e dyt\u00eb n\u00eb disa dit\u00eb do t'ju tregoj se \u00e7far\u00eb kemi b\u00ebr\u00eb dhe cilat rezultate kemi arritur.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/464335\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u043a\u0441\u0438\u043c \u041f\u043e\u043d\u043e\u043c\u0430\u0440\u0435\u043d\u043a\u043e \u0438 \u044f \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u0418\u043c\u0435\u044e 10-\u043b\u0435\u0442\u043d\u0438\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT-\u0441\u0444\u0435\u0440\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u043b \u043a\u0430\u0440\u044c\u0435\u0440\u0443 \u0432 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 4 \u0433\u043e\u0434\u0430, \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u0438\u0440\u0443\u044f \u0437\u043d\u0430\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0421\u0423\u0411\u0414. \u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u044f \u0441\u043e\u0441\u0442\u043e\u044e \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0433\u043e\u0434\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28136,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37495","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\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u043a\u0441\u0438\u043c \u041f\u043e\u043d\u043e\u043c\u0430\u0440\u0435\u043d\u043a\u043e \u0438 \u044f \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u0418\u043c\u0435\u044e 10-\u043b\u0435\u0442\u043d\u0438\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT-\u0441\u0444\u0435\u0440\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u043b \u043a\u0430\u0440\u044c\u0435\u0440\u0443 \u0432 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.\" \/>\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-pervaya\" \/>\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 \u043f\u0435\u0440\u0432\u0430\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u043a\u0441\u0438\u043c \u041f\u043e\u043d\u043e\u043c\u0430\u0440\u0435\u043d\u043a\u043e \u0438 \u044f \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u0418\u043c\u0435\u044e 10-\u043b\u0435\u0442\u043d\u0438\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT-\u0441\u0444\u0435\u0440\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u043b \u043a\u0430\u0440\u044c\u0435\u0440\u0443 \u0432 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.\" \/>\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-pervaya\" \/>\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:17:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:57+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 Unit n\u00eb SGBD \u2014 si e b\u00ebjm\u00eb k\u00ebt\u00eb n\u00eb Sportmaster, pjesa e par\u00eb | ProHoster","description":"P\u00ebrsh\u00ebndetje, Habr! Quhem Maksim Ponomarenko dhe jam zhvillues n\u00eb Sportmaster. Kam 10 vjet p\u00ebrvoj\u00eb n\u00eb fush\u00ebn e IT. Kam filluar karrier\u00ebn time n\u00eb testimin manual dhe m\u00eb pas kalova n\u00eb zhvillimin e bazave t\u00eb t\u00eb dh\u00ebnave.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-pervaya","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 \u043f\u0435\u0440\u0432\u0430\u044f | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u043a\u0441\u0438\u043c \u041f\u043e\u043d\u043e\u043c\u0430\u0440\u0435\u043d\u043a\u043e \u0438 \u044f \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u0418\u043c\u0435\u044e 10-\u043b\u0435\u0442\u043d\u0438\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT-\u0441\u0444\u0435\u0440\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u043b \u043a\u0430\u0440\u044c\u0435\u0440\u0443 \u0432 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-pervaya","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:17:57+00:00","article:modified_time":"2019-10-31T19:17:57+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37495","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:06:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:25:27","updated":"2026-01-23 18:06: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\/37495","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=37495"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37495\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/28136"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=37495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=37495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=37495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}