„Toto je nejúžasnější aplikace strojového učení, jakou jsem kdy viděl.“
Mike Krieger, spoluzakladatel Instagramu.
Slova Mika Kriegera nejsou nadsázkou. Ačkoli je technologie ML schopná některých pozoruhodných věcí, pokud jde o analýzu dat a poznatky, GitHub Copilot zcela mění pravidla hry, protože může být užitečný vývojářům produktů po celém světě.
Kódovací kopiloti a generativní umělá inteligence pomáhají týmům odemknout obrovské výhody, jako je zrychlení životního cyklu vývoje softwaru na dosud nepředstavitelnou rychlost. Vliv této technologie na RPA a testování softwaru jsou však dvě z nejzajímavějších oblastí této úžasné technologie.
V tomto článku se podíváme na to, jak kódovací kopiloti a generativní umělá inteligence změnily svět testování softwaru a RPA v současnosti, a poté se budeme zabývat jejich budoucím dopadem na technologie.
Kopiloti a generativní umělá inteligence v
vývoj softwaru: Základní informace
Generativní umělá inteligence a kopiloti kódování jsou v oblasti vývoje softwaru relativními nováčky. Než se budeme zabývat jejich vlivem na tento prostor, stojí za to podívat se na jejich zázemí a způsob práce.
1. Automatické programátory s umělou inteligencí
Velké jazykové modely (LLM) se za posledních několik let výrazně zlepšily. S exponenciálním nárůstem velikosti datových souborů a výpočetního výkonu se zvyšuje kvalita výstupů.
Existuje mnoho oborů, které mohou mít z LLM prospěch. Mezi nejčastější patří generování textu, obrázků, videí a dalších forem médií. Ačkoli jsou tyto případy použití působivé, pro vývojáře jsou možná mnohem zajímavější důsledky.
Na trhu je řada autokodérů LLM. GitHub CoPilot je však pravděpodobně nejznámější a nejdokonalejší. Z velké části proto, že je vycvičen v repozitáři GitHub. Má přístup k milionům příkladů kódu s otevřeným zdrojovým kódem, osvědčených postupů, architektury aplikací a dalších zdrojů, z nichž se může učit, což mu umožňuje poskytovat vysoce kvalitní a všestranné výstupy.
2. Jak funguje kódování kopilotů?
Jedním z nejjednodušších způsobů, jak se seznámit s fungováním kopilotů, je podívat se na přední produkt v této oblasti, GitHub CoPilot. Aplikace je založena na modelu ChatGPT-3 společnosti OpenAi.
Stejně jako ChatGPT a podobné LLM je CoPilot založen na miliardách parametrů. Během vývoje ChatGPT-3 začala společnost OpenAI vytvářet speciální program pro kódování nazvaný OpenAI Codex. Společnost Microsoft si zakoupila exkluzivní přístup k produktu.
Klíčové však je, že Microsoft již GitHub vlastnil. Pokud programujete, víte o GitHubu vše. V podstatě se jedná o webovou platformu používanou pro správu verzí a spolupráci v projektech vývoje softwaru. Školili OpenAI Codex na knihovně GitHub, která obsahovala miliony řádků veřejného kódu s otevřeným zdrojovým kódem.
CoPilot využívá strojové učení k vyhledávání vzorů a vztahů mezi řádky kódu. Stejně jako ChatGPT se podívá na slovo nebo řádek a na základě rozsáhlého úložiště historických dat vypočítá pravděpodobnost, co by mělo následovat.
Síla kopilotů s umělou inteligencí spočívá v jejich schopnosti navrhovat fragmenty kódu při úpravách vývojářů. Představte si to jako vylepšené automatické dokončování kódování. Když programátor zadá řádek kódu, LLM porovná jeho začátek s obrovskou knihovnou předchozích projektů. Odtud navrhuje pravděpodobnostní řádky a nové řádky kódu.
Vývojáři mohou díky automatickému dokončování ušetřit neuvěřitelné množství času. Zvyšuje produktivitu a v mnoha případech i přesnost kódu.
3. Co generativní umělá inteligence pro kódování a vývoj?
Jak je vidět z historie CoPilota, generativní umělá inteligence a kopiloti mají podobné kořeny. Obě technologie využívají statistickou pravděpodobnost k předpovídání potřeb uživatelů na základě imputovaných informací.
Velký rozdíl mezi softwarem pro kopilotaci a generativní umělou inteligencí však spočívá v tom, že kopilotační software je založen na výzvách. Stručně řečeno to znamená, že uživatelé zadají stroji soubor písemných pokynů a ten pak vypíše obsah. Každý, kdo používá ChatGPT nebo podobné aplikace, ví, že tento výstup může mít podobu textu, obrázků, videa nebo kódu.
Ačkoli se tedy metody, které kodéři používají k automatizovanému kódování, liší, můžeme je zařadit pod podobný pojem automatizované nebo generativní kódování s pomocí umělé inteligence.
Vývoj testování softwaru
Testování softwaru reaguje a neustále se vyvíjí. Během několika desetiletí se změnila a proměnila tak, aby splňovala nové požadavky a využívala technologický pokrok.
1. Ruční testování:
V počátcích testování softwaru se testovalo ručně. Tento druh testování byl drahý a časově náročný, protože vyžadoval, aby odborníci na zajištění kvality prošli software velmi pečlivě, vytvořili řadu testovacích případů, spustili a zaznamenali výsledky, naplánovali opravy a proces opakovali.
Zajištění pokrytí všech možných scénářů a situací těmito testy bylo velkou výzvou, a když se k tomu přidá čas a náklady, bylo manuální testování náročné na zdroje. Byl také velmi náchylný k lidským chybám, což bylo umocněno omezenými možnostmi distribuce, což znamenalo, že všechny neodhalené chyby bylo náročné rychle opravit.
2. Skriptované testování:
Skriptové testování představovalo pro komunitu QA obrovský krok vpřed. Místo ručního procházení kódu a testovacích scénářů mohli vývojáři napsat programy, které dokázaly testovat software automaticky. Velkou výhodou bylo, že testování se stalo efektivnějším a méně náchylným k lidským chybám. Dosažení tohoto cíle však vyžadovalo kvalifikované, přesné a časově náročné plánování a kódování, aby bylo zajištěno komplexní pokrytí.
3. Automatizace testování:
Automatizace testů byla dalším vývojem testování. Nástroje jako ZAPTEST dokázaly programátorům nabídnout všechny výhody skriptovaného testování, ale bez kódového rozhraní. Významnými přínosy zde byly opět úspora času, opakovaně použitelné a přizpůsobitelné testy, testování uživatelského rozhraní a rozhraní API a testování napříč platformami a zařízeními.
4. Testování založené na datech:
Testování založené na datech bylo řešením problému testování softwaru, který zpracovává různé soubory dat. Opět se jedná o formu automatizace testování, ale tato metoda zahrnuje vytvoření testovacích skriptů a jejich spuštění proti přiřazeným datovým sadám. Tento typ testování umožnil vývojářům pracovat rychleji, izolovat testy a zkrátit dobu opakování testovacích případů.
5. Generativní testování umělé inteligence:
Generativní testování umělou inteligencí je nejnovější inovací v oblasti testování softwaru. Pomocí modulů LLM mohou týmy QA vytvářet testovací případy a testovací data, které pomáhají urychlit proces testování. Tyto testovací případy jsou velmi flexibilní a upravitelné, což vývojářům pomáhá opakovaně používat a využívat testy a výrazně rozšiřuje rozsah testování.
Současné používání kopilotů a
Generativní umělá inteligence v testování softwaru a RPA
Generativní umělá inteligence a kopiloti mají velký vliv na testování softwaru. Tyto nástroje však spíše než aby přímo nahradily programátory, pomohly rozšířit testery. Stručně řečeno, pomáhají vývojářům zrychlit a zefektivnit práci a v mnoha případech zvyšují kvalitu testování.
Na stránkách
Průzkum mezi vývojáři Stack Overflow z roku 2023
nabízí několik informací o současném využití nástrojů umělé inteligence v komunitě vývojářů softwaru. Jedna z nejzajímavějších částí průzkumu ukázala, že zatímco o něco více než polovina všech vývojářů uvedla, že se zajímá o nástroje umělé inteligence pro testování softwaru, méně než 3 % uvedla, že těmto nástrojům důvěřují. Navíc jen 1 ze 4 respondentů uvedl, že v současné době používá nástroje umělé inteligence pro testování softwaru.
Zajímavé na těchto statistikách je, že ukazují, že používání nástrojů umělé inteligence ještě není rozšířené a že ti, kdo je zavádějí dříve, mohou stále získat výhodu.
1. Případy použití kopilotů a generativní umělé inteligence v testování softwaru a RPA
Kopiloti a generativní umělá inteligence ovlivňují všechny oblasti vývoje softwaru. Zde je několik způsobů, jak může tato technologie pomoci při testování softwaru a RPA.
Analýza požadavků
Analýza požadavků je klíčovou součástí životního cyklu vývoje softwaru. Tento proces zahrnuje pochopení požadavků zainteresovaných stran a různých funkcí potřebných k vytvoření softwaru. Generativní umělá inteligence může týmům pomoci při vymýšlení nových nápadů a perspektiv.
Plánování testů
Jakmile jsou požadavky na testování dobře pochopeny, musí týmy QA rozdělit věci do harmonogramu, aby zajistily dostatečné pokrytí testů. Tento typ práce vyžaduje odborné znalosti a zkušenosti, ale Generative AI může týmy podpořit prostřednictvím příkladů a návodů a doporučit konkrétní nástroje a osvědčené postupy pro jejich jedinečné požadavky.
Vytvoření testovacího případu
Týmy zajišťující kvalitu mohou používat LLM k analýze kódu, uživatelských požadavků a specifikací softwaru, aby pochopily základní vztahy v systému. Jakmile umělá inteligence pochopí vstupy a výstupy a očekávané chování softwaru, může začít vytvářet testovací případy, které budou software testovat.
Výhody tohoto řešení přesahují úsporu času a ruční kódování. Vytváření testovacích případů pomocí umělé inteligence může také vést ke komplexnějšímu pokrytí, protože může prozkoumat oblasti, které by inženýři QA nemuseli brát v úvahu, což vede ke spolehlivějším sestavením.
Hledání a řešení chyb
Strojové učení umožňuje odborníkům na zajištění kvality výrazně zkrátit dobu potřebnou k nalezení a vyřešení chyb. Při testování softwaru lze mnoho chyb snadno najít. V mnoha případech je to však pracný a časově náročný proces. Generativní umělá inteligence může provádět kontroly za zlomek času manuálních pracovníků a pomáhá odhalit i ty nejodolnější chyby. Tyto nástroje umělé inteligence navíc dokážou identifikované chyby vyřešit, čímž šetří nekonečné množství času týmů QA.
Testování uživatelského rozhraní
Generativní nástroje umělé inteligence mohou simulovat celou řadu chování uživatelů a interakcí se softwarovými systémy. Tyto metody mohou dát vývojovým týmům jistotu, že jejich rozhraní zvládne širokou škálu použití mezi člověkem a počítačem. Generativní umělá inteligence navíc dokáže analyzovat data a heatmapy uživatelského rozhraní a navrhovat, jak uživatelské rozhraní vylepšit a učinit ho uživatelsky přívětivějším.
Budoucnost kopilotů a generativní AI
v oblasti testování softwaru a RPA
Zatímco současné využití kopilotů a generativní umělé inteligence v automatizaci softwaru je již vzrušující, budoucnost je ještě slibnější.
Budoucnost kopilota a generativní umělé inteligence závisí na vylepšeních, která lze v těchto produktech provést. Nedávná studie Purdue University s názvem Kdo na to odpoví lépe? Hloubková analýza odpovědí ChatGPT a Stack Overflow na otázky softwarového inženýrství zdůrazňuje některá omezení generativních modelů umělé inteligence.
Výzkumníci zadali ChatGPT více než 500 otázek ze Stack Overflow. Nástroj umělé inteligence odpověděl více než z poloviny nepřesně. Je důležité poznamenat, že jedním z nejvýznamnějších problémů, které výzkumníci zaznamenali, bylo, že umělá inteligence nejčastěji selhávala, protože správně nerozuměla otázkám. Tento detail podtrhuje význam pohotového inženýrství v rámci generativní umělé inteligence.
Kromě toho společnosti Google i Amazon letos provedly nezávislé testy, které se zabývaly kvalitou nástrojů generativní umělé inteligence v rámci otázek při pohovoru. V obou případech se nástroji podařilo odpovědět na testové otázky dostatečně dobře na to, aby získal pozici, jak uvedla agentura
CNBC
a
Business Inside
, resp.
Je tedy zřejmé, že se nacházíme ve fázi, kdy tato technologie má potenciál, ale je třeba doladit některé drobnosti. Rozsah, v jakém se tyto nástroje v posledních letech zlepšily, nám dává jistotu, že se dostanou na požadovanou úroveň, a to pravděpodobně s předstihem.
Nyní se můžeme podívat na některé oblasti, ve kterých tyto technologie ovlivní budoucnost testování vývoje softwaru.
1. Hyperautomatizace
Hyperautomatizace popisuje cíl ve vývoji podniku, kde každý proces, který lze automatizovat, bude automatizován. Jedná se o holistický přístup k produktivitě, který je velmi propojený.
Z hlediska vývoje softwaru není těžké si představit centralizovaný systém s dohledem nad požadavky na obchodní procesy. Systém bude chápat a zjišťovat potřeby a efektivitu a neustále identifikovat oblasti, které je třeba zlepšit pomocí technologií.
S rozvojem podniků budou tyto centralizované systémy využívat generativní umělou inteligenci k vytváření aplikací, které budou automaticky řešit úzká místa a neefektivitu nebo třeba předávat konkrétní úkoly k dokončení inženýrům.
2. Navrhování softwarových architektur
S dostatečným množstvím dat by nástroje umělé inteligence mohly porozumět osvědčeným postupům v oblasti softwarové architektury a najít způsoby, jak tyto návrhy vylepšit pro dosažení maximální efektivity. Strojové učení je o hledání vzorců a vztahů, které jsou mimo dosah lidské mysli.
Pokud mají nástroje umělé inteligence dostatečné znalosti o různých aplikacích, můžeme je instruovat, aby ohýbaly předchozí architektury podle nových požadavků, což povede k efektivnějším sestavám nebo dokonce k nápadům, které by jinak nebyly brány v úvahu.
3. Modernizace starších systémů
Ačkoli žádný software není dokonalý, existuje mnoho nástrojů, které stále odvádějí vynikající práci a jsou tak hluboce zakořeněny v infrastruktuře společnosti, že je obtížné je nahradit. Přizpůsobení těchto systémů může být náročné, zejména pokud byly napsány pomocí softwarového kódu, který již vyšel z módy.
V budoucnu budou nástroje generativní umělé inteligence schopny převést tento kód do jazyka du jour, což týmům umožní zachovat jejich starší systémy a v mnoha případech je i vylepšit.
4. Zlepšení vývoje s nízkým kódem a bez kódu
Jedním z problémů automatizovaného testování softwaru pomocí nástrojů generativní umělé inteligence, který jsme identifikovali výše, byla situace, kdy kodér neměl dostatečné znalosti a zkušenosti pro ověření výstupu.
Kopiloti s umělou inteligencí pomohou rozšířit nízkokódové nástroje o lepší návrhy, které povedou k robustním aplikacím. Sofistikované testovací nástroje umožní lidským operátorům volnou kreativní ruku a zároveň neustále ověřovat jejich práci a otevřít dveře netechnickým profesionálům k vytváření potřebných aplikací.
Výhody generativní umělé inteligence při testování softwaru
Použití generativní umělé inteligence pro testování softwaru má mnoho výhod, které z něj činí atraktivní volbu pro vývojové týmy, které chtějí pracovat rychleji, ale bez kompromisů v kvalitě.
1. Zrychlení životního cyklu vývoje softwaru
Vývojáři jsou pod neustálým tlakem a musí pracovat dlouhé hodiny, aby zajistili včasné uvedení softwaru a nových funkcí na trh. Metodiky Agile/DevOps sice zajistily efektivnější vývoj, ale stále existují jednotlivé fáze vývoje, které by bylo vhodné dále zefektivnit.
Generativní nástroje AI umožňují testovacím týmům řešit různé fáze SDLC, od generování prototypů až po testování uživatelského rozhraní.
2. Komplexní detekce chyb
Jedním z nejsilnějších využití umělé inteligence v testování softwaru je schopnost této technologie porovnávat velké soubory dat. Nástroje ML mohou analyzovat rozsáhlé soubory dat (včetně kódu) a vytvářet tak úložiště informací a očekávaných modelů.
Když vývojáři odevzdávají kód, mohou jej porovnat s těmito modely, které mohou upozornit na neočekávané scénáře, závislosti a zranitelnosti, což umožní zlepšit kód v celém procesu vývoje.
3. Zlepšené pokrytí testů
Nástroje strojového učení jsou vytvořeny k analýze a pochopení rozsáhlých souborů dat. Při aplikaci na testování softwaru umožňuje týmům zvýšit rozsah testování softwaru. Přínosem je nejen odstranění lidské práce z rovnice a úspora peněz, ale také mnohem komplexnější typ testování, který umožňuje lépe odhalovat chyby v komplexním souboru scénářů.
4. Snížení nákladů
Ve srovnání se zaměstnáváním týmu inženýrů QA a jejich využíváním pro opakované a časově náročné úkoly testování softwaru jsou generativní AI a RPA rychlejší a nákladově efektivnější.
S rostoucí konkurencí ve světě vývoje softwaru roste význam hledání způsobů, jak dodávat kvalitní a trvanlivé produkty s ohledem na rozpočet. Generativní nástroje AI a kopiloti mohou snížit závislost na inženýrech a umožnit jim vykonávat práci zaměřenou na hodnotu a vést k méně rozsáhlým sestavám.
Znamenají generativní nástroje AI konec
lidských softwarových inženýrů?
Navzdory zřejmým výhodám může každý automatizační nástroj vyvolat v pracovnících obavy o jejich budoucnost. Ačkoli jde o normální reakci, vzhledem k rychlosti a rozsahu generativní umělé inteligence jsou obavy rozsáhlejší než obvykle. I když tyto nástroje dokážou automatizovat mnoho úloh, nemohou vykonávat všechny úkoly, které softwaroví inženýři dělají. Pro inženýry a vedoucí pracovníky je zásadní porozumět možnostem technologie a jejím omezením.
V první řadě je třeba si uvědomit, že nástroje pro automatizaci testování využívající umělou inteligenci existují na trhu již delší dobu. Uživatelsky přívětivá povaha generativní umělé inteligence však umožňuje její další flexibilitu.
Jednou z prvních věcí, kterou musíme vzít v úvahu, je, že generativní umělá inteligence funguje nejlépe u výstupů, které lze ověřit. To je klíčový bod. Z povahy vzdělání LLM vyplývá, že se vám budou snažit dát odpověď, i když to občas znamená „halucinace“ faktů, odkazů a argumentů.
Pokud máte dostatečné znalosti kódování, budete nyní schopni přečíst a ověřit jakýkoli text, který generativní umělá inteligence vypíše, a zachytit případné chyby. Pokud jste občan, který místo schopnosti programovat používá generativní umělou inteligenci, nebudete schopni tyto chyby zachytit.
Z tohoto pohledu budou kvalifikovaní inženýři stále důležitou součástí ekosystému vývoje softwaru. I nadále budou muset provádět zkoušky jak z hlediska dohledu, tak z hlediska praxe.
Další omezení generativní umělé inteligence pro testování softwaru se týká mobilního testování. Dobrou volbou pro testování uživatelských rozhraní webových stránek je například ChatGPT. Nemá však přístup k různým mobilním zařízením. S tolika různými telefony a modely na trhu zaostává za současným softwarem pro automatizaci testování, jako je ZAPTEST. Ani tento problém není zanedbatelnou překážkou. Více než
polovina všech uživatelů internetu pochází z mobilních zařízení
a toto číslo se každým rokem zvyšuje.
Generativní umělá inteligence sice sebere vývojářům mnoho povinností, ale bez rozsáhlých změn v testovací infrastruktuře a schopnosti ověřovat výstupy tyto profesionály nezbaví funkce.
Závěrečné myšlenky
Testování softwaru a RPA se neustále zdokonalují. Jak se objevují nové technologie a metody, obě disciplíny přebírají osvědčené postupy, které pomáhají týmům QA poskytovat rychlejší a komplexnější testování za zlomek ceny manuálního testování.
Zlepšení rozsahu testů a snížení chybovosti a nákladů na lidský faktor patří mezi nejzřetelnější výhody testování pomocí umělé inteligence, ale také pomáhá týmům přijmout přístup kontinuální integrace a nasazení (CI/CD).
Vzhledem k tomu, že očekávání spotřebitelů a konkurence jsou vyšší než kdykoli předtím, nabízí generativní umělá inteligence týmům způsob, jak zajistit rychlé a efektivní testy bez snížení kvality.