fbpx

“To je najbolj osupljiva uporaba strojnega učenja, kar sem jih kdaj videl.”

Mike Krieger, soustanovitelj Instagrama.

 

Besede Mika Kriegerja niso pretirane. Čeprav je ML sposoben nekaterih izjemnih stvari v smislu analize podatkov in vpogledov, je GitHub Copilot popolnoma spremenil pravila igre zaradi potencialne uporabnosti, ki jo lahko zagotovi razvijalcem izdelkov po vsem svetu.

Kopiloti za kodiranje in generativna umetna inteligenca pomagajo ekipam izkoristiti velike prednosti, kot je pospešitev življenjskega cikla razvoja programske opreme na doslej nepredstavljive hitrosti. Vpliv tehnologije na RPA in testiranje programske opreme pa sta dve izmed najbolj vznemirljivih področij te neverjetne tehnologije.

V tem članku si bomo ogledali, kako sta kodirni kopiloti in generativna umetna inteligenca spremenili svet testiranja programske opreme in RPA v sedanjosti, preden bomo raziskali njun prihodnji vpliv na tehnologijo.

 

Kopiloti in generativna umetna inteligenca v

razvoj programske opreme: Osnove

Kopiloti in generativna umetna inteligenca pri razvoju programske opreme - uvodnik

Generativna umetna inteligenca in kopiloti za kodiranje so relativni novinci na področju razvoja programske opreme. Preden se posvetimo njihovemu vplivu na prostor, si velja ogledati njihovo ozadje in način dela.

 

1. Avtokoderji z umetno inteligenco

 

Veliki jezikovni modeli (LLM) so se v zadnjih nekaj letih zelo izboljšali. Z eksponentnim povečevanjem velikosti zbirk podatkov in računske moči se je povečala tudi kakovost rezultatov.

Od LLM lahko imajo koristi številni vertikalni sektorji. Med najpogosteje opisanimi je ustvarjanje besedila, slik, videoposnetkov in drugih oblik medijev. Čeprav so ti primeri uporabe impresivni, pa so posledice za razvijalce morda veliko bolj zanimive.

Na trgu je na voljo več samodejnih kodirnikov LLM. Vendar je GitHubov CoPilot morda najbolj znan in dodelan. Velik del razloga za to je, da se usposablja v repozitoriju GitHub. Ima dostop do milijonov primerov odprtokodne kode, najboljših praks, arhitekture aplikacij in drugih virov, iz katerih se lahko uči, kar mu omogoča zagotavljanje visokokakovostnih in vsestranskih rezultatov.

 

2. Kako deluje kodiranje kopilotov?

 

O delovanju kodirnih kopilotov lahko najlažje govorimo, če si ogledamo vodilni izdelek na tem področju, GitHub CoPilot. Aplikacija temelji na modelu ChatGPT-3 podjetja OpenAi.

Tako kot ChatGPT in podobni programi LLM tudi CoPilot temelji na milijardah parametrov. Med razvojem programa ChatGPT-3 je OpenAI začel graditi poseben program za kodiranje, imenovan OpenAI Codex. Microsoft je kupil ekskluzivni dostop do izdelka.

Ključno pri tem je, da je Microsoft že imel v lasti GitHub. Če programirate, veste vse o storitvi GitHub. V osnovi je to spletna platforma, ki se uporablja za nadzor različic in sodelovanje pri projektih razvoja programske opreme. Kodo OpenAI so usposobili na knjižnici GitHub, ki je vsebovala na milijone vrstic odprtokodne javne kode.

Program CoPilot uporablja strojno učenje za iskanje vzorcev in povezav med vrsticami kode. Tako kot ChatGPT si ogleda besedo ali vrstico in na podlagi obsežne zbirke zgodovinskih podatkov izračuna verjetnost, kaj bo sledilo.

Moč kopilotov z umetno inteligenco je v tem, da lahko predlagajo delčke kode, ko jih razvijalci urejajo. Predstavljajte si ga kot izboljšano samodejno dokončanje za kodiranje. Ko programerji vnesejo vrstico kode, program LLM primerja začetek te kode s svojo obsežno knjižnico prejšnjih projektov. Nato predlaga verjetnostne vrstice in nove vrstice kode.

