GitHub Copilot a testovanie softvéru

S narastajúcou zložitosťou softvérových systémov sa význam efektívneho a komplexného testovania stáva prvoradým. Developeri čelia výzve zabezpečiť dôkladné pokrytie testov a zároveň optimalizovať svoje pracovné postupy, aby dodržali termíny projektu. GitHub Copilot ponúka sľubné riešenie tejto výzvy poskytovaním relevantných návrhov kódu.

GitHub Copilot – definícia (GitHub Copilot definition)

GitHub Copilot je nástroj poháňaný umelou inteligenciou integrovaný do editora kódu, ktorý dokáže sám písať kód na základe kódu, ktorý si už napísal v projekte. Jediné, čo musíš urobiť, je zadať názov funkcie alebo niekoľko komentárov a Copilot automaticky doplní implementáciu. Nástroj spracuje vstupné údaje používateľa v cloude a vráti ti snippet (úryvok kódu), ktorý stačí prijať, odmietnuť alebo požiadať o ďalšie návrhy riešenia. Tento nástroj vyvinula spoločnosť GitHub v spolupráci s OpenAI.

GitHub Copilot pomáha vývojárom tým, že im poskytuje kontextovo relevantné návrhy kódu pri písaní kódu v integrovaných vývojových prostrediach (IDE). Analýzou kontextu kódu a komentárov ponúka GitHub Copilot návrhy na dokončenie fragmentov kódu, písanie funkcií a dokonca aj generovanie celých metód alebo tried. Cieľom tohto nástroja je zvýšiť produktivitu vývojárov a zefektívniť proces kódovania tým, že sa zníži potreba ručného písania opakujúceho sa alebo šablónovitého kódu.

Ak si chceš prečítať o GitHub Copilot viac, stačí kliknúť sem – github copilot documentation. Ak ťa zaujíma cenová ponuka, klikni sem – github copilot pricing.

Ako GitHub Copilot funguje

Napíšeš reťazec kódu alebo komentár a on ti navrhne nejaký úryvok kódu. V niektorých prípadoch stačí len názov funkcie alebo jej časť, aby vygeneroval zvyšok kódu. Kód je pre vygenerovaný jedinečne pre teba, čiže ti patrí.

Nižšie je uvedený stručný prehľad ako presne Copilot pracuje:

Ilustrácia ako pracuje copilot

 

ZDROJ: github.com

Copilot vytvára desať návrhov naraz. Keď zadáš viac kódu, návrhy budú presnejšie.

Výhody GitHub Copilot (GitHub Copilot benefits)

  • Copilot ponúka návrhy kódu v reálnom čase, ktoré môžu urýchliť proces programovania a vytvárania automatizovaných testov. Môže byť obzvlášť užitočný pri opakujúcich sa úlohách.
  • Pre začiatočníkov môže Copilot slúžiť ako nástroj na učenie tým, že im navrhne osvedčené postupy a ponúkne úryvky kódu, ktoré možno nepoznajú.
  • Copilot podporuje širokú škálu programovacích jazykov, vďaka čomu je univerzálny pre rôzne projekty.
  • Na rozdiel od tradičných doplňovačiek kódu Copilot chápe kontext kódu a ponúka relevantné návrhy.
  • Vďaka návrhom riadeným umelou inteligenciou je možné znížiť počet syntaktických a logických chýb.
  • Vďaka tomu, že je integrovaný s Visual Studio Code, jedným z najobľúbenejších editorov kódu, je ľahko dostupný pre mnohých vývojárov.

Nevýhody GitHub Copilot

  • Existuje riziko, že vývojári sa stanú na Copilotovi príliš závislí, čo môže viesť k obmedzeniu ich organických kódovacích zručností.
  • Aj keď je Copilot pôsobivý, nie je neomylný. Niekedy môže navrhnúť nesprávny alebo neefektívny kód.
  • Objavili sa obavy, že Copilot navrhuje kód, ktorý môže byť chránený autorskými právami alebo nie je riadne licencovaný.
  • S automatickými návrhmi po ruke sa vývojári môžu rozhodnúť pre prvý návrh bez toho, aby zvážili, či je to najlepšie riešenie.
  • Niektorí vývojári sa obávajú zdieľať svoj kód s umelou inteligenciou, aj keď GitHub ubezpečuje, že údaje sa používajú zodpovedne.

