{"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\/cs\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-pervaya","title":{"rendered":"Unit testy v DBMS \u2013 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habr!<\/p>\n<p>Jmenuji se Maxim Ponomarenko a jsem v\u00fdvoj\u00e1\u0159 ve Sportmasteru. M\u00e1m desetiletou zku\u0161enost v IT oblasti. Kari\u00e9ru jsem za\u010dal v oblasti manu\u00e1ln\u00edho testov\u00e1n\u00ed, pot\u00e9 jsem se p\u0159eorientoval na v\u00fdvoj datab\u00e1z\u00ed. Posledn\u00ed \u010dty\u0159i roky, s vyu\u017eit\u00edm znalost\u00ed z\u00edskan\u00fdch p\u0159i testov\u00e1n\u00ed a v\u00fdvoji, se zab\u00fdv\u00e1m automatizac\u00ed testov\u00e1n\u00ed na \u00farovni DBMS.<\/p>\n<p>V t\u00fdmu Sportmasteru jsem u\u017e n\u011bco m\u00e1lo p\u0159es rok a na jednom z velk\u00fdch projekt\u016f se zab\u00fdv\u00e1m v\u00fdvojem automatizovan\u00e9ho testov\u00e1n\u00ed. V dubnu jsme s kluky z Sportmaster Lab vystupovali na konferenci v Krasnodaru, m\u016fj p\u0159\u00edsp\u011bvek se naz\u00fdval \u201eUnit testy v DBMS\u201c, a nyn\u00ed se s v\u00e1mi o n\u011bj chci pod\u011blit. Textu bude hodn\u011b, proto jsem se rozhodl rozd\u011blit p\u0159\u00edsp\u011bvek na dva. V prvn\u00ed \u010d\u00e1sti si pov\u00edme o automatizovan\u00fdch testech a testov\u00e1n\u00ed obecn\u011b, a ve druh\u00e9 se podrobn\u011bji zam\u011b\u0159\u00edm na n\u00e1\u0161 syst\u00e9m unit testov\u00e1n\u00ed a v\u00fdsledky jeho pou\u017eit\u00ed.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/464335\/\"><img decoding=\"async\" alt=\"Unit testy v DBMS \u2013 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st\" src=\"\/wp-content\/uploads\/2019\/08\/4e521cc85eb3a3806860a40ab2e4050f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Na za\u010d\u00e1tku trochu nudn\u00e9 teorie. Co je to automatizovan\u00e9 testov\u00e1n\u00ed? Je to testov\u00e1n\u00ed, kter\u00e9 se prov\u00e1d\u00ed pomoc\u00ed softwarov\u00fdch prost\u0159edk\u016f, a v modern\u00edm IT se st\u00e1le \u010dast\u011bji pou\u017e\u00edv\u00e1 p\u0159i v\u00fdvoji softwaru. Je to zp\u016fsobeno t\u00edm, \u017ee spole\u010dnosti rostou, rostou jejich informa\u010dn\u00ed syst\u00e9my a t\u00edm p\u00e1dem roste i mno\u017estv\u00ed funkcionality, kterou je nutn\u00e9 testovat. Prov\u00e1d\u011bt manu\u00e1ln\u00ed testov\u00e1n\u00ed se st\u00e1v\u00e1 st\u00e1le n\u00e1kladn\u011bj\u0161\u00edm a obt\u00ed\u017en\u011bj\u0161\u00edm.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPracoval jsem v jedn\u00e9 velk\u00e9 spole\u010dnosti, jej\u00ed\u017e verze vych\u00e1zej\u00ed ka\u017ed\u00e9 dva m\u011bs\u00edce. P\u0159i\u010dem\u017e cel\u00fd m\u011bs\u00edc se v\u011bnoval deseti tester\u016fm, kte\u0159\u00ed manu\u00e1ln\u011b ov\u011b\u0159ovali funk\u010dnost. D\u00edky zaveden\u00ed automatizace s mal\u00fdm t\u00fdmem v\u00fdvoj\u00e1\u0159\u016f se n\u00e1m poda\u0159ilo za rok a p\u016fl zkr\u00e1tit dobu testov\u00e1n\u00ed na 2 t\u00fddny. Nejen\u017ee jsme zv\u00fd\u0161ili rychlost testov\u00e1n\u00ed, ale tak\u00e9 jsme zlep\u0161ili jeho kvalitu. Automatizovan\u00e9 testy se spou\u0161t\u011bj\u00ed pravideln\u011b a v\u017edy prov\u00e1d\u011bj\u00ed cel\u00fd soubor p\u0159edem stanoven\u00fdch kontrol, tedy vylu\u010dujeme lidsk\u00fd faktor. <\/p>\n<p>Pro modern\u00ed IT je charakteristick\u00e9, \u017ee od v\u00fdvoj\u00e1\u0159e se o\u010dek\u00e1v\u00e1 nejen psan\u00ed k\u00f3du produktu, ale tak\u00e9 psan\u00ed unit test\u016f, kter\u00e9 tento k\u00f3d ov\u011b\u0159uj\u00ed. <\/p>\n<p>Co v\u0161ak d\u011blat, pokud je v\u00e1\u0161 syst\u00e9m p\u0159ev\u00e1\u017en\u011b zalo\u017een na serverov\u00e9 logice? Na trhu neexistuje \u017e\u00e1dn\u00e9 univerz\u00e1ln\u00ed \u0159e\u0161en\u00ed ani nejlep\u0161\u00ed postupy. Obvykle spole\u010dnosti tuto problematiku \u0159e\u0161\u00ed vytv\u00e1\u0159en\u00edm vlastn\u00edho testovac\u00edho syst\u00e9mu. Takov\u00fdto vlastn\u00ed automatizovan\u00fd testovac\u00ed syst\u00e9m byl vytvo\u0159en v na\u0161em projektu, o kter\u00e9m se zm\u00edn\u00edm ve sv\u00e9 prezentaci. <\/p>\n<p><img decoding=\"async\" alt=\"Unit testy v DBMS \u2013 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st\" src=\"\/wp-content\/uploads\/2019\/08\/fee34f7214fb2075ee50fa0f4af14a44.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Testujeme loajalitu<\/h2>\n<p>\nNejprve si pov\u00edme o projektu, kde jsme nasadili syst\u00e9m automatizovan\u00e9ho testov\u00e1n\u00ed. N\u00e1\u0161 projekt je syst\u00e9m loajality Sportmasteru (mimochodem, ji\u017e jsme o n\u011bm psali v <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/453252\/\">tomto p\u0159\u00edsp\u011bvku<\/a><\/noindex>).<\/p>\n<p>Pokud je va\u0161e spole\u010dnost dostate\u010dn\u011b velk\u00e1, m\u00e1 v\u00e1\u0161 syst\u00e9m loajality t\u0159i standardn\u00ed vlastnosti: <\/p>\n<ul>\n<li>V\u00e1\u0161 syst\u00e9m bude vysoce zat\u00ed\u017een\u00fd<\/li>\n<li>V\u00e1\u0161 syst\u00e9m bude obsahovat slo\u017eit\u00e9 v\u00fdpo\u010detn\u00ed procesy<\/li>\n<li>V\u00e1\u0161 syst\u00e9m bude aktivn\u011b roz\u0161i\u0159ov\u00e1n. <\/li>\n<\/ul>\n<p>\nPoj\u010fme to vz\u00edt chronologicky... Souhrnn\u011b, pokud zohledn\u00edme v\u0161echny zna\u010dky Sportmasteru, m\u00e1me na \u00fazem\u00ed Ruska, Ukrajiny, \u010c\u00edny, Kazachst\u00e1nu a B\u011bloruska v\u00edce ne\u017e 1000 obchod\u016f. V t\u011bchto obchodech se denn\u011b uskute\u010dn\u00ed kolem 300 000 n\u00e1kup\u016f. To znamen\u00e1, \u017ee ka\u017edou sekundu k n\u00e1m p\u0159ich\u00e1zej\u00ed 3-4 \u00fa\u010dty. Samoz\u0159ejm\u011b, n\u00e1\u0161 syst\u00e9m loajality je vysoce zat\u00ed\u017een\u00fd. A proto\u017ee je aktivn\u011b pou\u017e\u00edv\u00e1n, mus\u00edme poskytovat nejvy\u0161\u0161\u00ed standardy jej\u00ed kvality, proto\u017ee jak\u00e1koliv chyba v softwaru p\u0159in\u00e1\u0161\u00ed velk\u00e9 finan\u010dn\u00ed, reputa\u010dn\u00ed a dal\u0161\u00ed ztr\u00e1ty. <\/p>\n<p>Sou\u010dasn\u011b v Sportmasteru funguje v\u00edce ne\u017e sto r\u016fzn\u00fdch akc\u00ed. Akce jsou r\u016fzn\u00e9: existuj\u00ed zbo\u017eov\u00e9 akce, akce podle dne v t\u00fddnu, akce v\u00e1zan\u00e9 na konkr\u00e9tn\u00ed obchod, akce na v\u00fd\u0161i \u00fa\u010dtu, akce na po\u010det zbo\u017e\u00ed. Zkr\u00e1tka, nen\u00ed to jednoduch\u00e9. Z\u00e1kazn\u00edci maj\u00ed bonusy, existuj\u00ed promo k\u00f3dy, kter\u00e9 se pou\u017e\u00edvaj\u00ed p\u0159i n\u00e1kupech. To v\u0161e vede k tomu, \u017ee vyhodnocen\u00ed jak\u00e9koli objedn\u00e1vky je pom\u011brn\u011b slo\u017eit\u00fd \u00fakol. <\/p>\n<p>Algoritmus, kter\u00fd realizuje zpracov\u00e1n\u00ed objedn\u00e1vek, je opravdu hrozn\u00fd a slo\u017eit\u00fd. Jak\u00e9koli \u00fapravy tohoto algoritmu p\u0159edstavuj\u00ed zna\u010dn\u00e9 riziko. I zd\u00e1nliv\u011b nev\u00fdznamn\u00e9 zm\u011bny mohou v\u00e9st k velmi nep\u0159edv\u00eddateln\u00fdm efekt\u016fm. A p\u0159itom jsou pr\u00e1v\u011b takov\u00e9 slo\u017eit\u00e9 v\u00fdpo\u010detn\u00ed procesy, zejm\u00e9na ty, kter\u00e9 realizuj\u00ed kritickou funkcionalitu, nejlep\u0161\u00edmi kandid\u00e1ty na automatizaci. Kontrola des\u00edtek shodn\u00fdch p\u0159\u00edpad\u016f ru\u010dn\u011b je \u010dasov\u011b n\u00e1kladn\u00e1. A proto\u017ee vstupn\u00ed bod do procesu z\u016fst\u00e1v\u00e1 nezm\u011bn\u011bn, lze jej jednou popsat a pot\u00e9 rychle vytvo\u0159it automatick\u00e9 testy a m\u00edt jistotu v bezchybnosti funk\u010dnosti.<\/p>\n<p>Na\u0161e syst\u00e9m je aktivn\u011b vyu\u017e\u00edv\u00e1n, tak\u017ee podnik bude o\u010dek\u00e1vat od v\u00e1s n\u011bco nov\u00e9ho, dr\u017eet krok s dobou a b\u00fdt orientov\u00e1n na klienty. V na\u0161em syst\u00e9mu v\u011brnosti vych\u00e1zej\u00ed vyd\u00e1n\u00ed ka\u017ed\u00e9 dva m\u011bs\u00edce. To znamen\u00e1, \u017ee ka\u017ed\u00e9 dva m\u011bs\u00edce mus\u00edme prov\u00e1d\u011bt \u00fapln\u00fd regres cel\u00e9ho syst\u00e9mu. Samoz\u0159ejm\u011b, stejn\u011b jako v ka\u017ed\u00e9m modern\u00edm IT, v\u00fdvoj neproch\u00e1z\u00ed okam\u017eit\u011b na produkci. Za\u010d\u00edn\u00e1 na v\u00fdvojov\u00e9 lince, pot\u00e9 postupn\u011b proch\u00e1z\u00ed testovac\u00edm prost\u0159ed\u00edm, releasov\u00fdm, akcepta\u010dn\u00edm a a\u017e pot\u00e9 se dost\u00e1v\u00e1 na produkci. Minim\u00e1ln\u011b na testovac\u00edm a releasov\u00e9m prost\u0159ed\u00ed mus\u00edme prov\u00e1d\u011bt \u00fapln\u00fd regres cel\u00e9ho syst\u00e9mu. <\/p>\n<p>Popisovan\u00e9 vlastnosti jsou standardn\u00ed pro prakticky jak\u00fdkoliv syst\u00e9m v\u011brnosti. Poj\u010fme si promluvit o zvl\u00e1\u0161tnostech na\u0161eho projektu.<\/p>\n<p>Technologicky je logika na\u0161eho syst\u00e9mu v\u011brnosti z 90 % serverov\u00e1 a je implementov\u00e1na na Oracle. Existuje klient vystaven\u00fd na Delphi, kter\u00fd vykon\u00e1v\u00e1 funkci APM administr\u00e1tora. Existuj\u00ed vystaven\u00e9 webov\u00e9 slu\u017eby pro extern\u00ed aplikace (nap\u0159\u00edklad webov\u00e9 str\u00e1nky). Je tedy docela logick\u00e9, \u017ee pokud budeme zav\u00e1d\u011bt syst\u00e9m automatizovan\u00e9ho testov\u00e1n\u00ed, budeme to d\u011blat na Oracle.<\/p>\n<p>Loajalitn\u00ed syst\u00e9m ve Sportmasteru existuje v\u00edce ne\u017e 7 let a byl vyvinut jednotliv\u00fdmi v\u00fdvoj\u00e1\u0159i... Pr\u016fm\u011brn\u00fd po\u010det v\u00fdvoj\u00e1\u0159\u016f na na\u0161em projektu v pr\u016fb\u011bhu t\u011bchto 7 let \u010dinil 3-4 osoby. Av\u0161ak v posledn\u00edm roce se n\u00e1\u0161 t\u00fdm v\u00fdrazn\u011b rozrostl a nyn\u00ed na projektu pracuje 10 lid\u00ed. To znamen\u00e1, \u017ee do projektu p\u0159ich\u00e1zej\u00ed lid\u00e9, kte\u0159\u00ed nejsou obezn\u00e1meni s b\u011b\u017en\u00fdmi \u00fakoly, procesy a architekturou. A existuje zv\u00fd\u0161en\u00e9 riziko, \u017ee p\u0159ehl\u00e9dneme chyby.<\/p>\n<p>Pro projekt je charakteristick\u00e9, \u017ee neexistuj\u00ed vy\u010dlen\u011bn\u00ed testovac\u00ed prost\u0159edky jako st\u00e1l\u00e9 jednotky. Testov\u00e1n\u00ed samoz\u0159ejm\u011b prob\u00edh\u00e1, ale testov\u00e1n\u00edm se zab\u00fdvaj\u00ed analytici vedle sv\u00fdch dal\u0161\u00edch hlavn\u00edch povinnost\u00ed: komunikace s obchodn\u00edmi z\u00e1kazn\u00edky, u\u017eivateli, zpracov\u00e1v\u00e1n\u00ed po\u017eadavk\u016f na syst\u00e9m atd. a tak d\u00e1le... I p\u0159es to, \u017ee testov\u00e1n\u00ed prob\u00edh\u00e1 velmi kvalitn\u011b (co\u017e je d\u016fle\u017eit\u00e9 zm\u00ednit, proto\u017ee se to m\u016f\u017ee dostat k n\u011bkter\u00e9mu z analytik\u016f), efektivita specializace a soust\u0159ed\u011bn\u00ed na jednu v\u011bc nikdo nezru\u0161il.<\/p>\n<p>Vzhledem k uveden\u00e9mu se pro zv\u00fd\u0161en\u00ed kvality dod\u00e1van\u00e9ho produktu a zkr\u00e1cen\u00ed doby v\u00fdvoje je my\u0161lenka automatizace testov\u00e1n\u00ed v projektu velmi logick\u00e1. V r\u016fzn\u00fdch etap\u00e1ch existence loajalitn\u00edho syst\u00e9mu se jednotliv\u00ed v\u00fdvoj\u00e1\u0159i sna\u017eili pokr\u00fdt sv\u016fj k\u00f3d jednotkov\u00fdmi testy. Celkov\u011b to byl pom\u011brn\u011b roztr\u017een\u00fd proces, kde ka\u017ed\u00fd pou\u017e\u00edval svou architekturu a metody. Spole\u010dn\u00fdm v\u00fdsledkem pro jednotkov\u00e9 testy bylo, \u017ee testy byly vyv\u00edjeny, n\u011bjakou dobu pou\u017e\u00edv\u00e1ny, ukl\u00e1d\u00e1ny do verzovac\u00edho \u00falo\u017ei\u0161t\u011b soubor\u016f, ale v ur\u010dit\u00e9m okam\u017eiku p\u0159estaly b\u011b\u017eet a byly zapomenuty. V prvn\u00ed \u0159ad\u011b se to stalo proto, \u017ee testy byly v\u00edce v\u00e1z\u00e1ny na konkr\u00e9tn\u00edho prov\u00e1d\u011bj\u00edc\u00edho, ne\u017e na projekt.<\/p>\n<h2>Pomoci p\u0159ich\u00e1z\u00ed utPLSQL<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Unit testy v DBMS \u2013 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st\" src=\"\/wp-content\/uploads\/2019\/08\/f21dfcb085aace687566dc51cb9b5613.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00ed\u00edte n\u011bco o Stephenovi Feuersteinovi? <\/p>\n<p>Toto je chytr\u00fd chlap\u00edk, kter\u00fd zna\u010dnou \u010d\u00e1st sv\u00e9 kari\u00e9ry v\u011bnoval pr\u00e1ci s Oracle a PL\/SQL, napsal o tom dost velk\u00e9 mno\u017estv\u00ed prac\u00ed. Jedna zn\u00e1m\u00e1 jeho kniha se dokonce jmenuje: \u201eOracle PL\/SQL. Pro profesion\u00e1ly\u201c. Pr\u00e1v\u011b Stephen je autorem \u0159e\u0161en\u00ed utPLSQL, co\u017e je zkratka pro Unit Testing framework for Oracle PL\/SQL. \u0158e\u0161en\u00ed utPLSQL bylo vytvo\u0159eno v roce 2016, ale nad\u00e1le se na n\u011bm aktivn\u011b pracuje a vyd\u00e1vaj\u00ed se nov\u00e9 verze. K datu p\u0159edn\u00e1\u0161ky byla posledn\u00ed verze datov\u00e1na k 24. b\u0159eznu 2019.<br \/>\nCo to vlastn\u011b je? Je to samostatn\u00fd open source projekt. V\u00e1\u017e\u00ed p\u00e1r megabajt\u016f i s p\u0159\u00edklady a dokumentac\u00ed. Fyzicky p\u0159edstavuje samostatn\u00e9 sch\u00e9ma v datab\u00e1zi ORACLE se sadou bal\u00ed\u010dk\u016f a tabulek pro organizaci jednotkov\u00e9ho testov\u00e1n\u00ed. Instalace trv\u00e1 jen p\u00e1r sekund. Vynikaj\u00edc\u00ed vlastnost\u00ed utPLSQL je jednoduchost pou\u017e\u00edv\u00e1n\u00ed. <br \/>\nGlob\u00e1ln\u011b utPLSQL p\u0159edstavuje mechanismus pro spou\u0161t\u011bn\u00ed jednotkov\u00fdch test\u016f, p\u0159i\u010dem\u017e pod jednotkov\u00fdm testem rozum\u00edme b\u011b\u017en\u00e9 bal\u00ed\u010dkov\u00e9 procedury Oracle, jejich\u017e organizace vyhovuje ur\u010dit\u00fdm pravidl\u016fm. Krom\u011b spu\u0161t\u011bn\u00ed v utPLSQL se uchov\u00e1v\u00e1 log v\u0161ech va\u0161ich testovac\u00edch b\u011bh\u016f a tak\u00e9 zde je intern\u00ed syst\u00e9m reportov\u00e1n\u00ed.<\/p>\n<p>Pod\u00edvejme se na p\u0159\u00edkladu, jak vypad\u00e1 k\u00f3d jednotkov\u00e9ho testu implementovan\u00e9ho podle t\u00e9to metodiky.<\/p>\n<p><img decoding=\"async\" alt=\"Unit testy v DBMS \u2013 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st\" src=\"\/wp-content\/uploads\/2019\/08\/6fc8cc2d84c6c32a8b5269ebad1d2381.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa obrazovce je zobrazen k\u00f3d typick\u00e9 specifikace bal\u00ed\u010dku s jednotkov\u00fdmi testy. Jak\u00e9 jsou povinn\u00e9 po\u017eadavky? Bal\u00ed\u010dek mus\u00ed m\u00edt prefix \u201eutp_\u201c. Stejn\u00fd prefix by m\u011bly m\u00edt v\u0161echny procedury s testy. Bal\u00ed\u010dek mus\u00ed obsahovat dv\u011b standardn\u00ed procedury: \u201eutp_setup\u201c a \u201eutp_teardown\u201c. Prvn\u00ed procedura se vol\u00e1 p\u0159ed ka\u017ed\u00fdm jednotkov\u00fdm testem, druh\u00e1 \u2014 po jeho spu\u0161t\u011bn\u00ed.<\/p>\n<p>\u201eutp_setup\u201c obvykle p\u0159ipravuje n\u00e1\u0161 syst\u00e9m k proveden\u00ed jednotkov\u00e9ho testu, nap\u0159\u00edklad vytv\u00e1\u0159\u00ed testovac\u00ed data. \u201eutp_teardown\u201c \u2014 naopak, v\u0161echno vrac\u00ed do v\u00fdchoz\u00edho nastaven\u00ed a resetuje v\u00fdsledky b\u011bhu.<\/p>\n<p>Toto je p\u0159\u00edklad nejjednodu\u0161\u0161\u00edho unit testu, kter\u00fd ov\u011b\u0159uje normalizaci zadan\u00e9ho telefonn\u00edho \u010d\u00edsla klienta na standardn\u00ed form\u00e1t na\u0161\u00ed loajalitn\u00ed syst\u00e9mu. Neexistuj\u00ed \u017e\u00e1dn\u00e9 z\u00e1vazn\u00e9 standardy, jak ps\u00e1t procedury s unit testy. Obvykle se prov\u00e1d\u00ed vol\u00e1n\u00ed n\u011bjak\u00e9 metody testovan\u00e9ho syst\u00e9mu a v\u00fdsledek vr\u00e1cen\u00fd touto metodou se porovn\u00e1v\u00e1 s referen\u010dn\u00edm. Je d\u016fle\u017eit\u00e9, aby porovn\u00e1n\u00ed referen\u010dn\u00edho a z\u00edskan\u00e9ho v\u00fdsledku prob\u00edhalo prost\u0159ednictv\u00edm standardn\u00edch metod utPLSQL.<\/p>\n<p>V unit testu m\u016f\u017ee b\u00fdt libovoln\u00fd po\u010det kontrol. Jak je vid\u011bt z p\u0159\u00edkladu, prov\u00e1d\u00edme \u010dty\u0159i sekven\u010dn\u00ed vol\u00e1n\u00ed testovan\u00e9 metody pro normalizaci telefonn\u00edho \u010d\u00edsla a po ka\u017ed\u00e9m vol\u00e1n\u00ed hodnot\u00edme v\u00fdsledek. P\u0159i v\u00fdvoji unit testu je t\u0159eba br\u00e1t v \u00favahu, \u017ee existuj\u00ed kontroly, kter\u00e9 nemaj\u00ed \u017e\u00e1dn\u00fd vliv na syst\u00e9m, a po n\u011bkter\u00fdch je nutn\u00e9 se vr\u00e1tit do v\u00fdchoz\u00edho stavu syst\u00e9mu. <br \/>\nNap\u0159\u00edklad v uveden\u00e9m unit testu pouze form\u00e1tujeme vstupn\u00ed telefonn\u00ed \u010d\u00edslo, co\u017e nijak neovliv\u0148uje loajalitn\u00ed syst\u00e9m. <\/p>\n<p>A pokud p\u00ed\u0161eme unit testy pro metodu vytv\u00e1\u0159en\u00ed nov\u00e9ho klienta, pak po ka\u017ed\u00e9 kontrole bude v syst\u00e9mu vytvo\u0159en nov\u00fd klient, co\u017e m\u016f\u017ee ovlivnit dal\u0161\u00ed spu\u0161t\u011bn\u00ed testu.<\/p>\n<p><img decoding=\"async\" alt=\"Unit testy v DBMS \u2013 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st\" src=\"\/wp-content\/uploads\/2019\/08\/7d649b354776c15d8a70a0d9a05363b4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTakto se spou\u0161t\u00ed unit testy. Jsou p\u0159\u00edpustn\u00e9 dv\u011b varianty spu\u0161t\u011bn\u00ed: spu\u0161t\u011bn\u00ed v\u0161ech unit test\u016f z konkr\u00e9tn\u00edho bal\u00ed\u010dku nebo spu\u0161t\u011bn\u00ed konkr\u00e9tn\u00edho unit testu v konkr\u00e9tn\u00edm bal\u00ed\u010dku.<\/p>\n<p><img decoding=\"async\" alt=\"Unit testy v DBMS \u2013 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st\" src=\"\/wp-content\/uploads\/2019\/08\/46628b60eb0fe0d20df822ddca914947.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTakto vypad\u00e1 p\u0159\u00edklad intern\u00edho syst\u00e9mu reportingu. Na z\u00e1klad\u011b v\u00fdsledk\u016f pr\u00e1ce unit testu utPLSQL vytv\u00e1\u0159\u00ed malou zpr\u00e1vu. V n\u00ed vid\u00edme v\u00fdsledek ka\u017ed\u00e9 konkr\u00e9tn\u00ed kontroly a celkov\u00fd v\u00fdsledek proveden\u00ed unit testu. <\/p>\n<h2>6 pravidel automatizovan\u00fdch test\u016f<\/h2>\n<p>\nP\u0159ed t\u00edm, ne\u017e jsme za\u010dali vytv\u00e1\u0159et nov\u00fd syst\u00e9m automatizovan\u00e9ho testov\u00e1n\u00ed loajalitn\u00edho syst\u00e9mu, jsme spole\u010dn\u011b s veden\u00edm stanovili principy, kter\u00fdm by na\u0161e budouc\u00ed automatizovan\u00e9 testy m\u011bly vyhovovat.<\/p>\n<p><img decoding=\"async\" alt=\"Unit testy v DBMS \u2013 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st\" src=\"\/wp-content\/uploads\/2019\/08\/84be59663203abb373e7074b9a6cd4e4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Automatizovan\u00e9 testy by m\u011bly b\u00fdt efektivn\u00ed a m\u011bly by p\u0159in\u00e1\u0161et prosp\u011bch. M\u00e1me skv\u011bl\u00e9 v\u00fdvoj\u00e1\u0159e, o kter\u00fdch je t\u0159eba mluvit, proto\u017ee n\u011bkte\u0159\u00ed z nich toto sd\u011blen\u00ed ur\u010dit\u011b uvid\u00ed, a p\u00ed\u0161\u00ed skv\u011bl\u00fd k\u00f3d. Ale i jejich skv\u011bl\u00fd k\u00f3d nen\u00ed dokonal\u00fd a obsahoval, obsahuje a bude obsahovat chyby. Automatizovan\u00e9 testy by m\u011bly tyto chyby odhalit. Pokud ne, bu\u010f p\u00ed\u0161eme \u0161patn\u00e9 automatizovan\u00e9 testy, nebo jsme se dostali do mrtv\u00e9 z\u00f3ny, kter\u00e1 se v z\u00e1sad\u011b nedotahuje. V obou p\u0159\u00edpadech d\u011bl\u00e1me n\u011bco \u0161patn\u011b a n\u00e1\u0161 p\u0159\u00edstup je jednodu\u0161e bezv\u00fdznamn\u00fd.<\/li>\n<li>Automatizovan\u00e9 testy by m\u011bly b\u00fdt pou\u017e\u00edv\u00e1ny. Je bezv\u00fdznamn\u00e9 str\u00e1vit spoustu \u010dasu a \u00fasil\u00ed na psan\u00ed softwarov\u00e9ho produktu, ulo\u017eit jeho repozit\u00e1\u0159 a zapomenout na n\u011bj. Testy by m\u011bly b\u00fdt spou\u0161t\u011bny, a to co nejpravideln\u011bji.<\/li>\n<li>Automatizovan\u00e9 testy by m\u011bly fungovat stabiln\u011b. Bez ohledu na denn\u00ed dobu, spou\u0161t\u011bc\u00ed stanici a dal\u0161\u00ed nastaven\u00ed syst\u00e9mu by m\u011bly testy v\u017edy p\u0159in\u00e1\u0161et stejn\u00fd v\u00fdsledek. Obvykle je to zaji\u0161t\u011bno t\u00edm, \u017ee automatizovan\u00e9 testy pracuj\u00ed se speci\u00e1ln\u00edmi testovac\u00edmi daty s fixn\u00edmi nastaven\u00edmi syst\u00e9mu.<\/li>\n<li>Automatizovan\u00e9 testy by m\u011bly pracovat s p\u0159ijatelnou rychlost\u00ed pro v\u00e1\u0161 projekt. Tato doba je ur\u010dena individu\u00e1ln\u011b pro ka\u017ed\u00fd syst\u00e9m. N\u011bkdo si m\u016f\u017ee dovolit pracovat cel\u00fd den, zat\u00edmco jin\u00ed mus\u00ed b\u00fdt kriticky rychl\u00ed, aby se ve\u0161li do sekund. Jak\u00fdch rychlostn\u00edch norem jsme dos\u00e1hli v na\u0161em projektu, pov\u00edm trochu pozd\u011bji.<\/li>\n<li>V\u00fdvoj automatizovan\u00fdch test\u016f by m\u011bl b\u00fdt flexibiln\u00ed. Nen\u00ed \u017e\u00e1douc\u00ed se vzd\u00e1vat testov\u00e1n\u00ed jak\u00e9koli funkce jen proto, \u017ee jsme to je\u0161t\u011b ned\u011blali nebo z n\u011bjak\u00fdch jin\u00fdch d\u016fvod\u016f. utPLSQL nekladou \u017e\u00e1dn\u00e1 omezen\u00ed na v\u00fdvoj a Oracle v z\u00e1sad\u011b umo\u017e\u0148uje realizovat r\u016fzn\u00e9 v\u011bci. V\u011bt\u0161ina \u00faloh m\u00e1 \u0159e\u0161en\u00ed, ot\u00e1zka je pouze \u010dasu a vynalo\u017een\u00e9ho \u00fasil\u00ed.<\/li>\n<li>Nasazen\u00ed. M\u00e1me n\u011bkolik stanic, kde je pot\u0159eba spou\u0161t\u011bn\u00ed test\u016f. Na ka\u017ed\u00e9 z t\u011bchto stanic m\u016f\u017ee b\u00fdt kdykoli aktualizov\u00e1n dump dat. Je t\u0159eba v\u00e9st projekt s automatizovan\u00fdmi testy tak, aby bylo mo\u017en\u00e9 bezbolestn\u011b prov\u00e1d\u011bt jeho \u00faplnou nebo \u010d\u00e1ste\u010dnou instalaci.<\/li>\n<\/ol>\n<p>A ve druh\u00e9m p\u0159\u00edsp\u011bvku za p\u00e1r dn\u00ed pov\u00edm, co jsme ud\u011blali a jak\u00fdch v\u00fdsledk\u016f jsme dos\u00e1hli.<br \/>\n<br \/>Zdroj: <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.3 - 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\/cs\/blog\/administrirovanie\/unit-testy-v-subd-kak-my-delaem-eto-v-sportmastere-chast-pervaya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Unit testy v DBMS \u2014 jak to d\u011bl\u00e1me ve Sportmasteru, prvn\u00ed \u010d\u00e1st | ProHoster","description":"Ahoj, Habr! Jmenuji se Maxim Ponomarenko a jsem v\u00fdvoj\u00e1\u0159 ve Sportmasteru. M\u00e1m desetiletou praxi v oblasti IT. Za\u010d\u00ednal jsem kari\u00e9ru v oblasti ru\u010dn\u00edho testov\u00e1n\u00ed, pot\u00e9 jsem p\u0159e\u0161el na v\u00fdvoj datab\u00e1z\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/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":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/37495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=37495"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37495\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/28136"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=37495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=37495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=37495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}