Očitne prednosti so, da lahko razvijalci s samodejnim dopolnjevanjem prihranijo ogromno časa. Poveča produktivnost in v mnogih primerih tudi natančnost kode.

 

3. Kaj pa generativna umetna inteligenca za kodiranje in razvoj?

 

Kot je razvidno iz zgodovine programa CoPilot, imata generativna umetna inteligenca in kopiloti podobne korenine. Obe tehnologiji uporabljata statistično verjetnost za napovedovanje potreb uporabnikov na podlagi pripisanih informacij.

Vendar je velika razlika med programsko opremo za kopilotiranje in generativno umetno inteligenco v tem, da slednja temelji na pozivih. Na kratko to pomeni, da uporabniki v stroj vnesejo niz pisnih navodil, ta pa izpiše vsebino. Vsi, ki ste uporabljali ChatGPT ali podobne aplikacije, veste, da je ta izpis lahko v obliki besedila, slik, videoposnetkov ali kode.

Čeprav so metode, ki jih koderji uporabljajo za avtomatizirano kodiranje, različne, jih lahko uvrstimo pod podobno okrilje avtomatiziranega ali generativnega kodiranja s pomočjo umetne inteligence.

 

Razvoj testiranja programske opreme

razvoj testiranja programske opreme

Testiranje programske opreme je odzivno in se nenehno razvija. V nekaj desetletjih se je spremenil in preoblikoval, da bi izpolnil nove zahteve in uporabil tehnološki napredek.

 

1. Ročno testiranje:

Na začetku testiranja programske opreme je bilo potrebno ročno testiranje. Takšno testiranje je bilo drago in zamudno, saj so morali strokovnjaki za zagotavljanje kakovosti natančno pregledati programsko opremo, tako da so razvili vrsto testnih primerov, izvedli in zabeležili rezultate, načrtovali popravke in ponovili postopek.

Zagotavljanje, da so bili v teh testih zajeti vsi možni scenariji in situacije, je bil velik izziv, poleg tega pa je bilo ročno testiranje časovno in stroškovno potratno. Poleg tega je bil zelo dovzeten za človeške napake, kar je bilo še večje zaradi omejenih možnosti distribucije, kar je pomenilo, da je bilo vse neodkrite napake težko hitro odpraviti.

 

2. Scenarično testiranje:

 

Skriptno testiranje je predstavljalo velik korak naprej za skupnost QA. Razvijalci so lahko namesto ročnega pregledovanja kode in testnih scenarijev napisali programe, ki so samodejno testirali programsko opremo. Veliki pozitivni učinki so bili, da je testiranje postalo učinkovitejše in manj nagnjeno k človeškim napakam. Vendar je bilo za dosego tega cilja potrebno strokovno, natančno in dolgotrajno načrtovanje in kodiranje, da bi zagotovili celovito pokritost.

 

3. Avtomatizacija testiranja:

 

Avtomatizacija testiranja je bila naslednja evolucija testiranja. Orodja, kot je ZAPTEST, so programerjem ponudila vse prednosti skriptnega testiranja, vendar brez kodnega vmesnika. Tudi v tem primeru so pomembne prednosti prihranek časa, ponovno uporabni in prilagodljivi testi, testiranje uporabniškega vmesnika in API ter testiranje na različnih platformah in napravah.

 

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

4. Testiranje na podlagi podatkov:

 

Testiranje na podlagi podatkov je bila rešitev problema testiranja programske opreme, ki je obdelovala različne podatkovne nize. Tudi to je oblika avtomatizacije testiranja, vendar ta metoda vključuje ustvarjanje testnih skript in njihovo izvajanje na podlagi dodeljenih podatkovnih nizov. Ta vrsta testiranja je razvijalcem omogočila hitrejše delo, izolacijo testov in skrajšanje časa ponavljanja testnih primerov.

 

5. Generativno testiranje umetne inteligence:

 

