{"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\/hu\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya","title":{"rendered":"Unit tesztel\u00e9s az adatb\u00e1zis-kezel\u0151 rendszerekben \u2014 hogyan csin\u00e1ljuk ezt a Sportmasterben, m\u00e1sodik r\u00e9sz","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Els\u0151 r\u00e9sz \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/464335\/\">itt<\/a><\/noindex>.<\/i><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/465047\/\"><img decoding=\"async\" alt=\"Unit tesztel\u00e9s az adatb\u00e1zis-kezel\u0151 rendszerekben \u2014 hogyan csin\u00e1ljuk ezt a Sportmasterben, m\u00e1sodik r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/09\/b9fb8c934885abdf3ef928bfd75bdc2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>K\u00e9pzelj\u00fcnk el egy helyzetet. \u00d6n el\u0151tt egy \u00faj funkci\u00f3 fejleszt\u00e9s\u00e9nek feladata \u00e1ll. \u00d6n rendelkezik a kor\u00e1bbi munkat\u00e1rsak eredm\u00e9nyeivel. Ha felt\u00e9telezz\u00fck, hogy nincsenek erk\u00f6lcsi k\u00f6telezetts\u00e9gei, hogyan j\u00e1rna el?<\/p>\n<p>Legt\u00f6bbsz\u00f6r az \u00f6sszes r\u00e9gi munka elfelejt\u0151dik, \u00e9s minden \u00fajra kezd\u0151dik. Senki sem szereti bogar\u00e1szni a m\u00e1sok \u00e1ltal \u00edrt k\u00f3dban, \u00e9s ha van r\u00e1 id\u0151, mi\u00e9rt ne foglalkozn\u00e1nk a saj\u00e1t rendszer\u00fcnk l\u00e9trehoz\u00e1s\u00e1val? Ez a tipikus hozz\u00e1\u00e1ll\u00e1s, \u00e9s sok szempontb\u00f3l helyes. De a mi projekt\u00fcnkben nem \u00edgy j\u00e1rtunk el. Az automatikus tesztel\u00e9si rendszer alapj\u00e1ul a kor\u00e1bbiak utPLSQL alap\u00fa unit tesztjeivel dolgoztunk, majd p\u00e1rhuzamos ir\u00e1nyokban indultunk el.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li><b>R\u00e9gi unit tesztek helyre\u00e1ll\u00edt\u00e1sa.<\/b> A helyre\u00e1ll\u00edt\u00e1s alatt a tesztek megl\u00e9v\u0151 lojalit\u00e1si rendszer \u00e1llapot\u00e1hoz val\u00f3 igaz\u00edt\u00e1s\u00e1t \u00e9s a tesztek utPLSQL szabv\u00e1nyoknak val\u00f3 megfeleltet\u00e9s\u00e9t \u00e9rtj\u00fck. <\/li>\n<li><b>A probl\u00e9ma megold\u00e1sa a meg\u00e9rt\u00e9s ter\u00e9n, hogy pontosan milyen m\u00f3dszerek \u00e9s folyamatok vannak automatikus tesztekkel lefedve. <\/b>Ezt az inform\u00e1ci\u00f3t vagy fejben kell tartani, vagy k\u00f6zvetlen\u00fcl az automatikus teszt k\u00f3dja alapj\u00e1n kell k\u00f6vetkeztet\u00e9seket levonni. Ez\u00e9rt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy l\u00e9trehozunk egy katalogust. Minden automatikus teszth\u00f6z egyedi mnemonikus k\u00f3dot rendel\u00fcnk, le\u00edr\u00e1st k\u00e9sz\u00edt\u00fcnk \u00e9s r\u00f6gz\u00edtj\u00fck a be\u00e1ll\u00edt\u00e1sokat (p\u00e9ld\u00e1ul, milyen k\u00f6r\u00fclm\u00e9nyek k\u00f6z\u00f6tt kell futnia, vagy mi t\u00f6rt\u00e9njen, ha a teszt fut\u00e1sa sikertelen lett). Alapvet\u0151en metainform\u00e1ci\u00f3kat t\u00f6lt\u00f6tt\u00fcnk ki az automatikus tesztekr\u0151l, \u00e9s ezeket a metainform\u00e1ci\u00f3kat az utPLSQL s\u00e9ma szabv\u00e1nyos t\u00e1bl\u00e1iba helyezt\u00fck.<\/li>\n<li><b>T\u00e1g\u00edt\u00e1si strat\u00e9gia meghat\u00e1roz\u00e1sa, azaz annak a funkci\u00f3nak a kiv\u00e1laszt\u00e1sa, amely automatikus tesztekkel ellen\u0151rizhet\u0151.<\/b> H\u00e1rom dologra szeretn\u00e9nk figyelni: a rendszer \u00faj fejleszt\u00e9sei, a gy\u00e1rt\u00e1si incidensek \u00e9s a rendszer kulcsfolyamatai. \u00cdgy p\u00e1rhuzamosan fejl\u0151d\u00fcnk a kiad\u00e1ssal, biztos\u00edtva a magasabb min\u0151s\u00e9get, \u00e9s k\u00f6zben b\u0151v\u00edtj\u00fck a regresszi\u00f3t, valamint biztos\u00edtjuk a rendszer megb\u00edzhat\u00f3s\u00e1g\u00e1t kritikus helyeken. Az els\u0151 ilyen sz\u0171k keresztmetszet a kedvezm\u00e9nyek \u00e9s jutalmak eloszt\u00e1s\u00e1nak folyamata volt.<\/li>\n<li><b>Term\u00e9szetesen \u00faj automatikus tesztek fejleszt\u00e9s\u00e9vel foglalkoztunk. <\/b>Az egyik els\u0151 kiad\u00e1si feladat a rendszerszint\u0171 lojalit\u00e1si mint\u00e1k teljes\u00edtm\u00e9ny\u00e9nek \u00e9rt\u00e9kel\u00e9se volt. A projekt\u00fcnkben van egy blokk, amelyben r\u00f6gz\u00edtett SQL lek\u00e9rdez\u00e9sek tal\u00e1lhat\u00f3k, amelyek k\u00fcl\u00f6nb\u00f6z\u0151 felt\u00e9telek alapj\u00e1n v\u00e1logatj\u00e1k az \u00fcgyfeleket. P\u00e9ld\u00e1ul az \u00f6sszes \u00fcgyf\u00e9l list\u00e1j\u00e1nak lek\u00e9r\u00e9se, akinek az utols\u00f3 v\u00e1s\u00e1rl\u00e1sa egy adott v\u00e1rosban t\u00f6rt\u00e9nt, vagy azoknak az \u00fcgyfeleknek a list\u00e1ja, akiknek a v\u00e1s\u00e1rl\u00e1s\u00e1nak \u00e1tlagos \u00f6sszege magasabb egy meghat\u00e1rozott \u00e9rt\u00e9kn\u00e9l. Automatikus tesztek \u00edr\u00e1s\u00e1val ellen\u0151rizt\u00fck a meghat\u00e1rozott mint\u00e1kat, r\u00f6gz\u00edtett\u00fck a referencia teljes\u00edtm\u00e9nyparam\u00e9tereket, tov\u00e1bb\u00e1 lehet\u0151s\u00e9g\u00fcnk ny\u00edlt terhel\u00e9ses tesztel\u00e9sre is.<\/li>\n<li><b>Az automatikus tesztek kezel\u00e9se k\u00e9nyelmes kell, hogy legyen.<\/b>. A leggyakrabban v\u00e9gzett k\u00e9t m\u0171velet a tesztel\u00e9s elind\u00edt\u00e1sa \u00e9s a tesztadatok l\u00e9trehoz\u00e1sa. \u00cdgy a rendszer\u00fcnkben k\u00e9t seg\u00e9dmodul jelent meg: egy ind\u00edt\u00f3 modul \u00e9s egy adatgener\u00e1l\u00f3 modul.\n<p>Az ind\u00edt\u00f3 modul egy univerz\u00e1lis elj\u00e1r\u00e1s form\u00e1j\u00e1ban van megval\u00f3s\u00edtva, amely egy bemeneti sz\u00f6veges param\u00e9tert fogad. Mint param\u00e9ter, \u00e1tadhat\u00f3 a teszt neve, a csomag neve, a teszt azonos\u00edt\u00f3ja, az automatikus teszt konfigur\u00e1ci\u00f3ja vagy egy fenntartott kulcssz\u00f3. Az elj\u00e1r\u00e1s kiv\u00e1lasztja \u00e9s elind\u00edtja az \u00f6sszes automatikus tesztet, amely teljes\u00edti a felt\u00e9teleket.<\/p>\n<p>Az adatgener\u00e1l\u00f3 modul egy csomag form\u00e1j\u00e1ban van bemutatva, amelyben minden tesztelend\u0151 rendszer objektumhoz (adatb\u00e1zis t\u00e1bl\u00e1hoz) speci\u00e1lis elj\u00e1r\u00e1s lett l\u00e9trehozva, amely adatokat insert\u00e1l bel\u00e9. Az elj\u00e1r\u00e1s maxim\u00e1lisan kit\u00f6lti az alap\u00e9rtelmezett \u00e9rt\u00e9keket, \u00edgy az objektumok szinte egyetlen kattint\u00e1sra l\u00e9trehozhat\u00f3k. Az egyszer\u0171bb haszn\u00e1lat \u00e9rdek\u00e9ben elk\u00e9sz\u00fcltek a gener\u00e1lt adatok mint\u00e1i is. P\u00e9ld\u00e1ul l\u00e9trehozni egy \u00fcgyfelet meghat\u00e1rozott koroszt\u00e1lyban, teszt telefonos kapcsolattal \u00e9s m\u00e1r lebonyol\u00edtott v\u00e1s\u00e1rl\u00e1ssal.<\/li>\n<li><b>Az automatikus teszteknek elfogadhat\u00f3 id\u0151n bel\u00fcl kell elindulniuk \u00e9s m\u0171k\u00f6dni\u00fck. <\/b>Ez\u00e9rt napi \u00e9jszakai ind\u00edt\u00e1st szervezt\u00fcnk, amelynek eredm\u00e9nyeir\u0151l jelent\u00e9s k\u00e9sz\u00fcl \u00e9s elk\u00fcld\u00e9sre ker\u00fcl a fejleszt\u0151csapat minden tagja sz\u00e1m\u00e1ra a v\u00e1llalati levelez\u00e9sen kereszt\u00fcl. A r\u00e9gi automatikus tesztek helyre\u00e1ll\u00edt\u00e1sa \u00e9s \u00faj tesztek l\u00e9trehoz\u00e1sa ut\u00e1n az \u00f6sszes m\u0171k\u00f6d\u00e9si id\u0151 30 percet tett ki. Ez a teljes\u00edtm\u00e9ny mindenkit kiel\u00e9g\u00edtett, mivel az ind\u00edt\u00e1s munkaid\u0151n k\u00edv\u00fcl t\u00f6rt\u00e9nt.\n<p>A sebess\u00e9goptimaliz\u00e1l\u00e1son azonban dolgozni kellett. A h\u0171s\u00e9gprogram friss\u00edt\u00e9se a termel\u00e9si k\u00f6rnyezetben \u00e9jszaka t\u00f6rt\u00e9nik. Az egyik kiad\u00e1s keret\u00e9ben \u00e9jszaka s\u00fcrg\u0151sen m\u00f3dos\u00edt\u00e1sokat kellett v\u00e9gezni. A 3 \u00f3r\u00e1s \u00e9jjeli automatikus tesztek eredm\u00e9nyeire val\u00f3 f\u00e9l\u00f3r\u00e1s v\u00e1rakoz\u00e1s nem tette boldogg\u00e1 a kiad\u00e1s\u00e9rt felel\u0151s szem\u00e9lyt (tisztelettel \u00fcdv\u00f6z\u00f6lj\u00fck Vasjukov Aleksejt!), \u00e9s m\u00e1snap reggel sok bar\u00e1ts\u00e1gos sz\u00f3t mondtak a rendszer\u00fcnkr\u0151l. V\u00e9g\u00fcl 5 perces norm\u00e1t \u00e1llap\u00edtottunk meg a munk\u00e1ra.<\/p>\n<p>A teljes\u00edtm\u00e9ny gyors\u00edt\u00e1sa \u00e9rdek\u00e9ben k\u00e9t m\u00f3dszert alkalmaztunk: az automatikus teszteket h\u00e1rom p\u00e1rhuzamos folyamatban kezdt\u00fck futtatni, ami a h\u0171s\u00e9gprogramunk architekt\u00far\u00e1j\u00e1nak k\u00f6sz\u00f6nhet\u0151en nagyon k\u00e9nyelmes. Ezen k\u00edv\u00fcl lemondtunk arr\u00f3l a megk\u00f6zel\u00edt\u00e9sr\u0151l, amikor az automatikus teszt nem hozott l\u00e9tre tesztadatokat, hanem pr\u00f3b\u00e1lta megtal\u00e1lni a rendszerben a megfelel\u0151ket. A m\u00f3dos\u00edt\u00e1sok ut\u00e1n a teljes m\u0171k\u00f6d\u00e9si id\u0151 3-4 percre cs\u00f6kkent.<\/li>\n<li><b>Az automatikus tesztekr\u0151l sz\u00f3l\u00f3 projektet k\u00e9pesnek kell lenn\u00fcnk k\u00fcl\u00f6nf\u00e9le k\u00f6rnyezetekben telep\u00edteni.<\/b> A kezdeti id\u0151szakban pr\u00f3b\u00e1lkoztunk saj\u00e1t bat-f\u00e1jlokat \u00edrni, de vil\u00e1goss\u00e1 v\u00e1lt, hogy a saj\u00e1t automatiz\u00e1lt telep\u00edt\u00e9s teljes r\u00e9m\u00e1lom, \u00e9s ipari megold\u00e1sok fel\u00e9 fordultunk. Mivel a projekt nagyon sok k\u00f3dot tartalmaz (els\u0151sorban az automatikus tesztek k\u00f3dj\u00e1t t\u00e1roljuk) \u00e9s nagyon kev\u00e9s adatot (a f\u0151 adat a tesztk\u00f3dok metaadatai), ez\u00e9rt a Liquibase bevezet\u00e9se a projektbe nagyon egyszer\u0171nek bizonyult.\n<p>Ez egy adatb\u00e1zist\u00f3l f\u00fcggetlen, ny\u00edlt forr\u00e1sk\u00f3d\u00fa k\u00f6nyvt\u00e1r az adatb\u00e1zis-s\u00e9ma v\u00e1ltoz\u00e1sainak nyomon k\u00f6vet\u00e9s\u00e9re, kezel\u00e9s\u00e9re \u00e9s alkalmaz\u00e1s\u00e1ra. Parancssoron vagy olyan keretrendszerek seg\u00edts\u00e9g\u00e9vel kezelhet\u0151, mint az Apache Maven. A Liquibase m\u0171k\u00f6d\u00e9si elve meglehet\u0151sen egyszer\u0171. Van egy bizonyos m\u00f3don megszervezett projekt\u00fcnk, amely v\u00e1ltoz\u00e1sokb\u00f3l vagy skriptekb\u0151l \u00e1ll, amelyeket a c\u00e9lkiszolg\u00e1l\u00f3ra kell telep\u00edteni, \u00e9s ir\u00e1ny\u00edt\u00f3 f\u00e1jlok, amelyek meghat\u00e1rozz\u00e1k, milyen sorrendben \u00e9s mely param\u00e9terekkel kell ezeket a v\u00e1ltoz\u00e1sokat telep\u00edteni. <\/p>\n<p>Az adatb\u00e1zis szintj\u00e9n l\u00e9trej\u00f6n egy speci\u00e1lis t\u00e1bla, amelyben a Liquibase t\u00e1rolja a v\u00e1ltoztat\u00e1sok napl\u00f3j\u00e1t. Minden m\u00f3dos\u00edt\u00e1s rendelkezik egy kisz\u00e1m\u00edtott hash \u00e9rt\u00e9kkel, amelyet minden alkalommal \u00f6sszehasonl\u00edtunk a projekt \u00e9s az adatb\u00e1zis \u00e1llapota k\u00f6z\u00f6tt. A Liquibase seg\u00edts\u00e9g\u00e9vel k\u00f6nnyed\u00e9n alkalmazzuk a rendszer\u00fcnk v\u00e1ltoz\u00e1sait b\u00e1rmelyik k\u00f6rnyezetben. Az automatikus teszteket jelenleg a teszt \u00e9s a kiad\u00e1si k\u00f6rnyezeten, valamint a fejleszt\u0151k szem\u00e9lyes kont\u00e9nerein futtatjuk.<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Unit tesztel\u00e9s az adatb\u00e1zis-kezel\u0151 rendszerekben \u2014 hogyan csin\u00e1ljuk ezt a Sportmasterben, m\u00e1sodik r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/09\/4306f6c33543d38f5d8b77f67e22e247.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTeh\u00e1t besz\u00e9lj\u00fcnk a tesztel\u00e9si rendszer\u00fcnk alkalmaz\u00e1s\u00e1nak eredm\u00e9nyeir\u0151l. <\/p>\n<ol>\n<li>Term\u00e9szetesen, el\u0151sz\u00f6r is meg vagyunk gy\u0151z\u0151dve arr\u00f3l, hogy kezdj\u00fck jobb min\u0151s\u00e9g\u0171 szoftverek fejleszt\u00e9s\u00e9t. Az automatikus teszteket naponta \u00e9s kiad\u00e1sok \u00f3r\u00e1iban futtatj\u00e1k, \u00e9s tucatnyi hib\u00e1t tal\u00e1lnak. R\u00e1ad\u00e1sul ezek k\u00f6z\u00fcl egyes hib\u00e1k csak k\u00f6zvetve kapcsol\u00f3dnak ahhoz a funkci\u00f3hoz, amelyet val\u00f3j\u00e1ban meg akartunk v\u00e1ltoztatni. Nagy k\u00e9ts\u00e9geink vannak afel\u0151l, hogy ezeket a hib\u00e1kat k\u00e9zi tesztel\u00e9ssel felfedezt\u00fck volna. <\/li>\n<li>A csapatunkban megjelent a bizalom abban, hogy a konkr\u00e9t funkci\u00f3 helyesen m\u0171k\u00f6dik... Ez els\u0151sorban a kritikus folyamatainkra vonatkozik. P\u00e9ld\u00e1ul az elm\u00falt hat h\u00f3napban nem volt probl\u00e9m\u00e1nk a kedvezm\u00e9nyek \u00e9s b\u00f3nuszok eloszt\u00e1s\u00e1val kapcsolatban a sz\u00e1ml\u00e1n, annak ellen\u00e9re, hogy a kiad\u00e1sok sor\u00e1n v\u00e1ltoztat\u00e1sokat hajtottunk v\u00e9gre, m\u00edg az el\u0151z\u0151 id\u0151szakokban ezekkel kapcsolatban id\u0151szakonk\u00e9nt probl\u00e9m\u00e1k mer\u00fcltek fel.<\/li>\n<li>Siker\u00fclt cs\u00f6kkenteni a tesztel\u00e9si iter\u00e1ci\u00f3k sz\u00e1m\u00e1t. Annak k\u00f6sz\u00f6nhet\u0151en, hogy az automatikus tesztek az \u00faj funkci\u00f3kra k\u00e9sz\u00fclnek, a min\u0151s\u00e9g-analitikusok \u00e9s a tesztel\u0151k egy\u00fcttm\u0171k\u00f6d\u00e9s\u00e9ben jobb min\u0151s\u00e9g\u0171 k\u00f3dhoz jutnak, mivel az m\u00e1r ellen\u0151rz\u00e9sen ment kereszt\u00fcl.<\/li>\n<li>Az automatiz\u00e1lt tesztel\u00e9s egy r\u00e9sz\u00e9t a fejleszt\u0151k is haszn\u00e1lj\u00e1k. P\u00e9ld\u00e1ul a tesztadatok a kont\u00e9nerekben az objektumok gener\u00e1l\u00f3 modul seg\u00edts\u00e9g\u00e9vel k\u00e9sz\u00fclnek.<\/li>\n<li>Nem elhanyagolhat\u00f3, hogy kialakult a fejleszt\u0151k k\u00f6r\u00e9ben az automatiz\u00e1lt tesztel\u00e9si rendszer \"elfogad\u00e1sa\". Van meg\u00e9rt\u00e9s arr\u00f3l, hogy ez fontos \u00e9s hasznos. A saj\u00e1t tapasztalatom alapj\u00e1n azonban ezt messze nem \u00edgy l\u00e1tom. Az automatikus teszteket \u00edrni kell, karbantartani, fejleszteni, az eredm\u00e9nyeket elemezni, \u00e9s gyakran ezek az id\u0151beli r\u00e1ford\u00edt\u00e1sok egyszer\u0171en nem \u00e9rnek meg. Sokkal k\u00f6nnyebb bemenni a termel\u00e9si k\u00f6rnyezetbe, \u00e9s ott megoldani a probl\u00e9m\u00e1kat. N\u00e1lunk a fejleszt\u0151k sorban \u00e1llnak, \u00e9s arra k\u00e9rnek minket, hogy fedj\u00fck le a funkci\u00f3ikat automatikus tesztekkel.<\/li>\n<\/ol>\n<h2>Mi k\u00f6vetkezik<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Unit tesztel\u00e9s az adatb\u00e1zis-kezel\u0151 rendszerekben \u2014 hogyan csin\u00e1ljuk ezt a Sportmasterben, m\u00e1sodik r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/09\/a11596618e97c0afaa9f5f25b613575e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBesz\u00e9lj\u00fcnk a projekt automatiz\u00e1lt tesztel\u00e9s\u00e9nek fejleszt\u00e9si terveir\u0151l.<\/p>\n<p>A sport\u00e1ruh\u00e1z lojalit\u00e1si rendszere folyamatosan fejl\u0151dik, ez\u00e9rt az automatiz\u00e1lt tesztek terjeszt\u00e9s\u00e9t is v\u00e9gtelen m\u00e9rt\u00e9kben lehet fejleszteni. \u00cdgy a fejl\u0151d\u00e9s f\u0151 ir\u00e1nya a lefedetts\u00e9gi ter\u00fclet b\u0151v\u00edt\u00e9se.<\/p>\n<p>Az automatiz\u00e1lt tesztek sz\u00e1m\u00e1nak n\u00f6veked\u00e9s\u00e9vel az \u00f6sszes teszt id\u0151tartama is egyre n\u0151ni fog, \u00e9s \u00fajra foglalkoznunk kell a teljes\u00edtm\u00e9nnyel. Val\u00f3sz\u00edn\u0171leg a megold\u00e1s a p\u00e1rhuzamos sz\u00e1lak sz\u00e1m\u00e1nak n\u00f6vel\u00e9s\u00e9ben rejlik.<\/p>\n<p>De ezek nyilv\u00e1nval\u00f3 fejl\u0151d\u00e9si ir\u00e1nyok. Ha valami kev\u00e9sb\u00e9 ban\u00e1lisr\u00f3l besz\u00e9l\u00fcnk, emelhetj\u00fck ki a k\u00f6vetkez\u0151t:<\/p>\n<ol>\n<li>Jelenleg az automatiz\u00e1lt tesztek kezel\u00e9se a DBMS szintj\u00e9n t\u00f6rt\u00e9nik, azaz PL\/SQL tud\u00e1sra van sz\u00fcks\u00e9g a sikeres m\u0171k\u00f6d\u00e9shez. Sz\u00fcks\u00e9g eset\u00e9n a rendszer kezel\u00e9s\u00e9t (p\u00e9ld\u00e1ul futtat\u00e1sokat vagy metaadatok l\u00e9trehoz\u00e1s\u00e1t) ki lehet szervezni egy adminisztr\u00e1tori fel\u00fcleten, p\u00e9ld\u00e1ul Jenkins haszn\u00e1lat\u00e1val vagy hasonl\u00f3 eszk\u00f6z\u00f6kkel.<\/li>\n<li>Mindenki szereti a mennyis\u00e9gi \u00e9s min\u0151s\u00e9gi mutat\u00f3kat. Az automatiz\u00e1lt tesztel\u00e9sn\u00e9l egy univerz\u00e1lis mutat\u00f3 a K\u00f3d Lefedetts\u00e9g vagy a metrika fedezete. E mutat\u00f3 seg\u00edts\u00e9g\u00e9vel meg\u00e1llap\u00edthatjuk, hogy a tesztelt rendszer\u00fcnk k\u00f3dj\u00e1nak h\u00e1ny sz\u00e1zal\u00e9ka van lefedve az automatiz\u00e1lt tesztekkel. A 12.2-es verzi\u00f3t\u00f3l kezdve az Oracle lehet\u0151s\u00e9geket biztos\u00edt ennek a mutat\u00f3nak a kisz\u00e1m\u00edt\u00e1s\u00e1ra, \u00e9s javasolja a DBMS_PLSQL_CODE_COVERAGE szabv\u00e1nyos csomag haszn\u00e1lat\u00e1t.\n<p>Az automatiz\u00e1lt tesztel\u00e9si rendszer\u00fcnk kicsit t\u00f6bb mint egy \u00e9ves, \u00e9s tal\u00e1n most van itt az ideje a lefedetts\u00e9g \u00e9rt\u00e9kel\u00e9s\u00e9nek. Az el\u0151z\u0151 projektomban (ami nem a Sportmester volt) hasonl\u00f3 t\u00f6rt\u00e9nt. Egy \u00e9vvel az automatiz\u00e1lt teszteken v\u00e9gzett munka ut\u00e1n a vezet\u0151s\u00e9g feladatot adott, hogy m\u00e9rj\u00fck fel, h\u00e1ny sz\u00e1zal\u00e9kos a lefedetts\u00e9g\u00fcnk. Ha a lefedetts\u00e9g meghaladja az 1%-ot, a vezet\u0151s\u00e9g el\u00e9gedett lett volna. Mi, fejleszt\u0151k, k\u00f6r\u00fclbel\u00fcl 10%-os eredm\u00e9nyre sz\u00e1m\u00edtottunk. Aktiv\u00e1ltuk a k\u00f3d lefedetts\u00e9get, m\u00e9r\u00e9sre ker\u00fclt sor, \u00e9s 20%-ot kaptunk. \u00d6r\u00f6mmel ment\u00fcnk jutalom\u00e9rt, de hogy mi t\u00f6rt\u00e9nt, amikor elment\u00fcnk \u00e9rte, \u00e9s hov\u00e1 indultunk ut\u00e1na, az m\u00e1r egy teljesen m\u00e1sik t\u00f6rt\u00e9net.<\/li>\n<li>Az automatiz\u00e1lt tesztek ellen\u0151rizhetik a kiaj\u00e1nlott webszolg\u00e1ltat\u00e1sokat. Az Oracle ezt teljes m\u00e9rt\u00e9kben lehet\u0151v\u00e9 teszi, \u00e9s t\u00f6bb probl\u00e9m\u00e1val m\u00e1r nem fogunk tal\u00e1lkozni. <\/li>\n<li>\u00c9s term\u00e9szetesen automatiz\u00e1lt tesztel\u00e9si rendszer\u00fcnket m\u00e1s projektekben is alkalmazhatjuk. Az \u00e1ltalunk kidolgozott megold\u00e1s univerz\u00e1lis, \u00e9s csup\u00e1n Oracle haszn\u00e1lat\u00e1t k\u00f6veteli meg. Hallottam, hogy a Sportmester m\u00e1s projektjein is \u00e9rdekl\u0151d\u00e9s mutatkozik az automatikus tesztel\u00e9s ir\u00e1nt, \u00e9s tal\u00e1n elmegy\u00fcnk hozz\u00e1juk.<\/li>\n<\/ol>\n<p><\/p>\n<h2>K\u00f6vetkeztet\u00e9sek<\/h2>\n<p>\nFoglaljuk \u00f6ssze. A Sportmester h\u0171s\u00e9gprogramj\u00e1n\u00e1l siker\u00fclt megval\u00f3s\u00edtanunk egy automatiz\u00e1lt tesztel\u00e9si rendszert. Ennek alapj\u00e1t Stephen Feiershtein utPLSQL megold\u00e1sa k\u00e9pezi. Az utPLSQL k\u00f6r\u00fcl tal\u00e1lhat\u00f3 az automatiz\u00e1lt tesztek k\u00f3dja \u00e9s a seg\u00e9dprogramok: ind\u00edt\u00f3 modul, adatgener\u00e1l\u00f3 modul \u00e9s m\u00e1sok. Az automatiz\u00e1lt tesztek naponta futnak, \u00e9s ami a legfontosabb, m\u0171k\u00f6dnek \u00e9s hasznot hoznak. Meg vagyunk gy\u0151z\u0151dve arr\u00f3l, hogy jobb min\u0151s\u00e9g\u0171 szoftvert kezdt\u00fcnk el fejleszteni. Ezen fel\u00fcl az \u00e1ltalunk kidolgozott megold\u00e1s univerz\u00e1lis \u00e9s szabadon alkalmazhat\u00f3 b\u00e1rmelyik projektben, ahol automatiz\u00e1lt tesztel\u00e9st kell szervezni Oracle adatb\u00e1zisokon.<\/p>\n<p><i>P.S. Ez a cikk nem lett t\u00fal konkr\u00e9t: sok sz\u00f6veg tal\u00e1lhat\u00f3 benne, \u00e9s gyakorlatilag nincsenek technikai p\u00e9ld\u00e1k. Ha glob\u00e1lisan \u00e9rdekes a t\u00e9ma, k\u00e9szen \u00e1llunk arra, hogy folytassuk, \u00e9s visszat\u00e9rj\u00fcnk a folytat\u00e1ssal, ahol elmondjuk, mi v\u00e1ltozott az elm\u00falt f\u00e9l \u00e9vben, \u00e9s bemutatunk k\u00f3d p\u00e9ld\u00e1kat.<\/p>\n<p>K\u00e9rj\u00fck, \u00edrjon komment\u00e1rokat, ha vannak olyan szempontok, amelyekre a j\u00f6v\u0151ben \u00e9rdemes lenne f\u00f3kusz\u00e1lni, vagy k\u00e9rd\u00e9sek, amelyek megv\u00e1laszol\u00e1sra v\u00e1rnak.<\/i><\/p>\n<p class=\"for_users_only_msg\">Csak a regisztr\u00e1lt felhaszn\u00e1l\u00f3k vehetnek r\u00e9szt a szavaz\u00e1son. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">K\u00e9rem, jelentkezzen be.<\/a><\/noindex>, k\u00e9rem.<\/p>\n<h2 class=\"default-block__polling-title\">Folytassuk err\u0151l?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Igen, term\u00e9szetesen<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Nem, k\u00f6sz\u00f6n\u00f6m<\/p>\n<\/li>\n<\/ul>\n<p>    12 felhaszn\u00e1l\u00f3 szavazott. 4 felhaszn\u00e1l\u00f3 tart\u00f3zkodott.<br \/>\n<br \/>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-vtoraya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47Unit tesztek az adatb\u00e1zisban - hogyan csin\u00e1ljuk ezt a Sportmestern\u00e9l, m\u00e1sodik r\u00e9sz | ProHoster","description":"Az els\u0151 r\u00e9sz itt van.","canonical_url":"https:\/\/prohoster.info\/hu\/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":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/37666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=37666"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/37666\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/28269"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=37666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=37666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=37666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}