<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5099546394935645738</id><updated>2012-02-17T02:11:33.401+01:00</updated><category term='zvyšování efektivity'/><category term='jednotkové testy'/><category term='proč testovat software'/><category term='pokrytí podmínek'/><category term='Základy testování'/><category term='programování'/><category term='testování softwaru'/><category term='kvalita'/><category term='softwarová chyba'/><category term='pokrytí hran'/><category term='investice'/><category term='risk management'/><category term='pokrytí cest'/><category term='počet chyb'/><category term='vývoj softwaru'/><category term='pokrytí testy'/><category term='kritické funkce'/><category term='CzechTest'/><category term='Murphyho zákony'/><category term='ekonomie'/><category term='Umění přesvědčit'/><category term='Prezentační dovednosti'/><category term='pokrytí kódu'/><category term='chyba'/><category term='zajišťování kvality'/><category term='snižování nákladů'/><category term='pokrytí příkazů'/><category term='Tester a programátor'/><category term='testovací mise'/><category term='testovací dokumentace'/><category term='metriky'/><category term='Komunikační dovednosti v praxi'/><category term='test manager'/><category term='Quality Assurance'/><title type='text'>Testování softwaru</title><subtitle type='html'>Já nezajišťuji kvalitu, já ji hodnotím. 
Hledám informace skrz kladení otázek softwaru a zpracovávám je. 
Poté tříbím, zhodnocuji a poskytuji tyto informace ostatním.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5099546394935645738.post-4754603980979644821</id><published>2011-04-18T22:43:00.002+02:00</published><updated>2011-06-19T18:50:18.129+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kritické funkce'/><category scheme='http://www.blogger.com/atom/ns#' term='Základy testování'/><category scheme='http://www.blogger.com/atom/ns#' term='testování softwaru'/><category scheme='http://www.blogger.com/atom/ns#' term='počet chyb'/><category scheme='http://www.blogger.com/atom/ns#' term='ekonomie'/><category scheme='http://www.blogger.com/atom/ns#' term='investice'/><title type='text'>Ekonomické principy testování – proč testovat, co a jak dlouho</title><content type='html'>Tento týden mi přišel email, ve kterém dotyčný položil následující otázky:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Jak se vlastně přesně určuje kritičnost a nekritičnost funkčností? Na základě vazby na nějaké obchodní obraty?&lt;/li&gt;&lt;li&gt;Vezměme situaci cca. 40 systémů, cca. 800 rozhraní, a násobky x1000 funkčností.&lt;br /&gt;Jak lze v takovémto množství efektivně řešit kritičnost jednotlivých funkčností a jejich vazeb? Existují na to nějaké závislostní algoritmy?&lt;/li&gt;&lt;li&gt;Lze definovat ukončení testů na základě kritérií, že pokud klesne počet chyb za den pod nějaký práh, tak lze přejít do produkce, nebo se do produkce musí přejít až s počtem chyb 0 na všechny komponenty?&lt;/li&gt;&lt;/ol&gt;Jelikož všechny tyto otázky se točí okolo ekonomického pochopení testování, uvědomila jsem si, že jsem se zde ještě nevěnovala vysvětlení základních principů.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Testujeme, dokud se nám to finančně vyplatí&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;V byznysu každý krok, který děláme, děláme s vidinou budoucího zisku. Pokud nabízíme zaměstnancům různé výhody, děláme to proto, abychom nalákali kvalitnější zaměstnance a snížili náklady způsobené jejich fluktuací. Pokud investujeme do kvalitnějších výrobků, děláme to proto, že navýšení kvality je pro nás finančně výhodné. Ať už díky tomu, že nebudeme muset vynakládat vysoké částky na nápravu chyb objevených zákazníky, nebo proto, že nám to přinese více spokojených zákazníků.&lt;br /&gt;&lt;br /&gt;To souvisí i s tím, že testujeme tak dlouho, dokud se nám to finančně vyplatí. Pokud jsou náklady na objevení a opravu chyby v dané fázi větší, než jaké jsou předpokládané náklady plynoucí z neopravení chyb, nemá smysl pokračovat. Rovněž se může manažer dostat do situace, kdy je aplikace vysoce chybová, testování je velmi efektivní a bylo by dobré ještě dva tři měsíce v něm pokračovat a opravovat chyby, ale z jistých, například právních důvodů, je přesto finančně výhodnější nasadit aplikaci do provozu.&lt;br /&gt;&lt;br /&gt;Za znalost celkové situace a rozhodnutí o nasazení je zodpovědný zákazník, typicky manažer té části podniku, která aplikaci požadovala a bude ji využívat. Test manažer je zodpovědný za to, aby mu poskytl dostatek informací pro toto rozhodování, zejména ho seznámil s riziky, která ještě nebyly odstraněny. Pokud spolehlivě funguje pouze 20 % funkcí, 10 % je natolik chybových, že je není možné využívat, a zbytek aplikace není ještě otestovaný, jaké jsou konkrétně rizika nasazení?&lt;br /&gt;&lt;br /&gt;Tester tedy nestanovuje kritéria a nerozhoduje o tom, kdy může aplikace přejít do produkce. O tom rozhoduje vždy zákazník a je na něm, jaké množství chyb a jaké závažnosti bude tolerovat, nebo zda rozhodujícím kritériem pro něj nebude naopak vnější vliv, například situace na trhu.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sledujeme efektivitu testování, co se týče počtu objevených chyb&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Jak již výše uvádím, testujeme tak dlouho, dokud se nám to finančně vyplatí. Co to znamená? Že je potřeba s testováním přestat v okamžiku, kdy by nalezení a oprava chyb objevených dalším testováním byla už dražší, než netestovat a riskovat jejich objevení a opravu v budoucnu. Určení takového okamžiku ale není triviální. Nehledě na to, že je třeba pracovat s pravděpodobností, je také nutné mít dostatečně podrobné informace o nákladech, které většina firem na této úrovni nesleduje a nemá je tedy ani k dispozici.&lt;br /&gt;&lt;br /&gt;Méně přesnou, ale zato jednoduchou a rozumnou alternativou je sledování počtu nalezených chyb v čase. Následující obrázek ukazuje typický příklad počtu objevených chyb za určitou dobu testování. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Fpbsc4JTSlE/TaygERJDVAI/AAAAAAAAACc/Z5Si2W5HDbY/s1600/pocet_chyb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://2.bp.blogspot.com/-Fpbsc4JTSlE/TaygERJDVAI/AAAAAAAAACc/Z5Si2W5HDbY/s320/pocet_chyb.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Zpočátku testovací tým nachází velké množství chyb. Postupem času je objevováno stále méně chyb a zdá se, že další testování už nemůže přinést žádná překvapení. V tomto bodě nezkušený test manažer ukončí testování s tím, že produkt je již připraven. Zkušený test manažer pokračuje, protože ví, že testování běžně popadne druhý dech a počet objevených chyb opět začne růst. Zda se jedná o růst skokový nebo postupný, jak ukazuje křivka trendu, ovlivňuje zejména to, zda test manažer podpoří růst počtu chyb obměnou testů. Nicméně i bez této obměny se navýšení dá očekávat. Ukončení testování je pak vhodné až v druhé nebo třetí prohlubni (lokálním minimu).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Testování je investice. Peníze je třeba dát tam, kde to bude mít největší efekt&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Vhodné zaměření úsilí je důvodem pro určování kritičnosti nebo priorit při testování. Co je jak důležité pro byznys určuje opět zákazník. Většinou bývá v rámci složitých systémů kritičnost aplikací a byznys procesů dobře známa a pro její zjištění se stačí obrátit na manažera spravujícího rizika a krizové plány. Pokud takovéto rozdělení v podniku ještě není provedeno, je možné při určení důležitosti aplikace vycházet z toho, jaké dopady by měla její nedostupnost či špatné fungování. Například se odhadnou ztráty z jednodenní nedostupnosti aplikace, vytvoří se rozmezí ztrát a ty se přiřadí jednotlivým označením důležitosti.&lt;br /&gt;&lt;br /&gt;Co se týká přidělení důležitosti jednotlivým testům, zde se čerpá zejména z důležitosti uživatelských případů (use-casů). Zákazník určuje své priority již ve fázi sběru požadavků a specifikaci. Při určení priorit je možné vycházet z toho, kolik lidí danou funkci využívá, zda pracuje s kritickými zdroji (penězi, osobními údaji, atd.) nebo jak podstatné jsou byznys procesy, které funkce zpracovává. &lt;br /&gt;&lt;br /&gt;Často však zákazník zejména u menších projektů určuje důležitost spíše pocitově a na přání dodavatele určí např. 20% nejdůležitějších funkčností. Oblíbené a pro zákazníka dobře pochopitelné je přiřazení tří stupňů důležitosti:  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Critical to quality (Kritické pro kvalitu produktu) &lt;/b&gt;– Bez funkcí, kterým je přiděleno toto označení, by produkt nebyl použitelný a nesplnil by ani ty nejzákladnější potřeby zákazníka.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Good enough quality (Dostatečná kvalita)&lt;/b&gt; – Funkce s tímto označením zaručují potřebné, ale ne nezbytné činnosti.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Nice to have (Bylo by hezké toto mít)&lt;/b&gt; – Funkce, které jsou třešničkou na dortu, mohou usnadňovat práci uživatelům nebo být další možností, kterou by někdo mohl v budoucnu potřebovat.&lt;br /&gt;&lt;br /&gt;Odpovědí na všechny tyto tři otázky je: „zeptejte se zákazníka, co by si on přál“. Protože on je ten, kdo investuje a on je ten, kdo bude hodnotit návratnost své investice.&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;!--google_ad_client = "ca-pub-6782879428872508";/* Anicka blog maly */google_ad_slot = "3726764820";google_ad_width = 468;google_ad_height = 60;//--&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5099546394935645738-4754603980979644821?l=testovanisoftwaru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/4754603980979644821/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://testovanisoftwaru.blogspot.com/2011/04/ekonomicke-principy-testovani-proc.html#comment-form' title='Počet komentářů: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/4754603980979644821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/4754603980979644821'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/2011/04/ekonomicke-principy-testovani-proc.html' title='Ekonomické principy testování – proč testovat, co a jak dlouho'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Fpbsc4JTSlE/TaygERJDVAI/AAAAAAAAACc/Z5Si2W5HDbY/s72-c/pocet_chyb.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5099546394935645738.post-669030099397928029</id><published>2011-03-23T21:06:00.000+01:00</published><updated>2011-03-23T21:06:28.206+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testování softwaru'/><category scheme='http://www.blogger.com/atom/ns#' term='Prezentační dovednosti'/><category scheme='http://www.blogger.com/atom/ns#' term='Komunikační dovednosti v praxi'/><category scheme='http://www.blogger.com/atom/ns#' term='CzechTest'/><category scheme='http://www.blogger.com/atom/ns#' term='Tester a programátor'/><category scheme='http://www.blogger.com/atom/ns#' term='Umění přesvědčit'/><title type='text'>Jak je důležité umět prezentovat své nápady</title><content type='html'>Před dvěma týdny jsem se účastnila konference CzechTest a byla to úžasná zkušenost, jelikož mezi přednášejícími byla řada zahraničních odborníků s 10 a často i 20 lety zkušeností v oblasti testování softwaru. Takových lidí je u nás žalostný nedostatek, nemám pravdu? Největší dojem na mě ale udělal Lloyd Roden, konzultant z Velké Británie, který mimo jiné přednáší taky na konferencích, jako jsou STARWest, STAREast, AsiaSTAR and EuroSTAR.&lt;br /&gt;&lt;br /&gt;Čím se tento muž lišil od ostatních řečníků, nebyly jeho myšlenky a obsah jeho prezentací, jelikož jsem potkala řadu chytrých a zkušených lidí, ale jeho komunikační a prezentační dovednosti. Po jeho příspěvku, nejen opravdu přemýšlíte nad tématem, ale hlavně se cítíte nabytí energií a těšíte se, až tyto myšlenky vyzkoušíte v praxi. To, že Lloyd umí lidi kolem sebe přesvědčit a nadchnout je pravděpodobně i jedna z věcí, které ho dělají výborným test manažerem. Protože testování a zejména test management je především o komunikaci.&lt;br /&gt;&lt;br /&gt;Rik Marselis, jeden z dalších řečníků, nám položil otázku, zda je testování technický obor nebo spíše humanitní. Já zastávám názor, že je to obojí, jelikož technické znalosti se zde snoubí s komunikačními dovednostmi, asertivitou a diplomacií.&lt;br /&gt;&lt;br /&gt;Existují dobří testeři, kteří si rozumí více s počítači než s lidmi, a to je v pořádku, ale pouze do té doby, pokud jsou v týmu s testery, kteří mají velmi dobré komunikační schopnosti a rozumí potřebám stakeholdrů (= uživatelům a ostatním osobám na projektu). &lt;br /&gt;Schopnost efektivní komunikace je nejdůležitější vlastností manažerů a všech osob, které si přejí být vyslyšeny. A já ještě nepotkala testera, který by si nepřál být vyslyšen a nesnažil se prosazovat kvalitu ve své organizaci.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #990000;"&gt;&lt;b&gt;Tester je nejlepší přítel programátora.&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Já učím svoje studenty, že tester je nejlepší přítel programátora. Skeptici jistě nesouhlasí: jak může být někdo, kdo neustále nachází chyby v něčí práci jeho nejlepší přítel? &lt;br /&gt;Jedině díky taktu, respektu k programátorovi a poskytování informací, které programátorovi ulehčují jeho práci. &lt;br /&gt;Ale moment! Tohle je přesně to, co znamená být dobrým testerem. Tester poskytuje informace. Není to skvělé?!&lt;br /&gt;&lt;br /&gt;Programátor je pouze další osobou, které pomáháme poskytováním potřebných informací. Pokud se dobře staráme o programátory a pomáháme jim rychle nacházet a opravovat problémy poskytováním relevantních informací, často se stáváme dobrými přáteli.&lt;br /&gt;Programátoři nám neposkytují službu opravování chyb, my jim poskytujeme službu dodávání potřebných informací. Samozřejmě nejsou jediní, komu tuto služby poskytujeme, ale jsou skupinou, kterou často zanedbáváme. Pokud někomu nevěnujeme pozornost, kterou si zaslouží, nebo i hůř na něj nadáváme, není se co divit, že pak vztahy nejsou ideální. Špatný vztah mezi testery a programátory je pak znakem špatných testerů a managementu, který problém ignoruje.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #990000;"&gt;&lt;b&gt;Tester poskytuje informace. Dobrý tester poskytuje ty správné informace.&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Z tohoto důvodu bych Vás všechny chtěla vyzvat: Běžte za programátory. Seznamte se. Zjistěte, jak by jste jim mohli pomoct. Zeptejte se jich, jaké informace by chtěli mít v reportu chyby, co jim na reportech vadí. Zeptejte se na jejich další problémy s kvalitou a žádejte je o zpětnou vazbu pravidelně. &lt;br /&gt;Toto je dovednost, kterou musíme neustále pilovat: jak poskytovat ty správné informace a jak je správně komunikovat.&lt;br /&gt;&lt;br /&gt;A pokud byste chtěli se hned do toho pustit, zde je pár tipů, jak začít. &lt;br /&gt;&lt;br /&gt;&lt;div style="color: #990000;"&gt;&lt;b&gt;Tipy:&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Zlepšete své reporty chyb: &lt;a href="http://tuppad.com/blog/wp-content/uploads/2010/08/Crash-course-on-Reporting-Bugs-in-Software-Testing.pdf"&gt;crash course on reporting bugs &lt;/a&gt;&lt;/li&gt;&lt;li&gt;Zlepšete svoje přesvědčovací schopnosti: &lt;a href="http://testertested.blogspot.com/2011/03/coaching-testers-how-to-email-and.html"&gt;coaching testera how to email and influance stakeholders&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Zlepšete své prezentační schopnosti: Pokud můžete, zaplaťte si soukromé lekce a pokud ne, přečtěte si pár základních tipů pro dobrou prezentaci (&lt;a href="http://www.presentationmagazine.com/Essential_Presentation_skills.htm"&gt;Presentation Magazine&lt;/a&gt;)  a podívejte se na pár tutoriálů na Youtube (&lt;a href="http://www.youtube.com/watch?v=gOwQUd8qkMM"&gt;Effective Presentation Skills&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Cvičte své schopnosti, kdykoli máte příležitost: &lt;a href="http://www.utest.com/bugbattle"&gt;uTest bug battle&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5099546394935645738-669030099397928029?l=testovanisoftwaru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/669030099397928029/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://testovanisoftwaru.blogspot.com/2011/03/jak-je-dulezite-umet-prezentovat-sve.html#comment-form' title='Počet komentářů: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/669030099397928029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/669030099397928029'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/2011/03/jak-je-dulezite-umet-prezentovat-sve.html' title='Jak je důležité umět prezentovat své nápady'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5099546394935645738.post-2923109404559320378</id><published>2010-09-28T16:52:00.005+02:00</published><updated>2011-04-20T08:27:00.654+02:00</updated><title type='text'>Studie o testování softwaru</title><content type='html'>V rámci grantu VŠE jsme spustili dotazníkovou studii o testování softwaru v České republice. Prosím ty z Vás, kteří přijdou v práci do styku s testováním, jste se zůčastnili a vyplnili dotazník na stránce &lt;a href="http://studiekvality.vse.cz/"&gt;studiekvality.vse.cz&lt;/a&gt;&lt;br /&gt;Přispějete k tím k analýze situace v testování softwaru v České republice a k jejímu rozvoji.&lt;br /&gt;Děkuji.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-weight: bold;"&gt;------ Nyní k dispozici výsledky!!! --------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Výsledky naleznete na stránkách:  &lt;a href="http://studiekvality.vse.cz/"&gt;studiekvality.vse.cz&lt;/a&gt;&lt;br /&gt;Článek ke studii vyjde v odborném časopise Systémová integrace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5099546394935645738-2923109404559320378?l=testovanisoftwaru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/2923109404559320378/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://testovanisoftwaru.blogspot.com/2010/09/studie-o-testovani-softwaru.html#comment-form' title='Počet komentářů: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/2923109404559320378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/2923109404559320378'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/2010/09/studie-o-testovani-softwaru.html' title='Studie o testování softwaru'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5099546394935645738.post-7659877604715763885</id><published>2009-12-03T13:45:00.011+01:00</published><updated>2009-12-05T11:48:13.444+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vývoj softwaru'/><category scheme='http://www.blogger.com/atom/ns#' term='Quality Assurance'/><category scheme='http://www.blogger.com/atom/ns#' term='proč testovat software'/><category scheme='http://www.blogger.com/atom/ns#' term='risk management'/><category scheme='http://www.blogger.com/atom/ns#' term='zajišťování kvality'/><category scheme='http://www.blogger.com/atom/ns#' term='zvyšování efektivity'/><category scheme='http://www.blogger.com/atom/ns#' term='snižování nákladů'/><title type='text'>Proč bychom měli testovat?</title><content type='html'>Tento příspěvek je určen nejen testerům, ale i managerům, které zajímá, co by jim testování softwaru mohlo přinést a možná nepřináší. Proto začnu definicí dvou pojmů, které dále často používám:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Zajišťování kvality (Quality Assurance)&lt;/span&gt; – plánované a systematické procesy jejichž cílem je zajištění vhodnosti produktu k jeho zamýšlenému účelu.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Testování&lt;/span&gt; - proces sběru a třídění informací získaných skrze zkoumání produktu, součást obecněji pojatého zajištění kvality.&lt;br /&gt;&lt;br /&gt;Pokud máme pocit, že testování a zajišťování kvality není věnován dostatek pozornosti a společnosti tuto stránku vývoje softwaru podceňují, možná za to do jisté míry může i to, že se nám nedaří přesvědčit ostatní o důležitosti testování a jeho odborného řízení.&lt;br /&gt;&lt;br /&gt;Jaké jsou tedy přínosy testování softwaru a zajišťování kvality? Které body bychom měli zmínit při prezentaci přínosů?&lt;br /&gt;&lt;br /&gt;Proces zajišťování kvality ovlivňuje tři manažersky významné oblasti:&lt;br /&gt;- Marketing&lt;br /&gt;- Risk management&lt;br /&gt;- Snižování nákladů&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Marketing &lt;/h3&gt; &lt;br /&gt;To, že kvalitní produkt dodaný zákazníkovi má pozitivní vliv na pověst firmy, zatímco vysoce chybový nespolehlivý software pověst ničí, je jednoduchý logický závěr. Těžší je už odhadnout nebo si jen uvědomit míru tohoto vlivu. Vliv nekvalitního produktu na pověst firmy totiž přichází ve vlnách. Některé z nich jsou okamžité a rychle mizí, některé negativně ovlivňují firmu i po několik let. &lt;br /&gt;&lt;br /&gt;První vlnou odezvy je reakce bezprostředního zákazníka, který na základě spokojenosti rozhoduje o následné spolupráci. &lt;br /&gt;&lt;br /&gt;Druhou vlnou je reakce konečných zákazníků. Ti v případě nepříznivého přijetí produktu mohou způsobit řadu nepříjemností. Jejich neustálé stížnosti a reportování chyb může způsobit neočekávané prodražení projektu, takže z původně ziskového projektu se stane projekt prodělečný. Dále jejich nepříznivé přijetí produktu může změnit názor managementu zákazníka na dodavatele, nebo se dostat mezi širokou veřejnost prostřednictvím novinového a televizního zpravodajství. &lt;br /&gt;&lt;br /&gt;Třetí vlnou je reakce současných zaměstnanců a dalších lidí z oboru výroby IT. Kvůli neustálé fluktuaci zaměstnanců se pověst softwarové firmy šíří dále a po mnoho let přetrvává. Schopní zaměstnanci firmu, která nedokáže dodat kvalitní software, opouštějí, protože nechtějí být spojováni s dalším neúspěchem nebo protože je jednoduše nemotivuje se zlepšovat. Tam, kde chybí objektivní měřítka kvality, tam je vždy nedostatek snahy o zlepšení. Ze stejných důvodů se firmě vyhýbají potencionální schopní zaměstnanci. Slyšeli o ní negativní věci ze strany bývalých či současných zaměstnanců. &lt;br /&gt;&lt;br /&gt;Čtvrtou vlnou, která ovlivňuje softwarovou firmu s největším zpožděním, je neochota dalších zákazníků nebo jiných softwarových firem s ní spolupracovat. Před zaměstnanci firmy nelze zatajit nedostatek snahy o zajištění kvality a špatné nastavení procesů. Pokud tito zaměstnanci jsou přesvědčeni o tom, že by si sami svojí firmě nikdy nedali zakázku na vývoj softwaru, pak této firmě nebudou ochotni dát zakázku ani za několik let, kdy budou takováto rozhodnutí dělat z pozice manažerů a ředitelů. Stejně se zachovají i všichni, kteří se o špatně nastavených procesech dověděli od svých nových kolegů či kamarádů. &lt;br /&gt;&lt;br /&gt;V těchto čtyřech vlnách působí každý projekt dle své kvality a dopadů v pozitivním či negativním směru na marketing.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Risk management&lt;/h3&gt; &lt;br /&gt;Testování je nástrojem k získání objektivních informací o stavu vyvíjeného softwaru. Tyto informace jsou pak nejdůležitějším vstupem pro řízení rizik spojených s vývojem softwaru. Testování se prolíná celým procesem vývoje. Už od samého počátku tedy kontroluje soulad vývoje s představami zákazníka, srozumitelnost, jednoznačnost a logiku výstupů. Včasným informováním o nedostatcích a chybách zabraňuje nedorozuměním a zbytečnému plýtvání zdrojů na špatné verze. Řízení kvality pak navíc definuje a hlídá postupy vývoje z hlediska zajištění jednoduchosti, srozumitelnosti, správnosti, přesnosti, rychlosti a dalších kvalitativních měřítek. Díky tomu dochází jak k výraznému snížení pravděpodobnosti vzniku problémů s kvalitou během i po vývoji, tak k omezení dopadů při vzniku problémů. &lt;br /&gt;&lt;br /&gt;Testování výrazně předchází problémům s zákeřnými chybami. U softwaru z finančního, lékařského nebo jinak kritického sektoru, mohou ztráty způsobené dopadem jedné jediné zákeřné chyby několikanásobně převyšovat celý rozpočet na vývoj tohoto softwaru.&lt;br /&gt;&lt;br /&gt;Bez testování zůstávají firmě jen dvě nepříjemné možnosti, jak s omezit riziko spojené s vývojem softwaru:&lt;br /&gt;- zajistit si subdodavatele, který riziko do jisté míry převezme za ně&lt;br /&gt;- pokud to jde, pojistit se proti některým typům problémů&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Snižování nákladů&lt;/h3&gt;&lt;br /&gt;Přestože jednou z nejčastějších manažerských chyb je při snižování nákladů obětování kvality, právě efektivně nastavené zajišťování kvality přináší největší úspory. Z ekonomického hlediska by testování mělo trvat tak dlouho, dokud předpokládaná průměrná cena nalezení a opravy chyby objevené v příštím cyklu testů je menší než průměrné náklady na chybu objevenou zákazníkem vynásobené pravděpodobností objevu chyby. Zjednodušeně, testovat by se mělo tak dlouho, dokud je to finančně výhodnější než netestovat. Zajišťování kvality se navíc snaží nastavit procesy tak, aby docházelo k co nejmenšímu počtu chyb a ty byly co nejlevněji odstranitelné. Zajištění kvality je investice a je tedy vhodné sledovat její návratnost. &lt;br /&gt;&lt;br /&gt;Problém je v tom, že je velmi obtížné zvládat řízení kvality tak, aby bylo maximálně efektivní a aby minimalizovalo náklady. Takový úkol vyžaduje zkušenosti, cit a výborné znalosti zkušeného odborníka. Proto, když už testujeme, je třeba to dělat dobře. &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Jak začít?&lt;/h3&gt;&lt;br /&gt;Nastavit efektivně proces testování není jednorázová věc, ale vzniká neustálým dolaďováním na základě různých rozumně zvolených měřítek, které varují, pokud není vše v pořádku a na kterých lze sledovat zhoršení či zlepšení efektivity. &lt;br /&gt;&lt;br /&gt;Pochopení klíčové role řízení kvality při vývoji softwaru, stanovení měřítek, procesu řízení kvality a vyhledání vynikajících odborníků s praxí přímo v testování dává dohromady dobrý základ pro každé oddělení řízení kvality softwaru.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5099546394935645738-7659877604715763885?l=testovanisoftwaru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/7659877604715763885/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/12/proc-bychom-meli-testovat.html#comment-form' title='Počet komentářů: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/7659877604715763885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/7659877604715763885'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/12/proc-bychom-meli-testovat.html' title='Proč bychom měli testovat?'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5099546394935645738.post-6444221368036642996</id><published>2009-10-05T07:31:00.011+02:00</published><updated>2009-10-06T18:33:51.399+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pokrytí cest'/><category scheme='http://www.blogger.com/atom/ns#' term='pokrytí hran'/><category scheme='http://www.blogger.com/atom/ns#' term='pokrytí testy'/><category scheme='http://www.blogger.com/atom/ns#' term='pokrytí podmínek'/><category scheme='http://www.blogger.com/atom/ns#' term='pokrytí příkazů'/><category scheme='http://www.blogger.com/atom/ns#' term='pokrytí kódu'/><category scheme='http://www.blogger.com/atom/ns#' term='jednotkové testy'/><title type='text'>Problémy s pokrytím kódu</title><content type='html'>Jednou z důležitých technik je sledování nakolik je aplikace pokryta testy. Můžeme sledovat kolik případů užití máme porytých, kolik zákazníkových požadavků, ale nejpřesnější alespoň co se týče pokrytí funkčnosti je pokrytí kódu.&lt;br /&gt;Při zjišťování pokrytí kódu se zaznamenává, jaký kód byl při testování spuštěn a jaký naopak otestován ještě nebyl.&lt;br /&gt;&lt;br /&gt;Nejjednodušší ale zároveň nedostačující a zavádějící je &lt;span style="font-weight: bold;"&gt;pokrytí příkazů - řádků&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;To pouze kontroluje, zda daný příkaz, řádek, byl proveden v průběhu testování, pro pokrytí podmínky tak může stačit její libovolné vyhodnocení.&lt;br /&gt;&lt;br /&gt;Formálně: &lt;u&gt;T&lt;/u&gt; splňuje kritérium pokrytí příkazů pro daný kód &lt;u&gt;K&lt;/u&gt;, jestliže pro každý příkaz &lt;u&gt;p&lt;/u&gt; náležící kódu &lt;u&gt;K&lt;/u&gt; existuje test &lt;u&gt;t&lt;/u&gt; z množiny &lt;u&gt;T&lt;/u&gt;, že při provedení &lt;u&gt;t&lt;/u&gt; bude spuštěn příkaz &lt;u&gt;p&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;Pro testera nebo programátora není problém dosáhnout velmi vysokého (i 100 %) pokrytí příkazů programu plného chyb aniž by jediný test selhal, aniž by byla objevena jediná chyba. Přesto, že tato metrika je takto zavádějící, pro svou jednoduchost je i tak oblíbená.&lt;br /&gt;&lt;br /&gt;O stupeň pokročilejší je &lt;b style=""&gt;pokrytí hran – rozhodnutí&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Formálně: Představme si graf, kdy příkazy tvoří uzly a možné přechody mezi nimi hrany. Pak za sebou provedené příkazy tvoří hranu a podmínka uzel, ze kterého vedou dvě hrany, jedna pro true a jedna pro false hodnotu. Pak množina testů &lt;u&gt;T&lt;/u&gt; splňuje kritérium pokrytí hran pro daný kód &lt;u&gt;K&lt;/u&gt;, jestliže pro každou hranu &lt;u&gt;h&lt;/u&gt; výše popsaného grafu existuje test &lt;u&gt;t&lt;/u&gt; z množiny &lt;u&gt;T&lt;/u&gt;, že při provedení &lt;u&gt;t&lt;/u&gt; projde výpočet hranou &lt;u&gt;h&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;Jednoduše řečeno u pokrytí hran je každá podmínka uzlem, ze kterého vedou dvě hrany.&lt;br /&gt;&lt;br /&gt;Například:&lt;br /&gt;&lt;br /&gt;Máme kód se třemi podmínkami, z nichž jedna je vnořená.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4-LgoxC2jvc/Ssr8pH3Mj1I/AAAAAAAAABo/1FMRSL7g7Z4/s1600-h/code4.PNG"&gt;&lt;img style="cursor: pointer; width: 224px; height: 117px;" src="http://1.bp.blogspot.com/_4-LgoxC2jvc/Ssr8pH3Mj1I/AAAAAAAAABo/1FMRSL7g7Z4/s320/code4.PNG" alt="" id="BLOGGER_PHOTO_ID_5389397687517613906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Graf  pokrytí hran pak vypadá následovně:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4-LgoxC2jvc/Ssr8o4EYx2I/AAAAAAAAABg/8-cqz9wgArQ/s1600-h/code3.PNG"&gt;&lt;img style="cursor: pointer; width: 140px; height: 320px;" src="http://4.bp.blogspot.com/_4-LgoxC2jvc/Ssr8o4EYx2I/AAAAAAAAABg/8-cqz9wgArQ/s320/code3.PNG" alt="" id="BLOGGER_PHOTO_ID_5389397683277973346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Přitom modré kolečka představují podmínky, zelená ostatní příkazy.&lt;br /&gt;&lt;br /&gt;Při jakýchkoli složitějších podmínkách je ale i toto pokrytí nedostatečné.&lt;br /&gt;&lt;br /&gt;Další stupeň představuje &lt;b style=""&gt;pokrytí podmínek.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Formálně: Množina testů &lt;u&gt;T&lt;/u&gt; splňuje kritérium pokrytí podmínek pro daný kód &lt;u&gt;K&lt;/u&gt;, jestliže splňuje kritérium pokrytí hran a pro každou složenou podmínku platí, že pro každou její část &lt;u&gt;p&lt;/u&gt; existují testy &lt;u&gt;t&lt;/u&gt;, &lt;u&gt;u&lt;/u&gt; z množiny &lt;u&gt;T&lt;/u&gt;, že při provedení &lt;u&gt;t&lt;/u&gt; se &lt;u&gt;p&lt;/u&gt; vyhodnotí kladně a při provedení &lt;u&gt;u&lt;/u&gt; záporně.&lt;br /&gt;&lt;br /&gt;Pokud se vynechá část, že pokrytí podmínek musí splňovat pokrytí hran, tak k nepokrytí hran a pokrytí podmínek dochází v případě, že pro všechny možné vstupy je vždy celá podmínka vyhodnocena jako pravdivá nebo nepravdivá.&lt;br /&gt;&lt;br /&gt;Vylepšení pokrytí podmínek spočívá v tom, že se berou v úvahu všechny možná vyhodnocení podmínky, nejen to, zda je pravdivá, či nikoli.&lt;br /&gt;&lt;br /&gt;Například:&lt;br /&gt;&lt;br /&gt;Mějme složenou podmínku if (a&gt;0 || b&gt;0).&lt;br /&gt;K pokrytí hran by stačili tyto testy: {a = 5; b = -2}, {a = 0; b = 0}&lt;br /&gt;K pokrytí podmínek by tyto testy nestačili, protože část b &gt; 0 je v obou případech nepravdivá. Pokrytí podmínek lze však dosáhnout jinými dvěma testy: {a = 5; b = 2}, {a = 0; b = 0}&lt;br /&gt;&lt;br /&gt;U této verze je už těžší najít chybu, kterou bychom plným pokrytím podmínek neodhalili, i když jisté typy chyb stále budou i v plně pokrytém kódu zůstávat.&lt;br /&gt;&lt;br /&gt;Nejvyšší stupeň pokrytí je &lt;b style=""&gt;pokrytí cest&lt;/b&gt;, které sleduje všechny možné průchody kódem a proto představuje opravdu podrobné otestování.&lt;br /&gt;&lt;br /&gt;Formálně: Množina testů &lt;u&gt;T&lt;/u&gt; splňuje kritérium pokrytí cest pro daný kód &lt;u&gt;K&lt;/u&gt;, jestliže splňuje kritérium pokrytí podmínek a pro každou cestu &lt;u&gt;C&lt;/u&gt; v grafu kódu spojující vstupní a výstupní uzel grafu a obsahující nejvýše &lt;u&gt;n&lt;/u&gt; cyklů existuje test &lt;u&gt;t&lt;/u&gt; z množiny &lt;u&gt;T&lt;/u&gt;, že při provedení &lt;u&gt;t&lt;/u&gt; projde výpočet cestou &lt;u&gt;C&lt;/u&gt;.   &lt;br /&gt;&lt;br /&gt;I když ne všechny chyby jdou odhalit pouze z kódu, pokrytí cest poskytuje jistotu, že byly otestovány všechny možnosti běhu. Problémem je praktická nepoužitelnost tohoto pokrytí, jelikož jeho složitost způsobuje exponenciální růst počtu testů.&lt;br /&gt;&lt;br /&gt;Otázka 1:      Kolik testů (průchodů kódem) je potřeba, aby měla metoda code_coverage pokryty příkazy; hrany; podmínky; cesty?  &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4-LgoxC2jvc/Ssr8oUB3LNI/AAAAAAAAABY/T3jGyzDIUac/s1600-h/code.PNG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 263px;" src="http://1.bp.blogspot.com/_4-LgoxC2jvc/Ssr8oUB3LNI/AAAAAAAAABY/T3jGyzDIUac/s320/code.PNG" alt="" id="BLOGGER_PHOTO_ID_5389397673603706066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Otázka 2:      Kolik testů (průchodů kódem) je potřeba, aby měla metoda code_coverage2 pokryty příkazy; hrany; podmínky; cesty?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4-LgoxC2jvc/SsmOhrbd3rI/AAAAAAAAABI/ZL1rPtQCMpg/s1600-h/code2.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 138px;" src="http://3.bp.blogspot.com/_4-LgoxC2jvc/SsmOhrbd3rI/AAAAAAAAABI/ZL1rPtQCMpg/s320/code2.PNG" alt="" id="BLOGGER_PHOTO_ID_5388995138370264754" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5099546394935645738-6444221368036642996?l=testovanisoftwaru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/6444221368036642996/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/10/problemy-s-pokrytim-kodu.html#comment-form' title='Počet komentářů: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/6444221368036642996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/6444221368036642996'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/10/problemy-s-pokrytim-kodu.html' title='Problémy s pokrytím kódu'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4-LgoxC2jvc/Ssr8pH3Mj1I/AAAAAAAAABo/1FMRSL7g7Z4/s72-c/code4.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5099546394935645738.post-6701953566958920463</id><published>2009-09-06T22:11:00.003+02:00</published><updated>2009-09-06T22:22:48.294+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testování softwaru'/><category scheme='http://www.blogger.com/atom/ns#' term='softwarová chyba'/><category scheme='http://www.blogger.com/atom/ns#' term='programování'/><category scheme='http://www.blogger.com/atom/ns#' term='Murphyho zákony'/><title type='text'>Murphyho zákony. Proč jsou pravdivé?</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Program je dobrý, když je bezchybný – což je nemožné.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jsou lidé, kteří nevěří v existenci bezchybného softwaru a lidé, kteří si myslí, že testování bezchybnost zaručí. (Jsou i jiné skupiny lidí, z nichž nejhorší jsou ti, které kvalita nezajímá. Ale ty teď ponechme stranou.)&lt;br /&gt;Bezchybné programy existují, ale pouze ty triviální. Například pokud jediné, co daný program má umět, je vypsat na obrazovku "Ahoj světe!" a skončit. &lt;br /&gt;Čím je program složitější, tím těžší je i zkontrolovat jeho bezchybnost.&lt;br /&gt;Nakonec i jednoduchý program o pár řádcích může mít tolik různých cest kódem, že bychom je všechny neotestovali ani za deset let. &lt;br /&gt;Proto u jakéhokoli netriviálního programu, tím spíš složitých aplikací a systémů, je nutné počítat s tím, že ať na testování věnujeme sebevíc času, vždy bude obsahovat chyby. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Neviditelných chyb je nekonečné množství, oproti viditelným chybám, kterých je už z definice konečné množství. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tento zákon je pouhým důsledkem Dijkstrova axiomu, že testování je vhodné k dokázání přítomnosti chyb, ale nevhodné k prokázání jejich nepřítomnosti.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Každý program obsahuje jeden chybný řádek.&lt;br /&gt;Každý program jde zkrátit o jeden řádek.&lt;br /&gt;Z toho plyne, že každý program jde zkrátit na jeden řádek, který je chybný.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;K tomu téměř není co dodat. Snad jen, že je to jako sebenaplňující se proroctví. Čím více do kódu člověk zasahuje, tím je větší pravděpodobnost, že do něj zanese chybu.  &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Fungující program má pouze neobjevené chyby. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tento zákon by ve skutečnosti měl znít, že software, na který si nikdo nestěžuje, má pouze neobjevené chyby a to proto, že ho nikdo nepoužívá. &lt;br /&gt;Tak to funguje ve skutečnosti. Cílem testování je dosáhnout určitého (nejlépe vysokého) stupně kvality, ne dosáhnout toho, aby zákazník nenahlásil jedinou chybu. &lt;br /&gt;&lt;br /&gt;Stačí, když zákazník bude mít z produktu dobrý pocit, protože nebude narážet na chyby často a ty nebudou mít žádné vážné důsledky. A ty chyby, na které narazí, budou rychle vyřešeny&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Počet chyb vždy překročí počet řádek v programu.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Toto je spíše zobecněné pozorování. Často je tento zákon pravdivý, protože během životního cyklu vývoje dojde k tolika změnám v programu, že i když konečný program má x řádek, programátoři jich napsali mnohonásobně více. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Šance, že program dělá to, co má, je nepřímo úměrná počtu řádek v programu.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;To je snadné pochopit. Čím je program složitější, tím je těžší se v něm vyznat, na něco nezapomenout a neudělat chybu.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Nehledě na to, kolik zdrojů máš, nikdy to není dost. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Netriviální program nemůžeme nikdy kompletně otestovat a nemůžeme zjistit, kolik dosud neobjevených chyb obsahuje. Je tedy možné testovat do nekonečna. &lt;br /&gt;Důležité je dokázat s přidělenými zdroji co největšího efektu. Což je pravé umění nejschopnějších manažerů. Pokud objevení chyby a její oprava stojí více než kdyby jí objevil až zákazník, pak je na čase testování ukončit.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Patch je kus softwaru, který nahrazuje starou chybu novou. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I když je patch relativně malý kus softwaru, je nutné ho otestovat. Spoléhat na to, že vše poběží, jak má, aniž by to někdo opravdu vyzkoušel, je spolehlivým receptem na katastrofu.   &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Chyby se objeví v jedné části fungujícího softwaru, pokud další zdánlivě nesouvisející část je modifikována.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jsou dva důvody, proč i když je změna pouze v jedné části programu, se mohou najednou objevit chyby tam, kde předtím žádné nebyly. &lt;br /&gt;První důvod je, že tyto části spolu nějakým způsobem souvisí, ale nikdo si to neuvědomil.&lt;br /&gt;Například jedna část volá funkci, ve které se nachází nadbytečné volání jiné funkce, která byla touto změnou zrušena.  &lt;br /&gt;Druhý důvod je, že přestože obě části softwaru spolu nesouvisejí, používají stejné zdroje. Může se tak projevit chyba, která v softwaru byla už nějakou dobu. Například špatně ošetřené sdílení paměti nebo ukazatel, který ukazuje na náhodné data.  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ty nejpřehlédnutelnější chyby způsobí ty největší problémy.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Malé a nenápadné chyby mají buď malé nebo žádné dopady (například logo je pixel posunuté mimo určenou pozici) nebo velmi závažné důsledky (V jednom ze sta případů dojde ke špatnému zaokrouhlení částky, což může mít za následek ztráty několikanásobně větší, než byla cena softwaru). Pokud chyba je nápadná, uživatel si jí hned všimne a pokud její dopady jsou závažné, tak je možné hned situaci napravit, aby se už neopakovala. Pokud ale chyba uniká pozornosti, její důsledky se hromadí, až se lavina protrhne a může dojít k velmi vážným problémům.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Softwarové chyby je nemožné detekovat kýmkoli kromě koncového uživatele. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Přestože testeři při testování odhalí velké množství různých chyb, některé chyby je těžké odhalit pro kohokoli než koncového uživatele. To proto, že i když se tester snaží na software dívat z pohledu uživatele, tak běžným uživatelem není, a chybí mu znalost chování uživatele.&lt;br /&gt;Jediný způsob, jak zjistit reakce uživatelů na software, je vidět je s ním pracovat.  &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Jakoukoli chybu nehledě na její složitost, lze objevit pouhým pohledem. &lt;br /&gt;Důsledek: Otravující kolemjdoucí s nevítanými radami ji spatří okamžitě. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pokud už tester vyčerpal všechny nápady a objevil svým trénovaným okem všechny chyby, je potřeba k nalezení dalších chyb změnit přístup nebo i třeba zkusit větší odstup. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Chození po vodě a vývoj softwaru podle specifikace je snadné pouze pokud je obojí zamrzlé.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Každá změna specifikace přináší do vývoje rizika:&lt;br /&gt;• O změně se nedozvědí všichni, kdo o ní potřebují vědět&lt;br /&gt;• Změna bude nejasná a špatně pochopena&lt;br /&gt;• Je třeba zahodit už otestovanou část a napsat novou, která je potenciálně plná chyb&lt;br /&gt;• Složitost toho, co si vývojář musí pamatovat, se zvyšuje a je lehčí udělat chybu&lt;br /&gt;• ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Nejlepší způsob, jak obejít bezpečnostní prvek, je posadit za počítač třináctiletého.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ve snaze zabezpečit software před nevítanými vetřelci mají lidé občas tendenci se soustředit na nejčastější a nejznámější způsoby průniku a budování sofistikované obrany proti nim. Přitom mohou přehlédnout nepřímou ale jednoduchou cestu dovnitř. Dalo by se říct, že tento zákon je důsledkem toho, když někdo přes samé stromy nevidí les. &lt;br /&gt;&lt;br /&gt;Murphyho zákony byly převzaty z &lt;a href="http://www.murphys-laws.com/murphy/murphy-computer.html  "&gt;Murphy's computers laws&lt;/a&gt;, přeloženy a popřípadě mírně upraveny.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5099546394935645738-6701953566958920463?l=testovanisoftwaru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/6701953566958920463/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/09/murphyho-zakony-proc-jsou-pravdive.html#comment-form' title='Počet komentářů: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/6701953566958920463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/6701953566958920463'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/09/murphyho-zakony-proc-jsou-pravdive.html' title='Murphyho zákony. Proč jsou pravdivé?'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5099546394935645738.post-2398889926760935600</id><published>2009-08-11T19:05:00.006+02:00</published><updated>2011-06-05T11:33:24.237+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Základy testování'/><category scheme='http://www.blogger.com/atom/ns#' term='testování softwaru'/><category scheme='http://www.blogger.com/atom/ns#' term='pokrytí testy'/><category scheme='http://www.blogger.com/atom/ns#' term='testovací dokumentace'/><category scheme='http://www.blogger.com/atom/ns#' term='chyba'/><category scheme='http://www.blogger.com/atom/ns#' term='metriky'/><category scheme='http://www.blogger.com/atom/ns#' term='kvalita'/><title type='text'>Základy testování</title><content type='html'>Protože literatury ohledně testování je v češtine velmi málo, rozhodla jsem se zveřejnit část svojí příručky o testování, která vznikla v rámci diplomové práce a která se zabývá základy testování.  &lt;br /&gt;Doufám, že se Vám bude líbit.&lt;br /&gt;&lt;br /&gt;Tuto příručku a další materiály naleznete v sekci ke stažení.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5099546394935645738-2398889926760935600?l=testovanisoftwaru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/2398889926760935600/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/08/zaklady-testovani.html#comment-form' title='Počet komentářů: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/2398889926760935600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/2398889926760935600'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/08/zaklady-testovani.html' title='Základy testování'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5099546394935645738.post-6447918177413983518</id><published>2009-08-05T17:17:00.001+02:00</published><updated>2009-08-05T19:07:41.616+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test manager'/><category scheme='http://www.blogger.com/atom/ns#' term='testování softwaru'/><category scheme='http://www.blogger.com/atom/ns#' term='testovací mise'/><title type='text'>Zamyšlení nad testovací misí</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0cm;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-fareast-font-family:"Times New Roman";} @page Section1  {size:595.3pt 841.9pt;  margin:70.85pt 70.85pt 70.85pt 70.85pt;  mso-header-margin:35.4pt;  mso-footer-margin:35.4pt;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Normální tabulka";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin:0cm;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;  &lt;p class="MsoNormal"&gt;Manažer by měl ...&lt;/p&gt;  &lt;p class="MsoNormal"&gt;... být vůdčí osobností&lt;/p&gt;  &lt;p class="MsoNormal"&gt;... jasně vysvětlit ostatním členům týmu projektovou misi a cíle&lt;/p&gt;  &lt;p class="MsoNormal"&gt;... umět nadchnout pro úkol &lt;/p&gt;  &lt;p class="MsoNormal"&gt;... podpořit přijetí projektových cílů zaměstnanci za své&lt;/p&gt;  &lt;p class="MsoNormal"&gt;... podporovat spolupráci a aktivitu&lt;/p&gt;  &lt;p class="MsoNormal"&gt;... motivovat ke zlepšování&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;S takovýmto přístupem jsem se setkala v přednáškách o managementu škole, v moudrých knihách jako je např. Měření v systémech managementu jakosti od Jaroslava Nenadála a bohužel poněkud méně často v praxi.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Atmosféra spolupráce, nadšení a odpovědnosti za dosažení cílů je jistě v mnoha oblastech plus, ale v testování softwaru je přímo magickou ingrediencí. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Definice cílů a snaha o jejich dosažení je oním počátkem cesty, jak se stát z průměrného testera, který jen sleduje scénáře a návody opravdovým expertem na testování.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Test manager nebo projektový manager definicí testovacích misí a nadchnutím testerů pro jejich dosažení vytváří prostředí, které testery inspiruje ke zlepšování a řada z nich pak začne růst ve vynikající odborníky.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Je to ale cesta, kterou neujdete po pár hodinách nebo dnech. Je to cesta, po které můžete jít tak dlouho, dokud vám vydrží motivace. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Protože dokud budete mít důvod se chtít zlepšovat, prostor ke zlepšení vždy najdete.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Mise testování určuje, co je momentálním cílem testerovy práce, a definuje kritéria, která hodnotí, zda a nakolik misi splnil. Je tak možné lépe řídit práci testera, je-li mu řečeno, jakých cílů má testování dosáhnout, s jakým záměrem má testovat. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Cíle testovací mise mohou být různé: odhadnout chybovost jednotlivých modulů aplikace, připravit reprodukovatelné testy, odhalit co nejvíce chyb, nebo třeba jen rychle odhalit závažné chyby, bránící nasazení aplikace.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Často testování sleduje více záměrů zároveň a mise tak má více cílů.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Smyslem definice misí, je uvědomit si záměr testování a schopnost posuzovat jejich výsledky.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Splnili jsme svou misi? Nakolik? Proč jsme selhali? Existuje prostor pro zlepšení? Co jsme se naučili? Je možné dosáhnout jiným přístupem lepších výsledků?&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Definice konkrétních cílů dané iterace testování je mocným nástrojem. Manažerům umožňuje efektivní řízení zdrojů, testery vede pak k tomu, jak dělat svou práci co nejlépe.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Nejužitečnější cíle jsou definované tak, aby byly měřitelné. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Dvě skupiny otestují stejný produkt, jak rozhodnout, která je lepší?&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Pokud nevíme, nakolik jsme dobří a nakolik splňujeme naše cíle, chybí prostor pro zlepšování. Chybí dostatek motivace a firma místo odborníků a efektivního testování bude mít jen samé průměrné klikače a ne moc dobré ale za to drahé testy. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5099546394935645738-6447918177413983518?l=testovanisoftwaru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testovanisoftwaru.blogspot.com/feeds/6447918177413983518/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/08/zamysleni-nad-testovaci-misi.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/6447918177413983518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5099546394935645738/posts/default/6447918177413983518'/><link rel='alternate' type='text/html' href='http://testovanisoftwaru.blogspot.com/2009/08/zamysleni-nad-testovaci-misi.html' title='Zamyšlení nad testovací misí'/><author><name>Mgr. Anna Borovcová</name><uri>http://www.blogger.com/profile/18055402691433556016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