Generativno testiranje z umetno inteligenco je najnovejša inovacija na področju testiranja programske opreme. Z uporabo LLM lahko ekipe za zagotavljanje kakovosti ustvarijo testne primere in testne podatke, ki pomagajo pospešiti postopek testiranja. Ti testni primeri so zelo prilagodljivi in jih je mogoče urejati, kar razvijalcem pomaga pri ponovni uporabi in uporabi testov ter znatno poveča obseg testiranja.

 

Današnja uporaba kopilotov in

Generativna umetna inteligenca pri testiranju programske opreme in RPA

Današnja uporaba kopilotov in generativne umetne inteligence pri testiranju programske opreme in RPA

Generativna umetna inteligenca in kopiloti imajo velik vpliv na testiranje programske opreme. Vendar ta orodja niso povsem nadomestila programerjev, temveč so pomagala povečati število testerjev. Skratka, razvijalcem pomagajo postati hitrejši in učinkovitejši, v številnih primerih pa izboljšajo kakovost testiranja.

Spletna stran
Raziskava razvijalcev Stack Overflow iz leta 2023
ponuja nekaj informacij o trenutni uporabi orodij umetne inteligence v skupnosti razvijalcev programske opreme. Eden od najbolj zanimivih delov raziskave je pokazal, da se sicer nekaj več kot polovica razvijalcev zanima za orodja umetne inteligence za testiranje programske opreme, vendar jih manj kot 3 % meni, da tem orodjem zaupajo. Poleg tega je le eden od štirih navedel, da trenutno uporablja orodja umetne inteligence za testiranje programske opreme.

Zanimivo je, da ti statistični podatki kažejo, da uporaba orodij umetne inteligence še ni splošno razširjena in da imajo lahko zgodnji uporabniki še vedno prednost.

 

1. Primeri uporabe kopilota in generativne umetne inteligence pri testiranju programske opreme in RPA

 

Kopiloti in generativna umetna inteligenca vplivajo na vsa področja razvoja programske opreme. Tukaj je nekaj načinov, kako lahko tehnologija pomaga pri testiranju programske opreme in RPA.

 

Analiza zahtev

Analiza zahtev je ključni del življenjskega cikla razvoja programske opreme. Postopek vključuje razumevanje zahtev zainteresiranih strani in različnih funkcij, potrebnih za izdelavo programske opreme. Generativna umetna inteligenca lahko ekipam pomaga pri oblikovanju idej, saj ponuja nove ideje in poglede.

 

Načrtovanje testiranja

Ko so zahteve za testiranje dobro razumljene, morajo ekipe za zagotavljanje kakovosti stvari razdeliti na časovni načrt, da zagotovijo ustrezno pokritost s testi. Za tovrstno delo sta potrebna strokovno znanje in izkušnje, vendar lahko Generative AI ekipe podpre s primeri in vodniki ter jim priporoči določena orodja in najboljše prakse za njihove edinstvene zahteve.

 

Ustvarjanje testnih primerov

Ekipe za zagotavljanje kakovosti lahko z metodami LLM analizirajo kodo, uporabniške zahteve in specifikacije programske opreme ter tako razumejo osnovne povezave v ozadju sistema. Ko umetna inteligenca razume vhode in izhode ter pričakovano vedenje programske opreme, lahko začne sestavljati testne primere, s katerimi bo testirala programsko opremo.

Prednosti so večje od prihranka časa in ročnega kodiranja. Ustvarjanje testnih primerov z umetno inteligenco lahko privede tudi do celovitejšega pokrivanja, saj lahko raziskuje področja, ki jih inženirji za zagotavljanje kakovosti morda ne bi upoštevali, kar vodi do zanesljivejših gradenj.

 

Iskanje in odpravljanje napak

Strojno učenje omogoča strokovnjakom za zagotavljanje kakovosti, da bistveno skrajšajo čas, potreben za iskanje in odpravljanje napak. Pri testiranju programske opreme je veliko napak enostavno odkriti. Vendar je v številnih primerih to naporen in dolgotrajen postopek. Generativna umetna inteligenca lahko preglede opravi v delčku časa, ki ga porabijo ročni delavci, in pomaga izpostaviti tudi najbolj trdovratne napake. Poleg tega lahko ta orodja z umetno inteligenco tudi odpravijo napake, ki jih odkrijejo, kar ekipam za zagotavljanje kakovosti prihrani neskončno časa.

 

