Efektivita využití AI v testování softwaruhttps://www.create-it.cz/Blog/Stranky/AI_testing.aspxEfektivita využití AI v testování softwaru<p>​Doba, kdy bylo softwarové testování plně závislé na manuální práci testerů, kteří museli prověřovat jednotlivé části kódu a ručně hledat chyby, je pravděpodobně minulostí. Tato metoda byla nejen časově náročná, ale především vysoce závislá na lidském faktoru. V současnosti jsme ve světě testování softwaru svědky evolučního procesu; přechodu od zažitých metod automatizace k sofistikovaným technikám založeným na umělé inteligenci.</p><p>Umělá inteligence (AI) umožňuje testerům analyzovat rozsáhlé datové sady, predikovat chování systému a odhalovat potenciální problémy, které by mohly lidskému oku uniknout. AI se ve stále větší míře podílí na zdokonalování přípravné fáze testování. Pomáhá při psaní testovací strategie, testovacího plánu a také s konkrétními testovacími scénáři v programovacím jazyce dle vlastní volby.<br></p><p>K významnému nárůstu kvality testování došlo již s příchodem automatizovaného testování. Automatizované skripty dnes běžně provádějí opakující se úkoly bez potřeby lidské intervence, což vede ke zvýšení efektivity a objemu zvládnuté práce.<br></p><p>Aktuálně je jedním z nejběžnějších pomocníků využívaných při testování ChatGPT. ChatGPT-4 (Generative Pretrained Transformer) byl vyvinut společností OpenAI, organizací honosící se posláním vývoje umělé inteligence pro dobro lidstva. Přičemž jen společnost Microsoft investovala do projektu více než miliardu dolarů, další využití v prohlížeči AI BingChatGPT je již také dostupné na trhu.<br></p><p>Model GPT-4 byl trénován na obrovském množství dat dostupných na internetu. V této chvíli však pracuje model pouze s daty platnými do září roku 2021, stejně jako tomu bylo u jeho předchůdce. Jak již bylo řečeno, dokáže Chat GPT zlepšit kvalitu přípravné a realizační fáze testování. Funguje jako zkušený kolega, který je kdykoliv k dispozici k diskusi nad tématy a rutinními úkoly, se kterými potřebujete pomoci. Ve své práci je pak podstatně rychlejší než člověk. ChatGPT komunikuje primárně v angličtině. Češtině bez problému rozumí, ale jeho odpovědi v tomto jazyce jsou prozatím omezené a nevyužívají plného potenciálu modelu.<br></p><h2>Empirický výzkum potvrdil rychlejší a kvalitnější vyřešení úkolu s pomocí AI<br></h2><p>Z publikované empirické <a href="https://economics.mit.edu/sites/default/files/inline-files/Noy_Zhang_1.pdf" target="_blank">studie​</a> Massachusetts Institute of Technology autorů W. Noye a W. Zhanga je zřejmé, že pozitivní přínos ChatGPT je experimentálně měřitelný a prakticky využitelný. Jak dále uvádí Noy a Zhang, produktivita práce jednoho člověka během jednoho pracovního dne je složena ze složky rychlosti zpracování konkrétního úkolu a složky kvality poskytnutého výstupu. Realizovaného výzkumu se zúčastnilo 444 zaměstnanců, zejména zkušených analytiků dat. Každý z účastníků měl za úkol zpracovat dvě zadání oblasti, na kterou se specializují. Výstupem měl vždy být dokument typu krátký report, analýza nebo budoucí strategie v rámci dané oblasti.</p><p>První ze dvou zadaných úkolů vyřešili účastníci tradičním způsobem, bez pomoci umělé inteligence. Při řešení druhého úkolu byli náhodně rozlosováni do dvou skupin. První polovina zaměstnanců, experimentální skupina, měla tento druhý úkol vyřešit s pomocí ChatGPT. Druhá, kontrolní skupina, si měla vystačit s tradičními metodami bez pomoci AI. Zhruba 30 % účastníků pracující s ChatGPT neměla dříve s AI žádnou zkušenost. Vzniklé dokumenty z druhého experimentu byly hodnoceny expertním týmem specialistů schopných kvalitu výstupů odborně posoudit. Hodnocení se pohybovalo na škále 1–7, kdy 1 byla nejnižší a 7 nejvyšší možná známka. Výstup, tedy vypracovaný dokument, byl vždy hodnocen třemi nezávislými hodnotiteli. Hodnotitelům nebylo sděleno, zda byl výstup vypracován s pomocí umělé inteligence, či nikoli.<br></p><h2>Výsledek výzkumu překvapil, s pomocí AI došlo k nárůstu objemu zvládnuté práce o 60 %<br></h2><p>Fenomén kognitivní psychologie, známý jako kompromis mezi rych­los­tí a přesností, se v tomto výzkumu nepotvrdil. Došlo jak k rychlejší­mu vyřešení úkolů, tak k dosažení lepší kvality dodaných výsledků. V prvním experimentu tvorby dokumentu bez pomoci AI došlo k zhruba shodnému výsledku měřené kvality v obou sledovaných skupinách. Obě skupiny byly kontrolním srovnáním stejně výkonné jak v měřeném čase, tak v dosažené kvalitě výstupů.</p><p>V druhém kole experimentu trvalo zpracování úlohy s pomocí ChatGPT v průměru 17 minut. Kdežto průměr zpracování úkolu bez pomoci umělé inteligence trval 27 minut. V laboratorních podmínkách by tedy jeden pracovník během 8hodinové pracovní doby (480 minut) vytvořil 480/27 = 17,7 ucelených výstupů. Specialista s pomocí ChatGPT by pak vytvořil 480/17 = 28,3 hotových výstupů. To znamená navýšení produktivity práce o téměř 60 %! (28,3–17,7)/17,7 = 0,598. Tento rozdíl odpovídá 0,83 standardní odchylky, což je v experimentech hodnoceno jako rozdíl velký.<br></p><p><img src="/Blog/PublishingImages/Stranky/AI_testing/AI_graf_1.png" data-themekey="#" alt="" style="margin:5px;width:658px;" /><br></p><p>Kvantita jako taková by nás dostatečně neuspokojila, pokud by jí bylo dosaženo na úkor kvality. V tomto případě, a na základě nezávislého hodnocení tří odborníků na dané zpracované téma, tomu tak ale rozhodně není. Rozdané známky hodnotitelů na škále 1–7 dosáhly průměrného hodnocení 4,5 s pomocí AI a 3,8 bez pomoci AI. Jak již bylo zmíněno, hodnotitelé nevěděli, zda byl výstup zpracován s, nebo bez pomoci ChatGPT. Standardní odchylka posunu kvality výstupu nabyla hodnoty 0,45. Tato hodnota je přesně na hranici malé až střední změny ve sledovaných parametrech výzkumu.<br></p><p>Největšího efektu dosáhla umělá inteligence v rychlosti zpracovávaných úkolů. Došlo ale také k mírnému až střednímu posunu v kvalitě dodaných výstupů. Vzhledem k nízké čí žádné předchozí zkušenosti s ChatGPT lze časem díky postupnému nabývání zkušeností s nástroji AI očekávat ještě vyšší rychlost a kvalitu při dosahování plnění zadaných úkolů. Zajímavé by bylo zopakovat celý experiment se vzorkem uchazečů, kteří mají předchozí zkušenost s využitím ChatGPT řekněme 75 %. Postupně se očekává nárůst zkušeností práce s nástroji umělé inteligence. Výsledky experimentální skupiny s vyšší zkušeností využití nástroje by pravděpodobně vedly k ještě výraznějším rozdílům ve výkonu mezi kontrolní a experimentální skupinou.<br></p><h2>Reálný příklad z praxe psaní regresních testů<br></h2><p>Psaní základního regresního scénáře zabere zkušenému testerovi zhruba 30 minut. S pomocí ChatGPT zvládne tester regresní scénář napsat a vyladit za polovinu času. Hlavní přidaná hodnota spočívá v domyšlení všech pozitivních i negativních cest, které mohu po zadání analýzy požadavků nastat. Jednoduše řečeno, tester přenese rutinní úkoly na stroj a uvolní si kreativní část mozku k řešení komplexnějších úkolů a dohledu nad celkovým výstupem přípravy testování. V kombinatorice je ChatGPT dobře vytrénován a jeho výstupy pomohou eliminovat riziko zanesení chyb. Stejně tak pomůže s určením vah důležitosti a priorit jednotlivých scénářů při udržení komplexit a integrity celku. Zejména při velkém počtu testovacích scénářů v řádech tisíců je zachování nezávislého arbitra při výběru kritických cest nutných k otestování zcela klíčové.<br></p><p><img src="/Blog/PublishingImages/Stranky/AI_testing/AI_graf_2.png" data-themekey="#" alt="" style="margin:5px;width:658px;" /><br></p><h2>Detailní analýzy přečte chat GPT za vás a extrahuje ty nejdůležitější myšlenky<br></h2><p>Reálně dokáže ChatGPT efektivně navrhnout také komplexní testovací strategii, konkrétní testovací plán, plán regresních testů či přímo vygenerovat hotové skripty pro automatizaci v Pythonu, Playwrightu či CyPressu. Navržené testovací skripty jsou po doplnění konkrétních přístupových cest a autorizaci plně funkční.</p><p>Obrovská přidaná hodnota umělé inteligence tkví v možnosti navázat na předchozí konverzaci a vhodnými dotazy dosáhnout ideálního řešení. AI dokáže dále nalézt limity a podmínky daného řešení, nalézt chybu v kódu nebo nabídnout různé varianty řešení problémů do přehledné tabulky, včetně poměrného zastoupení daného řešení ve světě.<br></p><h2>Umělá inteligence je dobrý sluha, ale zlý pán<br></h2><p>ChatGPT ukládá veškerá poskytnutá data a kombinací vhodných otázek je může v dobré víře poskytnout dalším uživatelům. Je proto nezbytné citlivé firemní údaje chránit a vůbec je ke zpracování AI neposkytnout. Moderní software využívající ChatGPT API dokáže ta­ko­vá­to škodlivá data ​identifikovat již na vstupu a včas je eliminovat. Posunuje tak hranici bezpečnosti práce s umělou inteligencí na vyšší – akceptovatelnou míru rizika. V ideálním případě je vhodné komuni­ka­ci a poskytnutá data umělé inteligenci ukládat k podrobnější ana­lý­ze. Výstupy z ChatGPT je vhodné ukládat také a sledovat vývoj poskytovaných výstupů v čase na úrovni jednotlivých uživatelů.​<br></p><p><br></p><p><em style="orphans:2;text-align:justify;widows:2;">David Víteček</em></p><p><em style="orphans:2;text-align:justify;widows:2;">Zdroj: SystemOnLine 11/2023​​</em>​<br><br></p>odborné;#
Testing Clever Akademiehttps://www.create-it.cz/Blog/Stranky/testing-akademie.aspxTesting Clever Akademie<p style="display:none;">​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​Vstup s námi do světa IT a pojď se naučit testovat software!​ Naši průvodci tě provedou cestami a stezkami až na tvou pomyslnou K2 – získáš svou příležitost v jiném oboru, ve kterém zúročíš své analytické a kritické myšlení.<br></p> ​<div class="ms-rtestate-read ms-rte-wpbox" unselectable="on"><div class="ms-rtestate-notify ms-rtestate-read 7011e392-79f3-4920-88bc-448b0e5808ac" id="div_7011e392-79f3-4920-88bc-448b0e5808ac" unselectable="on"></div><div id="vid_7011e392-79f3-4920-88bc-448b0e5808ac" unselectable="on" style="display:none;"></div></div><p>​​<br>​<br>​<br></p>vzdělávání;#
Měřitelnost přínosů implementace metodologie DevOpshttps://www.create-it.cz/Blog/Stranky/meritelnost-devops.aspxMěřitelnost přínosů implementace metodologie DevOps<p>​​V minulých dílech našeho seriálu o DevOps jsme se věnovali roli <a href="/Blog/Stranky/devops-digi-transformace.aspx" target="_blank">DevOps v digitální transformaci</a>: co si pod tímto pojmem představit, a jaké jsou klíčové body tohoto systému práce. Popsali jsme také <a href="/Blog/Stranky/zavedeni-devops.aspx" target="_blank">jak DevOps úspěšně zavést​</a> uvnitř technologické organizace a neselhat při tom. Nyní, ve třetím a závěrečném dílu, se budeme věnovat neméně důležitému tématu, a to odpovědi na otázku, které bude čelit každý zaměstnanec technologicky zodpovědný za vývoj a doručení aplikace. Ta otázka velmi zjednodušeně zní: „Kolik to bude stát, co z toho budeme mít a kdo to nakonec zaplatí?“ Ke každému hodnocenému aspektu uvedeme pro lepší představu i krátký příklad z praxe.<br></p><h2>1. Čas</h2><p>Nikde jinde, než právě při vývoji a doručování aplikací nehraje tato jednotka tak důležitou roli jako zde. Vývoj softwaru je velmi drahá záležitost, a předpokládané náklady lze poměrně jednoduše přenést na časovou osu. Přímá úměra je velice jednoduchá: Čím více času při vývoji softwaru strávíme, tím více peněz musíme vydat. Částečným řešením může být automatizace, ale pouze pokud je v týmu dostatek zkušených specialistů, kteří ji umí aplikovat.<br></p><p>Naprosto zásadní je mít správně nastavený rozpočet vůči velikosti týmu, který se bude v projektu angažovat. Projektové vedení, analytici, vývojáři a testeři dokážou doslova „konzumovat“ časové jednotky po celých týdnech a žádný rozpočet není bez nezbytného plánování ve skutečnosti tak velký, aby nedokázal nakonec velice rychle dojít.</p><p>K vývoji aplikací se nyní nejčastěji používá některý z agilních přístupů. Cílem DevOps je zajistit dostatečnou podporu agilním vývojovým týmům, přesto však není nezbytně nutné, aby byly jejich součástí. Bezpochyby nejrozšířenější agilní metodikou používanou na vývoj aplikací je Scrum.<br></p><p>V ideálním světě lze vytvořit backlog na konkrétní úkony, a dopředu si rezervovat čas DevOps specialisty. Tedy konkrétně a pouze jen jeho „Dev“ část, kterou lze plánovat. Bohužel v tom reálném musí DevOps, (tentokrát spíše ta „Ops“ část) reagovat ihned a nelze čekat na další sprint s opravou kritické části nasazení. Plánování se tím nutně stane složitějším.<br></p><p>Naší prioritou je eliminovat plýtvání, přinést dostatečnou kvalitu tam, kde je vyžadována a také budovat a zvyšovat celkovou zkušenost týmu. Právě proto je velmi často lépe aplikovatelná Lean Kanban metodologie.​​<br></p><h4>Příklad:​<br></h4><p>Před adopcí DevOps nebylo u našeho zákazníka možné paralelizovat sestavování aplikačního kódu. Sestavení monolitické aplikace trvalo přes 60 minut. Vývojáři nemohli vytvářet nové vývojové větve, a požadavek na vyřízení zabral i týden. Změnové požadavky na aplikaci byly plánovány měsíčně a release probíhal každý kvartál.<br></p><p>V případě operativních zásahů nefunkčnosti nasazení, bylo nutné kontaktovat externí tým, který sice reagoval následující den, ale problém vyřešil většinou až za několik dalších pracovního dní.<br></p><p>Díky metodologii DevOps bylo možné implementovat novou mikroservisní architekturu. Vývojáři si nyní mohou sami vytvářet vývojové větve. Jejich aplikační kód je testován v reálném čase ihned po odevzdání. Změnové požadavky jsou plánovány každé dva týdny a release je možné uskutečnit prakticky kdykoliv. Provozní chyby jsou eliminovány ten samý den, kdy jsou reportovány. Celkově potřebovala nová majoritní verze aplikace na cestě před zákazníka pouze 35 % času v porovnání s tou předchozí.<br></p><h2>2. Kvalita</h2><p>Jakákoliv další jednotka, kterou si stanovíme má víceméně opět dopad na čas, který je potřeba věnovat nápravě chyb, ať aplikačních, nebo UX. Kvalita je ale jedna z nejlépe hodnotitelných metrik, kterou můžeme sledovat. Zároveň se čísla velmi dobře sledují na grafech, které je nutné předložit jako důkaz správně provedené digitální transformace.<br></p><p>Každá společnost by měla udržovat seznam reportovaných chyb aplikace včetně jejich závažnosti s tím, že ty nejzávažnější bude opravovat jako první. Právě počty aktivních vs. vyřízených chyb v tomto seznamu se dají velmi dobře srovnat se stavem před zave­de­ním DevOps. Na reportování chyb lze použít kterýkoliv trackovací nástroj typu Jira, Trac, YouTrack nebo CI/CD platformy Azure Dev­Ops, Github, které také nabízí určité, byť drobně omezené, možnosti.<br></p><p>Kvalita se netýká pouze komplexního řešení hotového produktu, ale i jeho částí. Konkrétně služeb, ze kterých je postavena. Díky statické analýze můžeme měřit kvalitu kódu i bezpečnost. Mezi nejznámější nástroje patří SonarQube, který zvládne hravě obojí. Další služby jsou jFrom, Deepsource, Codacy, Qodana a mnoho dalších. Výstupem jsou grafy, které ukáží, jak dobře na tom daný produkt aktuálně je, včetně trendu, kterým se kvalita ubírá.<br></p><p>Standardně je možné tyto testy kvality a bezpečnosti implementovat jako jeden z podmíněných kroků při sestavování aplikačního kódu. Pokud odevzdávaný kód nesplní definovaná pravidla a limity, je automaticky zamítnut. Jinými slovy, není připuštěn k integraci a dalším testům, dokud ho vývojáři neopraví.<br></p><h4>Příklad:<br></h4><p>Díky DevOps, automatizaci a integraci statické analýzy ve vybrané společnosti vzrostla velmi zásadně kvalita produktu. Na základě nižšího počtu hlášených chyb došlo ke zlepšení kvality o více než 65 %. Většina chyb byla nalezena a včas odstraněna díky automatizovanému testování, definovaným pravidlům na kvalitu kódu i bezpečnostním testům.<br></p><h2>3. Flexibilita</h2><p>Jak lze měřit schopnost umět se přizpůsobit neustále se měnícím podmínkám na trhu a potřebám zákazníků? Zejména v dnešním dynamickém podnikatelském prostředí, kde flexibilita při vývoji softwaru velmi často znamená udržení konkurenceschopnosti, je tato schopnost zásadní? DevOps podporuje agilitu a umožňuje zapracování průběžné zpětné vazby zákazníků. Zrychlení iterace vývojových cyklů a časté nasazování aktualizací softwaru jsou jen některé ukazatele, které lze bez větších potíží zveřejnit.<br></p><h4>Příklad:<br></h4><p>Nové procesy umožnily rychlejší reagování na změnu trhu: změnové požadavky jsou zpracovávány podle reportu společnosti často až 18x rychleji. Toho bylo možné dosáhnout díky automatizaci někte­rých kroků při integraci, opět včetně testování. Odevzdaný kód je po splnění podmínek automatický začleněn do hlavní vývojové větve.<br></p><p>Takto velké zrychlení vývoje by nebylo myslitelné bez podpory paralelního vývoje a infrastrukturních závislostí. Díky dynamicky škálovatelnému prostředí je vždy dostatek výkonu pro vývoj a testy bez velkého dopadu na celkovou cenu. Když výkon není potřeba, jsou prostředky infrastruktury uvolněny na nezbytné minimum.<br></p><p>Flexibilitě napomáhá i moderní technologický stack a orchestrace aplikačních modulů. Pomocí dockerizace je velmi jednoduché izolovat jednotlivé verze aplikace, škálovat i doručovat a to bezvýpadkově. Kontejnerizace umožňuje i snadný „rollback“ (vrácení na předchozí verzi), pokud si to situace žádá. To, co dříve trvalo hodiny a dny, je možné aplikovat do několika málo vteřin.<br></p><h2>4. Náklady</h2><p>Téměř s jistotou nenarazíte na žádného vlastníka produktu, který by podepsal vývojovému týmu tzv. „blank cheque“. Stejně tak nevím ani o úspěšném projektu, kde byl termín dodání definován stylem „Až to bude, tak to bude“.<br></p><p>Náklady musí být známy a vyčísleny a vždy se musí hledat úspora tak, aby byl výsledný produkt ziskový. Jedním z mnoha řešení je automatizace procesů testování a doručení softwaru. Dalším řešením je dynamická infrastruktura typu „Pay as you go“, kdy jdou náklady pouze na infrastrukturu, která je aktivně používaná. Zároveň je vhodné zvolit architekturu, která umožňuje dynamické škálování infrastruktury.</p><p>Optimalizovat lze i ve vývojovém týmu, nebo požadovaných službách. Je vždy nutné mít interní vývojový tým, který (pokud chcete dostatečnou senioritu), je velmi drahý. Některé jeho části lze samozřejmě i outsourcovat.<br></p><h4>Příklad:<br></h4><p>Díky digitální transformaci společnosti a změny architektury bylo možné snížit náklady na infrastrukturu o 67 %! Snížily se také celkové náklady na vývoj a zrychlilo se celkové dodání. Úspory se dotkly také potřebných lidských zdrojů, opět díky automatizaci, není potřebný tak velký lidský výkon.<br></p><h2>Závěrem</h2><p>I když se může zdát, že je vše zalité sluncem na rozkvetlé zahradě plné růží, je nutné si uvědomit i rizika spojená s digitální transformací, o kterých jsme se bavili v předchozích dílech. Pokud je transformace prováděna neodborně, populární metodou „pokus-omyl“, může tento pokus vyjít velmi draho bez valného výsledku, nebo s výraznou ztrátou.<br></p><p>V případě, že je transformace naplánována dobře, je možné ji provést „bezvýpadkově“, kontinuálně a v přesně vymezeném časovém horizontu bez zásahu koncových klientů, a o ty jde dodavatelům softwaru samozřejmě především.</p><p>Díky měřitelnosti jednotlivých aspektů implementace DevOps procesů je jasně prokazatelné, jaký je přínos zavedením metodologie ve společnosti. Zároveň dokážou tyto metriky odhalit slabá místa, na která se lze více zaměřit při dalším rozvoji.​<br></p><p style="orphans:2;widows:2;text-decoration-style:initial;text-decoration-color:initial;"><em>Vojtěch Kijenský</em></p><p style="orphans:2;widows:2;text-decoration-style:initial;text-decoration-color:initial;"><em>Zdroj: SystemOnLine 08/2023​​</em></p>odborné;#