Ako získať prístup ku GitHub Copilot

IDE alebo editory, ktoré Copilot v súčasnosti podporuje sú Visual Studio Code, Visual Studio, Vim, Neovim, JetBrains (PyCharm), Azure Data Studio.

Nastavenie programu GitHub Copilot s VS Code

Ak chceš využiť silu nástroja Copilot na testovanie softvéru, môžeš ho jednoducho nastaviť ako rozšírenie Visual Studio Code. Po nainštalovaní sa Copilot stane neoceniteľným prínosom v tvojom vývojovom prostredí a bude ponúkať návrhy na dokončenie kódu v reálnom čase prispôsobené tvojmu aktuálnemu kontextu.

VS Code ako jedno z najpopulárnejších IDE v komunite vývojárov poskytuje vynikajúcu podporu pre rozšírenia, takže je ideálnou voľbou na integráciu Copilota.

  1. Nainštaluj si VS Code: Ak si tak ešte neurobil, stiahni a nainštaluj si Visual Studio Code z oficiálnej webovej stránky.
  2. Otvor zobrazenie rozšírení: Spusti VS Code a prejdi do zobrazenia rozšírení (Extensions) kliknutím na ikonu Rozšírenia v paneli aktivít na boku okna.
  3. Vyhľadaj položku Copilot: V zobrazení Rozšírenia vyhľadaj „Copilot“ pomocou vyhľadávacieho panela v hornej časti. Po nájdení klikni na tlačidlo „Inštalovať“, čím pridáš rozšírenie Copilot do svojho IDE.
  4. Prihlás sa do služby GitHub: Po nainštalovaní rozšírenia Copilot budeš vyzvaný, aby si sa prihlásil pomocou svojho účtu GitHub. Tento krok je nevyhnutný, pretože Copilot vyžaduje prístup k tvojim GitHub repozitárom pre návrhy kódu.
  5. Prístup k API: Počas procesu nastavenia môže byť potrebné získať prístup k rozhraniu API služby Copilot. Na dokončenie prístupu k API postupuj podľa pokynov uvedených počas procesu nastavenia.
  6. Po úspešnom dokončení týchto krokov bude Copilot integrovaný do tvojho VS Code IDE a môžeš ho začať používať na generovanie návrhov kódu počas písania.

GitHub Copilot na testovanie (GitHub Copilot for testing)

Poďme sa pozrieť na praktický prístup k pochopeniu vplyvu systému Copilot na testovanie softvéru. Predstavme si scenár, v ktorom potrebujeme napísať testovacie prípady pre registračný formulár webovej aplikácie. Začneme vytvorením nového testovacieho súboru v projekte a definovaním počiatočnej štruktúry testovacieho scenára vrátane testovacích krokov a očakávaných výsledkov.

// Testovací scenár: Registračný formulár používateľa
describe('User Registration', () => {
it('should allow users to register with valid credentials', () => {
// Testovacie kroky, ktoré sa majú dokončiť pomocou návrhov systému Copilot
});
it('should display an error message for invalid email addresses', () => {
// Testovacie kroky, ktoré sa majú dokončiť pomocou návrhov systému Copilot
});
it('should require a password with a minimum length of 8 characters', () => {
// Testovacie kroky, ktoré sa majú dokončiť pomocou návrhov systému Copilot
});
});

Keď začneme písať testovacie scenáre pre náš registračný formulár používateľa, Copilot sa ukáže ako nenahraditeľný pomocník. Keď zadávame testovacie kroky, Copilot okamžite začne navrhovať úryvky kódu, ktoré zodpovedajú kontextu. Pozrime sa, ako nám Copilot pomáha pri vykonávaní niektorých testovacích krokov.