Testiranje uporabniškega vmesnika

Generativna orodja umetne inteligence lahko simulirajo različna vedenja uporabnikov in interakcije s sistemi programske opreme. Metode lahko razvojnim skupinam dajo zaupanje, da lahko njihov vmesnik omogoča širok razpon uporabe med človekom in računalnikom. Generativna umetna inteligenca lahko analizira tudi podatke o uporabniškem vmesniku in toplotne zemljevide ter predlaga, kako izboljšati uporabniški vmesnik in ga narediti uporabniku prijaznejšega.

 

Prihodnost kopilotov in generativne umetne inteligence

v testiranju programske opreme in RPA

Prihodnost kopilotov in generativne umetne inteligence pri testiranju programske opreme in RPA

Čeprav je sedanja uporaba kopilotov in generativne umetne inteligence pri avtomatizaciji programske opreme že zdaj vznemirljiva, prihodnost obeta še več.

Prihodnost kopilota in generativne umetne inteligence je odvisna od izboljšav, ki jih je mogoče vnesti v izdelke. Nedavna študija univerze Purdue z naslovom Kdo bolje odgovarja? Poglobljena analiza odgovorov ChatGPT in Stack Overflow na vprašanja s področja inženirstva programske opreme poudarja nekatere omejitve modelov generativne umetne inteligence.

Raziskovalci so ChatGPT dali več kot 500 vprašanj iz Stack Overflow. Orodje umetne inteligence je na več kot polovico vprašanj odgovorilo napačno. Pomembno je poudariti, da je bila ena od najpomembnejših težav, ki so jo opazili raziskovalci, ta, da umetna inteligenca najpogosteje ni bila uspešna, ker ni pravilno razumela vprašanj. Ta podrobnost poudarja pomen hitrega inženiringa v okviru generativne umetne inteligence.

Poleg tega sta Google in Amazon letos izvedla neodvisne teste, da bi preverila kakovost orodij generativne umetne inteligence v okviru vprašanj na razgovoru. V obeh primerih je orodje dovolj dobro odgovorilo na testna vprašanja, da je dobilo položaj, kot poroča
CNBC
in
Business Inside
, oziroma.

Jasno je torej, da je ta tehnologija na točki, ko je potencial že na voljo, vendar je treba odpraviti nekatere manjše pomanjkljivosti. Obseg, v katerem so se ta orodja v zadnjih letih izboljšala, nam daje prepričanje, da bo dosegel zahtevano raven, in to verjetno pred rokom.

Zdaj si lahko ogledamo nekatera področja, na katerih bodo te tehnologije vplivale na prihodnost testiranja razvoja programske opreme.

 

1. Hiperavtomatizacija

 

Hiperavtomatizacija opisuje ciljno točko v razvoju podjetja, kjer bo vsak proces, ki ga je mogoče avtomatizirati, avtomatiziran. Gre za celosten pristop k produktivnosti, ki je med seboj zelo povezan.

Pri razvoju programske opreme si ni težko predstavljati centraliziranega sistema z nadzorom nad zahtevami poslovnih procesov. Sistem bo razumel in ugotavljal potrebe in učinkovitost ter nenehno ugotavljal področja, ki jih je treba izboljšati s pomočjo tehnologije.

Z razvojem podjetij bodo ti centralizirani sistemi uporabljali generativno umetno inteligenco za izdelavo aplikacij, ki bodo samodejno odpravljale ozka grla in neučinkovitosti ali pa določena opravila posredovale inženirjem.

 

2. Oblikovanje arhitektur programske opreme

 

Orodja umetne inteligence bi z zadostno količino podatkov lahko razumela najboljše prakse arhitekture programske opreme in našla načine za izboljšanje teh zasnov za največjo učinkovitost. Pri strojnem učenju gre za iskanje vzorcev in povezav, ki so zunaj dometa človeškega uma.

Če imajo orodja umetne inteligence dovolj znanja o različnih aplikacijah, jim lahko naročimo, naj prejšnje arhitekture prilagodijo novim zahtevam, kar vodi k učinkovitejšim gradnjam ali celo idejam, ki jih sicer ne bi upoštevali.

 

