{"id":437,"date":"2011-02-09T16:51:20","date_gmt":"2011-02-09T15:51:20","guid":{"rendered":"http:\/\/agile.sk\/?p=437"},"modified":"2011-02-09T16:51:20","modified_gmt":"2011-02-09T15:51:20","slug":"co-sa-meni-nie-je-konstantne-alebo-preco-to-bez-automatizacie-nejde","status":"publish","type":"post","link":"https:\/\/agile.sk\/?p=437","title":{"rendered":"\u010co sa men\u00ed, nie je kon\u0161tantn\u00e9, alebo pre\u010do to bez automatiz\u00e1cie nejde"},"content":{"rendered":"<p>Jednu z\u00a0vec\u00ed o\u00a0riaden\u00ed, ktor\u00fa som sa nau\u010dil je, \u017ee pri dlhotrvaj\u00facich projektoch je d\u00f4le\u017eit\u00e9 rozli\u0161ova\u0165 kon\u0161tantn\u00e9 a\u00a0meniace sa veli\u010diny. Pod veli\u010dinami m\u00f4\u017eeme rozumie\u0165 ak\u00e9ko\u013evek po\u010dty alebo \u010d\u00edsla, ktor\u00e9 s\u00favisia s\u00a0projektom. Napr\u00edklad po\u010det riadkov zdrojov\u00e9ho k\u00f3du, po\u010det \u013eud\u00ed v\u00a0t\u00edme, mno\u017estvo \u00faloh v\u00a0sprinte, po\u010det dn\u00ed\/hod\u00edn\/min\u00fat, po\u010das ktor\u00fdch trv\u00e1, k\u00fdm sa zist\u00ed, \u017ee do zdrojov\u00e9ho k\u00f3du bola omylom pridan\u00e1 chyba alebo po\u010det min\u00fat, ktor\u00e9 trv\u00e1 denn\u00e1 porada. Kon\u0161tantn\u00e1 veli\u010dina je tak\u00e1, ktor\u00e1 sa \u010dasom nemen\u00ed. Pr\u00edkladom m\u00f4\u017ee by\u0165 u\u017e spom\u00ednan\u00fd po\u010det min\u00fat rannej porady. T\u00e1to veli\u010dina je v\u00e4\u010d\u0161inou z\u00e1visl\u00e1 od po\u010dtu \u013eud\u00ed v\u00a0t\u00edme a\u00a0discipl\u00edny \u013eud\u00ed, ktor\u00ed sa jej z\u00fa\u010dast\u0148uj\u00fa, pri\u010dom v\u00e4\u010d\u0161inou ide o interval (napr\u00edklad 5 a\u017e 10 min\u00fat). D\u00e1 sa poveda\u0165, \u017ee t\u00e1to hodnota je kon\u0161tantn\u00e1 (aspo\u0148 v\u00a0pr\u00edpade n\u00e1\u0161ho t\u00edmu). Kon\u0161tantn\u00e9 veli\u010diny s\u00fa fajn. Fajn preto, \u017ee ak n\u00e1jdete dobr\u00e9 rie\u0161enie, ktor\u00e9 s\u00a0nimi s\u00favis\u00ed, tak sa o\u00a0to u\u017e \u010falej nemus\u00edte stara\u0165. \u010co sa t\u00fdka denn\u00fdch por\u00e1d, tak sme sa dohodli, \u017ee na porade budeme st\u00e1\u0165, \u017ee ka\u017ed\u00fd povie to na \u010dom pracuje, pracova\u0165 bude a\u00a0\u010di m\u00e1 nejak\u00fd probl\u00e9m, a\u00a0\u017ee nebudeme zach\u00e1dza\u0165 do detailov. To viedlo k\u00a0tomu, \u017ee sa na\u0161e porady zmestili do 10 min\u00fat.<\/p>\n<p>To, \u010do je v\u00a0projekte nebezpe\u010dn\u00e9, s\u00fa meniace sa veli\u010diny. Hlavne tie rast\u00face. Z\u00a0m\u00f4jho poh\u013eadu sa ako najnebezpe\u010dnej\u0161ia jav\u00ed mno\u017estvo funkcionality v\u00a0aplik\u00e1cii. To je samozrejme \u017eiad\u00faci efekt. Probl\u00e9m je, \u017ee to m\u00e1 za n\u00e1sledok rast mno\u017estva k\u00f3du (\u010do zase vedie k\u00a0pred\u013a\u017eeniu \u010dasu automatick\u00e9ho zostavenia, automatick\u00fdch testov, at\u010f.), mno\u017estva \u010dasu str\u00e1ven\u00e9ho regresn\u00fdmi testami, mno\u017estva dokument\u00e1cie a\u00a0pod. Hlavn\u00fdm probl\u00e9mom rast\u00facich veli\u010d\u00edn je, \u017ee s\u00fa\u010dasn\u00e9 rie\u0161enie nemus\u00ed by\u0165 v\u00a0bud\u00facnosti dostato\u010dn\u00e9. Dobr\u00fdm pr\u00edkladom, kedy rast\u00faca veli\u010dina prevalcuje kon\u0161tantn\u00e9 rie\u0161enie, je pou\u017eitie agiln\u00fdch met\u00f3d a\u00a0manu\u00e1lneho testovania.<\/p>\n<p>Prvou z dvoch\u00a0d\u00f4le\u017eit\u00fdch po\u017eiadaviek, ktor\u00e9 s\u00fa kladen\u00e9 na n\u00e1\u0161 t\u00edm je, \u017ee umo\u017e\u0148ujeme zmenu prior\u00edt v\u00a0backlogu (\u010do znamen\u00e1, \u017ee m\u00e1me len kr\u00e1tkodob\u00e9 \u2013 sprintov\u00e9 \u2013 pl\u00e1novanie, a\u00a0teda v\u00a0\u010fal\u0161om sprinte m\u00f4\u017eu pr\u00eds\u0165 \u013eubovo\u013en\u00e9 \u00falohy, a\u00a0teda aj zmeny v k\u00f3de). Tou druhou je, \u017ee\u00a0mus\u00edme by\u0165 schopn\u00ed \u010dasto zverej\u0148ova\u0165 nov\u00e9 verzie aplik\u00e1cie s\u00a0ur\u010ditou kon\u0161tantnou mierou rizika (inak povedan\u00e9 s\u00a0\u010do najmen\u0161\u00edm po\u010dtom ch\u00fdb). Tieto po\u017eiadavky viedli k\u00a0tomu, \u017ee sme \u010dasto n\u00faten\u00ed vykon\u00e1va\u0165 regresn\u00e9 testy nad celou alebo ve\u013ekou \u010das\u0165ou aplik\u00e1cie. Tak\u017ee na jednej strane m\u00e1me rast\u00face mno\u017estvo funkcionality, ktor\u00e9 spolu s\u00a0po\u017eiadavkou na kon\u0161tantn\u00fa \u00farove\u0148 rizika chyby v\u00a0produk\u010dnej prev\u00e1dzke vedie k\u00a0n\u00e1rastu regresn\u00fdch testov. Na druhej strane je tu ale jedno obmedzenie a\u00a0to je cena testovania. Ke\u010f\u017ee po\u010det program\u00e1torov sa nemen\u00ed, kon\u0161tantn\u00fd by mal osta\u0165 aj po\u010det testerov. Tento rozpor je ako \u010dinn\u00e1 sopka \u2013 sem-tam vyp\u00fa\u0161\u0165a dym a\u017e do chv\u00edle, kedy je energie dos\u0165 a\u00a0d\u00f4jde k\u00a0v\u00fdbuchu.<\/p>\n<p>Spo\u010diatku sme ako sp\u00f4sob testovania zvolili ru\u010dn\u00e9 testovanie. To znamen\u00e1, \u017ee aj regresn\u00e9 testy sa vykon\u00e1vali ru\u010dne. Prv\u00fd rok a\u00a0pol a\u017e dva to bolo \u00fanosn\u00e9. V\u00a0tre\u0165om roku sme narazili na strop mo\u017enost\u00ed na\u0161ich testerov. Jednoducho u\u017e nebolo dostatok testersk\u00fdch s\u00edl, aby boli schopn\u00ed otestova\u0165 v\u0161etko, \u010do bolo treba. Rie\u0161enie, ktor\u00e9 bolo zvolen\u00e9 na za\u010diatku, bolo vybran\u00e9 na z\u00e1klade aktu\u00e1lneho stavu veci. A\u017e teraz sa jasne uk\u00e1zalo ako nefunk\u010dn\u00e9 pr\u00e1ve preto, lebo pracovalo s\u00a0veli\u010dinou, ktor\u00e1 sa menila (r\u00e1stla), a\u00a0to mno\u017estvo funkcionality, ktor\u00fa treba otestova\u0165. Ost\u00e1vali len dve mo\u017enosti: zmeni\u0165 kon\u0161tantu (po\u010det testerov) alebo zvoli\u0165 in\u00e9 rie\u0161enie.<\/p>\n<p>T\u00fdm in\u00fdm rie\u0161en\u00edm sa uk\u00e1zalo automatick\u00e9 testovanie. V\u00a0podstate sme nevymysleli ni\u010d nov\u00e9, preto\u017ee o\u00a0automatickom testovan\u00ed sa hovor\u00ed prakticky v\u00a0ka\u017edej knihe o\u00a0agiln\u00fdch met\u00f3dach. To, \u010do sme museli vymyslie\u0165 bolo, ktor\u00e9 n\u00e1stroje a\u00a0postupy pou\u017ei\u0165. V\u0161etko to e\u0161te komplikovalo to, \u017ee sme v\u00a0podstate sedeli v\u00a0rozbehnutom vlaku, t.j. na projekte sa st\u00e1le pracovalo a\u00a0na\u0161i testeri (ktor\u00ed by mali ma\u0165 t\u00fato automatiz\u00e1ciu hlavne na starosti) mali dos\u0165 pr\u00e1ce s\u00a0ru\u010dn\u00fdm\u00a0testovan\u00edm. Tak\u017ee sme pozbierali v\u0161etok zvy\u0161n\u00fd \u010das, ktor\u00fd ost\u00e1val a\u00a0investovali ho do toho rie\u0161enia. To spolu s\u00a0nejakou pr\u00edle\u017eitostnou v\u00fdpomocnou silou viedlo k\u00a0tomu, \u017ee sa n\u00e1m pomaly za\u010dali uvo\u013e\u0148ova\u0165 ruky a\u00a0mali sme \u010das pusti\u0165 sa aj do zlo\u017eitej\u0161\u00edch \u010dast\u00ed.<\/p>\n<p>Dnes sa d\u00e1 poveda\u0165, \u017ee sme niekde v\u00a0polovici spl\u00e1cania technologick\u00e9ho dlhu z\u00a0\u010dias, kedy sme vykon\u00e1vali ru\u010dn\u00e9 testy. Samozrejme, rast\u00face mno\u017estvo funkcionality m\u00e1 vplyv aj na mno\u017estvo automatick\u00fdch testov. To vedie k\u00a0pred\u013a\u017eeniu ich behu a\u00a0\u010dasu ich spravovania. Ale v\u00a0kone\u010dnom d\u00f4sledku je to ve\u013emi \u010faleko od toho, aby to op\u00e4\u0165 udrelo o\u00a0strop \u2013 teda narazilo na nejak\u00fa kon\u0161tantu (tou najbli\u017e\u0161ou m\u00f4\u017ee by\u0165 po\u010det no\u010dn\u00fdch hod\u00edn, ktor\u00e9 m\u00e1me na sp\u00fa\u0161\u0165anie testov).<\/p>\n<p>Mno\u017estvo literat\u00fary o\u00a0agiln\u00fdch met\u00f3dach a\u00a0aj vlastn\u00e9 sk\u00fasenosti ma presvied\u010daj\u00fa, \u017ee sa ve\u013ek\u00e9 agilne riaden\u00e9 projekty bez automatiz\u00e1cie nezaob\u00eddu. \u017de po\u017eiadavky ako kr\u00e1tkodob\u00e9 pl\u00e1novanie a\u00a0\u010dast\u00e9 zverej\u0148ovania nov\u00fdch verzi\u00ed musia vies\u0165 k\u00a0jej zavedeniu. Na z\u00e1ver u\u017e len m\u00f4j osobn\u00fd zoznam v\u00fdhod automatiz\u00e1cie:<\/p>\n<p>1.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Zni\u017eovanie rizika (ch\u00fdb, alebo ak\u00fdchko\u013evek probl\u00e9mov, ktor\u00e9 by vedelo testovanie odhali\u0165)<\/p>\n<p>2.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Odb\u00farava rutinn\u00fa pr\u00e1cu a\u00a0uvo\u013e\u0148uje ruky pre kreat\u00edvnu pr\u00e1cu<\/p>\n<p>3.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Informuje (v\u00fdsledky testov si m\u00f4\u017ee pre\u010d\u00edta\u0165 ktoko\u013evek)<\/p>\n<p>4.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 N\u00fati k\u00a0dobr\u00e9mu n\u00e1vrhu (napr. jednotkov\u00e9 testy) a\u00a0pochopeniu (nahr\u00e1vanie automatick\u00e9ho testu \u010dasto viedlo k\u00a0hlb\u0161iemu rozboru s\u00fa\u010dasn\u00e9ho stavu funkcionality)<\/p>\n<p>5.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Je niekedy z\u00e1bava J (hlavne ke\u010f sa dar\u00ed)<\/p>\n<p>Pre t\u00fdch, ktor\u00fd h\u013eadaj\u00fa nejak\u00e9 zdroje:<\/p>\n<p>[1] Paul Duvall: <strong>Continuous Integration: Improving Software Quality and Reducing Risk<\/strong><\/p>\n<p>[2] Lisa Crispin, Janet Gregory: <strong>Agile Testing<\/strong><\/p>\n<p>[3] Mike Gunderloy: <strong>Z kod\u00e9ra v\u00fdvoj\u00e1\u0159em<\/strong><\/p>\n\n<!-- Facebook Like Button v1.9.6 BEGIN [http:\/\/blog.bottomlessinc.com] -->\n<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fagile.sk%2F%3Fp%3D437&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px; height: 30px; align: left; margin: 20px 0px 2px 0px\"><\/iframe>\n<!-- Facebook Like Button END -->\n","protected":false},"excerpt":{"rendered":"<p>Jednu z\u00a0vec\u00ed o\u00a0riaden\u00ed, ktor\u00fa som sa nau\u010dil je, \u017ee pri dlhotrvaj\u00facich projektoch je d\u00f4le\u017eit\u00e9 rozli\u0161ova\u0165 kon\u0161tantn\u00e9 a\u00a0meniace sa veli\u010diny. Pod veli\u010dinami m\u00f4\u017eeme rozumie\u0165 ak\u00e9ko\u013evek po\u010dty alebo \u010d\u00edsla, ktor\u00e9 s\u00favisia s\u00a0projektom. Napr\u00edklad po\u010det riadkov zdrojov\u00e9ho k\u00f3du, po\u010det \u013eud\u00ed v\u00a0t\u00edme, mno\u017estvo \u00faloh v\u00a0sprinte, po\u010det dn\u00ed\/hod\u00edn\/min\u00fat, po\u010das ktor\u00fdch trv\u00e1, k\u00fdm sa zist\u00ed, \u017ee do zdrojov\u00e9ho k\u00f3du bola omylom [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[20,18,19],"_links":{"self":[{"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/posts\/437"}],"collection":[{"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/agile.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=437"}],"version-history":[{"count":2,"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/posts\/437\/revisions"}],"predecessor-version":[{"id":439,"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/posts\/437\/revisions\/439"}],"wp:attachment":[{"href":"https:\/\/agile.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agile.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agile.sk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}