it('should allow users to register with valid credentials', () => {
// Návrh Copilota pre zadanie a odoslanie formulára
cy.visit('/register');
cy.get('#username').type('testuser');
cy.get('#email').type('testuser@example.com');
cy.get('#password').type('secretpassword');
cy.get('#submit').click();
cy.url().should('include', '/dashboard');
});

Copilot poskytol účinný úryvok kódu na interakciu s prvkami registračného formulára a simuláciu registrácie používateľa s platnými prihlasovacími údajmi. Tým sa výrazne znížil čas a úsilie potrebné na napísanie testovacích krokov.

it('should display an error message for invalid email addresses', () => {
// Návrh Copilot pre zadanie neplatnej e-mailovej adresy
cy.visit('/register');
cy.get('#email').type('invalidemail');
cy.get('#submit').click();
cy.get('.error-message').should('be.visible').and('have.text', 'Invalid email address');
});

V tomto príklade Copilot efektívne navrhol testovací prípad na overenie zobrazenia chybovej správy pri zadaní neplatnej e-mailovej adresy do registračného formulára.

V poskytnutom kontexte kódu .cy odkazuje na funkciu, ktorá sa zvyčajne používa pri testovaní end-to-end (E2E) pomocou Cypress, populárneho testovacieho frameworku JavaScript. Cypress je navrhnutý na uľahčenie testovania E2E pre webové aplikácie a poskytuje elegantné a ľahko použiteľné API na interakciu s prvkami na webovej stránke.

V Cypress je cy.get() príkaz, ktorý sa používa na vyhľadávanie a výber prvkov DOM na stránke. Umožňuje testerom interagovať s týmito prvkami vykonávaním akcií, ako je klikanie, písanie alebo overovanie ich vlastností a obsahu. Príkaz cy.get() používa selektor CSS alebo výraz podobný jQuery na identifikáciu prvku(-ov), ktoré sa majú vybrať.

Uvažujme napríklad o nasledujúcom úryvku kódu, ktorý používa cy.get() v teste Cypress:

cy.get(‚#username‘).type(‚testuser‘);

V tomto prípade cy.get(‚#username‘) vyberie vstupné pole s atribútom ID nastaveným na „username“ na webovej stránke. Metóda .type(‚testuser‘) potom simuluje zadanie textu „testuser“ do vybraného vstupného poľa.

Ďalšie príklady Copilot (Copilot examples)

1. Pomoc osobám, pre ktoré angličtina nie je rodným jazykom

GitHub Copilot rozumie aj iným jazykom ako angličtine! To je užitočné pre vývojárov všetkých národností,  pretože programovacie jazyky sú založené na americkej angličtine. Zabudnutie na správny pravopis a syntax môže často viesť k preklepom, neočakávaným chybám a strate času.

Napríklad keď napíšeš komentár v španielčine, ktorý znie „importar“, čo v preklade znamená „importovať“, GitHub Copilot rýchlo doplní komentár v španielčine a importuje potrebné knižnice podľa opisu v komentári. Okrem toho GitHub Copilot pomáha prekladať slová z angličtiny do iných jazykov.

Gif ukážky kódovania v inom jazyku ako je angličtina

2. Vytvorenie dictionaries (slovníkov) s vyhľadávacími údajmi

GitHub Copilot je skvelý na vytváranie slovníkov s vyhľadávacími údajmi. Vyskúšaj to tak, že napíš komentár, v ktorom dáš programu GitHub Copilot pokyn, aby vytvoril slovník dvojpísmenových kódov krajín ISO a ich názvov krajín. Napísanie komentára a prvých niekoľkých riadkov kódu by malo pomôcť programu GitHub Copilot vygenerovať požadované výsledky. Vizuálne znázornenie nájdeš na obrázku nižšie.

Gif vzoru vytvárania slovníkov

3. Testovanie tvojho kódu

Písanie testov je dôležitým, ale niekedy zdĺhavým krokom v životnom cykle vývoja softvéru. Keďže GitHub Copilot vyniká v rozpoznávaní a dopĺňaní vzorov, môže urýchliť proces písania unit testov, vizuálnych regresných testov a ďalších.

4. Porovnávanie vzorov pomocou regulárnych výrazov

Vďaka GitHub Copilot môžeš stráviť menej času hraním sa s Regex playgroundom alebo prechádzaním StackOverflow, aby si našiel kombinácie znakov v reťazcoch. Namiesto toho môžeš napísať komentár alebo názov funkcie a spustiť návrhy GitHub Copilota.

Použitie Copilota, aby pomohol overiť telefónne číslo:

Gif Použitia Copilota, aby pomohol overiť telefónne číslo

GitHub Copilot ti taktiež pomôže odstrániť white spaces z reťazca:

Gif ukážky odstranenia white spaces z reťazca

5. Príprava na technické pohovory

Hoci to môže znieť netradične, vývojári používajú GitHub Copilot na štúdium na pohovory.

Tu je stratégia:

Najprv sa pokús vyriešiť problém bez aplikácie GitHub Copilot. Ak sa pri riešení problému cítiš extrémne zaseknutý a znechutený, aktivuj GitHub Copilot a použi ho na generovanie nápadov, ako problém vyriešiť lepšie.

Následne vymaž kód vygenerovaný programom GitHub Copilot, deaktivuj program GitHub Copilot a skús znovunájsť riešenia s novými informáciami v hlave. Osvojením si tejto metódy si udržíš dynamiku, keď si v pokušení skončiť. Namiesto toho, aby si sa vzdal, získaš novú perspektívu, aj keď nemáš mentora alebo kolegu, ktorý by ťa viedol.

6. Ukončenie programu Vim

Vývojári, ktorí sú nováčikmi vo Vime, sa často pýtajú, ako ukončiť editor. Ťažkosti s ukončením editora Vim sú také časté, že sa z nich na internete stalo meme. Keďže GitHub Copilot je k dispozícii vo Visual Studio Code, JetBrains a Neovim, forknutej verzii Vimu s ďalšími funkciami, môžeš NeoVim ukončiť pomocou GitHub Copilot. V nasledujúcom videu Brian Douglas používa GitHub Copilot na ukončenie NeoVimu tak, že napíše komentár, ktorý znie: „Ako ukončím vim?“

7. Navigácia v novom kóde pomocou aplikácie Copilot Labs

GitHub Copilot Labs je doplnkové rozšírenie, ktoré sa dodáva s prístupom do služby GitHub Copilot. Tím GitHub Next vyvinul GitHub Copilot Labs, experimentálny bočný panel, ktorý pomáha vývojárom prekladať kód z jedného programovacieho jazyka do druhého a získať postupné vysvetlenie úryvkov kódu.

Záver

Hoci má Github Copilot svoje obmedzenia, predstavuje významný krok vpred vo využívaní sily umelej inteligencie pri testovaní softvéru. Keďže sa táto technológia naďalej vyvíja, Copilot a podobné nástroje AI sú pripravené stať sa neoceniteľnými prostriedkami v arzenáli testovania softvéru.

Dosiahnutím správnej rovnováhy medzi automatizáciou a ľudskou vynaliezavosťou môžu testeri naplno využiť potenciál Copilota na optimalizáciu svojho testovacieho úsilia. Ak si chceš rovno Copilot vyskúšať, tu je odkaz na copilot extension.

Ak vieš po nemecky a hľadáš si prácu ako IT tester alebo automatizovaný tester, prezri si naše benefity pre zamestnancov a reaguj na najnovšie ponuky práce.

O autorovi

Michaela Kojnoková

Agile Test Engineer

Po štúdiu informatiky na ŽU a TUKE som sa najviac ponorila do oblasti automatizácie testovania. Okrem toho sa venujem tvorbe webov, databázam, dátovej analytike, umelej inteligencii a strojovému učeniu. Mám rada cestovanie, šport a najviac si užívam čas strávený v prírode s mojimi blízkymi. LinkedIn

Daj nám o sebe vedieť