3. Posodobitev starejših sistemov

 

Čeprav nobena programska oprema ni nikoli popolna, obstaja veliko orodij, ki še vedno odlično opravljajo svoje delo in so tako globoko vgrajena v infrastrukturo podjetja, da jih je težko zamenjati. Prilagajanje teh sistemov je lahko težavno, zlasti če so bili napisani s programsko kodo, ki je izšla iz mode.

V prihodnosti bodo orodja generativne umetne inteligence lahko to kodo pretvorila v jezik du jour, kar bo ekipam omogočilo, da ohranijo svoje stare sisteme in jih v številnih primerih še izboljšajo.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

 

4. Krepitev razvoja z nizko kodo in brez nje

 

Eden od izzivov pri avtomatizaciji testiranja programske opreme z orodji generativne umetne inteligence, ki smo jih opredelili zgoraj, je bil položaj, v katerem koder ni imel znanja in izkušenj za preverjanje rezultatov.

Kopiloti z umetno inteligenco bodo pomagali dopolniti orodja z nizko kodo z boljšimi predlogi, ki bodo vodili k zanesljivim aplikacijam. Prefinjena orodja za preizkušanje bodo človeškim izvajalcem omogočila svobodno ustvarjalno delovanje, hkrati pa bodo nenehno preverjala njihovo delo in odprla vrata netehničnim strokovnjakom za izdelavo aplikacij, ki jih potrebujejo.

 

Prednosti generativne umetne inteligence pri testiranju programske opreme

hitri inženiring pri avtomatizaciji testiranja programske opreme in rpa (robotska avtomatizacija procesov).

Uporaba generativne umetne inteligence za testiranje programske opreme ima številne prednosti, zaradi katerih je privlačna za razvojne ekipe, ki želijo delati hitreje, vendar brez ogrožanja kakovosti.

 

1. Pospešitev življenjskega cikla razvoja programske opreme

 

Razvijalci so pod stalnim pritiskom, saj morajo delati dolge ure, da bi zagotovili pravočasen prenos programske opreme in novih funkcij na trg. Čeprav so metodologije Agile/DevOps zagotovile večjo učinkovitost razvoja, še vedno obstajajo posamezne faze razvoja, ki bi jih bilo treba še bolj racionalizirati.

Generativna orodja umetne inteligence omogočajo testnim ekipam, da se lotijo različnih faz SDLC, od ustvarjanja prototipov do testiranja uporabniškega vmesnika.

 

2. Celovito odkrivanje napak

 

Ena od najmočnejših aplikacij umetne inteligence pri testiranju programske opreme je sposobnost tehnologije za primerjavo velikih zbirk podatkov. Orodja ML lahko analizirajo obsežne podatkovne nize (vključno s kodo) in tako ustvarijo zbirko informacij in pričakovanih modelov.

Ko razvijalci oddajo kodo, jo lahko primerjajo s temi modeli, ki lahko izpostavijo nepričakovane scenarije, odvisnosti in ranljivosti, kar omogoča boljšo kodo v celotnem procesu razvoja.

 

3. Izboljšana pokritost testov

 

Orodja za strojno učenje so zasnovana za analizo in razumevanje obsežnih nizov podatkov. Pri testiranju programske opreme omogoča skupinam, da povečajo obseg testiranja programske opreme. Prednosti niso le odstranitev človeškega dela iz enačbe za varčevanje z denarjem; umetna inteligenca omogoča tudi veliko bolj celovito vrsto testiranja, ki omogoča boljše odkrivanje napak v zapletenih scenarijih.

 

4. Zmanjšani stroški

 

Generativna umetna inteligenca in RPA sta v primerjavi z zaposlitvijo ekipe inženirjev za zagotavljanje kakovosti in njihovo uporabo za ponavljajoče se in dolgotrajne naloge testiranja programske opreme hitrejša in stroškovno učinkovitejša.

Ker svet razvoja programske opreme postaja vse bolj konkurenčen, je iskanje načinov za zagotavljanje kakovostnih in trajnih izdelkov v skladu s proračunom vse pomembnejše. Generativna orodja umetne inteligence in kopiloti lahko zmanjšajo odvisnost od inženirjev in jim omogočijo, da opravljajo delo, ki temelji na vrednosti, kar vodi do manj obsežnih gradenj.

 

Ali orodja generativne umetne inteligence pomenijo konec

človeških inženirjev programske opreme?

Ali orodja generativne umetne inteligence pomenijo konec človeških inženirjev programske opreme?

Kljub očitnim prednostim lahko vsako orodje za avtomatizacijo povzroči pri delavcih zaskrbljenost glede njihove prihodnosti. To je sicer običajen odziv, vendar sta hitrost in obseg generativne umetne inteligence večja kot običajno. Ta orodja lahko avtomatizirajo številna opravila, vendar ne morejo opravljati vseh nalog, ki jih opravljajo inženirji programske opreme. Inženirji in vodje morajo razumeti zmogljivosti tehnologije in njene omejitve.

Najprej si je treba zapomniti, da orodja za avtomatizacijo testiranja, ki jih poganja umetna inteligenca, na trgu obstajajo že dlje časa. Vendar je zaradi uporabniku prijazne narave generativne umetne inteligence možna dodatna prilagodljivost.

Najprej je treba upoštevati, da generativna umetna inteligenca najbolje deluje pri rezultatih, ki jih je mogoče preveriti. To je ključna točka. Zaradi načina usposabljanja magistrov prava se bodo potrudili, da vam odgovorijo, tudi če bo to včasih pomenilo, da bodo “halucinirali” dejstva, sklicevanja in argumente.

Če imate dovolj znanja o kodiranju, boste lahko prebrali in preverili vsako besedilo, ki ga generativna umetna inteligenca izpiše, ter odkrili morebitne napake. Če ste programer, ki namesto znanja programiranja uporablja generativno umetno inteligenco, teh napak ne boste mogli tako dobro ujeti.

S tega vidika bodo usposobljeni inženirji še vedno pomemben del ekosistema za razvoj programske opreme. Še vedno bodo morali opravljati nadzorne in praktične preizkuse.

Druga omejitev generativne umetne inteligence za testiranje programske opreme vključuje mobilno testiranje. ChatGPT je na primer dobra možnost za testiranje uporabniških vmesnikov spletnih strani. Vendar nima dostopa do različnih mobilnih naprav. Zaradi številnih različnih telefonov in modelov na trgu zaostaja za sedanjo programsko opremo za avtomatizacijo testiranja, kot je ZAPTEST. Tudi ta težava ni majhna ovira. Več kot
polovica vseh uporabnikov interneta uporablja mobilne naprave.
in to število se vsako leto povečuje.

Čeprav bo generativna umetna inteligenca razvijalcem odvzela veliko nalog, pa teh strokovnjakov ne bo naredila zastarelih, če ne bo prišlo do velikih sprememb v infrastrukturi za testiranje in možnosti preverjanja rezultatov.

 

Zaključne misli

 

Testiranje programske opreme in RPA se nenehno izboljšujeta. Z razvojem novih tehnologij in metod obe disciplini prevzemata najboljše prakse, da bi ekipam za zagotavljanje kakovosti pomagali zagotoviti hitrejše in celovitejše testiranje za delček cene ročnega testiranja.

Izboljšanje obsega testov ter zmanjšanje človeških napak in stroškov so nekatere od bolj očitnih prednosti testiranja z umetno inteligenco, hkrati pa pomaga ekipam sprejeti pristop neprekinjene integracije in uvajanja (CI/CD).

Ker so pričakovanja potrošnikov in konkurenca večja kot kdaj koli prej, generativna umetna inteligenca ekipam ponuja način za zagotavljanje hitrih in učinkovitih testov brez ogrožanja kakovosti.

Download post as PDF

Alex Zap Chernyak

Alex Zap Chernyak

Founder and CEO of ZAPTEST, with 20 years of experience in Software Automation for Testing + RPA processes, and application development. Read Alex Zap Chernyak's full executive profile on Forbes.

Get PDF-file of this post

Virtual Expert

ZAPTEST

ZAPTEST Logo