„Aceasta este cea mai uluitoare aplicație de învățare automată pe care am văzut-o vreodată.”
Mike Krieger, co-fondator al Instagram.
Cuvintele lui Mike Krieger nu sunt o hiperbolă. În timp ce ML este capabil de unele lucruri remarcabile în ceea ce privește analiza și înțelegerea datelor, GitHub Copilot este o schimbare totală a jocului datorită utilității potențiale pe care o poate oferi dezvoltatorilor de produse din întreaga lume.
Copiloții de codare și inteligența artificială generativă ajută echipele să deblocheze beneficii uriașe, cum ar fi accelerarea ciclului de viață al dezvoltării de software la viteze inimaginabile până acum. Cu toate acestea, impactul tehnologiei asupra RPA și a testării de software sunt două dintre cele mai interesante frontiere ale acestei tehnologii uimitoare.
În acest articol, vom analiza modul în care copiloții de codare și inteligența artificială generativă au modificat lumea testării software și RPA în prezent, înainte de a explora impactul lor viitor asupra tehnologiei.
Copiloți și AI generativă în
dezvoltarea de software: Un abecedar
Inteligența artificială generativă și copiloții de codare sunt relativ noi în peisajul dezvoltării de software. Înainte de a discuta despre impactul lor asupra spațiului, merită să ne uităm la trecutul lor și la modul în care lucrează.
1. Codificatori auto cu inteligență artificială
Modelele lingvistice mari (LLM) s-au îmbunătățit remarcabil în ultimii ani. Pe măsură ce dimensiunea seturilor de date și puterea de calcul au crescut exponențial, calitatea rezultatelor a crescut.
Există multe verticale care pot beneficia de LLM-uri. Unele dintre cele mai multe informații despre care s-a scris includ generarea de text, imagini, videoclipuri și alte forme de media. Cu toate acestea, deși aceste cazuri de utilizare sunt impresionante, există implicații pentru dezvoltatori care sunt poate mult mai interesante.
Există o serie de autocodificatoare LLM pe piață. Cu toate acestea, GitHub CoPilot este probabil cel mai cunoscut și cel mai performant. O mare parte a motivului este faptul că este instruit pe depozitul GitHub. Are acces la milioane de exemple de coduri open-source, bune practici, arhitectură de aplicații și multe altele din care să învețe, ceea ce îi permite să ofere rezultate de înaltă calitate și versatile.
2. Cum funcționează copiloții de codificare?
Una dintre cele mai simple modalități de a vorbi despre modul în care funcționează copilotul de codare este să ne uităm la produsul principal din acest domeniu, GitHub CoPilot. Aplicația se bazează pe modelul ChatGPT-3 de la OpenAi.
La fel ca ChatGPT și alte LLM-uri similare, CoPilot se bazează pe miliarde de parametri. În timpul dezvoltării ChatGPT-3, OpenAI a început să construiască un program de codare dedicat numit OpenAI Codex. Microsoft a cumpărat acces exclusiv la acest produs.
Cu toate acestea, elementul cheie aici este că Microsoft deținea deja GitHub. Dacă sunteți programator, știți totul despre GitHub. Practic, este o platformă bazată pe web utilizată pentru controlul versiunilor și colaborarea în cadrul proiectelor de dezvoltare de software. Aceștia au antrenat OpenAI Codex pe biblioteca GitHub, care conținea milioane de linii de cod public, cu sursă deschisă.
CoPilot utilizează învățarea automată pentru a găsi modele și relații între liniile de cod. La fel ca ChatGPT, se uită la un cuvânt sau la o linie și calculează probabilitatea a ceea ce ar trebui să urmeze pe baza unui vast depozit de date istorice.
Puterea copilotului AI constă în capacitatea acestuia de a sugera fragmente de cod pe măsură ce dezvoltatorii editează. Gândiți-vă la el ca la o completare automată supraîncărcată pentru codare. Pe măsură ce programatorii introduc o linie de cod, LLM compară începutul acelui cod cu imensa sa bibliotecă de proiecte anterioare. De aici, sugerează linii probabilistice și linii de cod noi.
Beneficiile evidente sunt că dezvoltatorii pot economisi o cantitate incredibilă de timp prin această autocompletare. Aceasta sporește productivitatea și, în multe cazuri, acuratețea codului.
3. Cum rămâne cu AI generativă pentru codare și dezvoltare?
După cum puteți vedea din istoria CoPilot, AI-ul generativ și copilotul au rădăcini similare. Ambele sunt tehnologii care utilizează probabilitatea statistică pentru a face predicții despre ceea ce au nevoie utilizatorii, pe baza informațiilor imputate.
Cu toate acestea, marea diferență dintre software-ul de copilotare și inteligența artificială generativă este că aceasta din urmă se bazează pe instrucțiuni. Pe scurt, acest lucru înseamnă că utilizatorii introduc un set de instrucțiuni scrise în mașină, iar aceasta produce conținut. După cum știe oricine a folosit ChatGPT sau aplicații similare, această ieșire poate fi sub formă de text, imagini, video sau cod.
Așadar, deși metodele pe care le folosesc codificatorii pentru a ajunge la codificarea automată sunt diferite, le putem plasa sub o umbrelă similară de codificare automată asistată de inteligență artificială sau de codificare generativă.
Evoluția testării software
Testarea software-ului este o activitate receptivă și în continuă evoluție. În decurs de câteva decenii, acesta s-a schimbat și s-a transformat pentru a răspunde noilor cerințe și pentru a utiliza progresele tehnologice.
1. Testarea manuală:
La începuturile testării software-ului, testarea se făcea manual. Acest tip de testare era costisitor și consumator de timp, deoarece necesita ca experții în asigurarea calității să analizeze software-ul cu un pieptene fin, dezvoltând o serie de cazuri de testare, rulând și înregistrând rezultatele, programând remedieri și repetând procesul.
Asigurarea faptului că toate scenariile și situațiile posibile au fost acoperite de aceste teste a reprezentat o provocare majoră, iar dacă se adaugă timpul și costurile implicate, testarea manuală a fost o activitate intensivă din punct de vedere al resurselor. De asemenea, era foarte sensibil la erori umane, amplificate de opțiunile de distribuție limitate, ceea ce însemna că orice eroare nedescoperită era dificil de corectat rapid.
2. Testarea cu scripturi:
Testarea cu scripturi a reprezentat un pas uriaș pentru comunitatea QA. În loc să parcurgă manual codul și scenariile de testare, dezvoltatorii au putut scrie programe care să testeze software-ul în mod automat. Principalele părți pozitive au fost că testarea a devenit mai eficientă și mai puțin predispusă la erori umane. Cu toate acestea, realizarea acestui obiectiv a necesitat o planificare și o codificare calificată, precisă și de durată pentru a asigura o acoperire completă.
3. Automatizarea testelor:
Automatizarea testelor a fost următoarea evoluție a testării. Instrumente precum ZAPTEST au reușit să ofere programatorilor toate avantajele testelor cu scripturi, dar cu o interfață fără cod. Din nou, beneficiile semnificative în acest caz au fost economisirea timpului, testele reutilizabile și adaptabile, testele UI și API, precum și testele între platforme și dispozitive.
4. Testarea bazată pe date:
Testarea bazată pe date a fost soluția la problema testării software-ului care procesa diferite seturi de date. Din nou, aceasta este o formă de automatizare a testelor, dar această metodă implică crearea de scripturi de testare și rularea acestora pe seturi de date alocate. Acest tip de testare a permis dezvoltatorilor să lucreze mai repede, să izoleze testele și să reducă timpul de repetare a cazurilor de testare.
5. Testarea generativă a IA:
Testarea AI generativă este cea mai nouă inovație în domeniul testării software. Prin utilizarea LLM-urilor, echipele de asigurare a calității pot crea cazuri de testare și date de testare care ajută la accelerarea procesului de testare. Aceste cazuri de testare sunt extrem de flexibile și editabile, ceea ce ajută dezvoltatorii să reutilizeze și să refolosească testele și să mărească considerabil domeniul de aplicare al testării.
Utilizarea în prezent a copilotului și
Inteligența artificială generativă în testarea software și RPA
Inteligența artificială generativă și copilotul au avut un impact important asupra testării software-ului. Cu toate acestea, mai degrabă decât să înlocuiască în mod direct programatorii, aceste instrumente au contribuit la creșterea numărului de testeri. Pe scurt, acestea ajută dezvoltatorii să devină mai rapizi și mai eficienți și, în multe cazuri, îmbunătățesc calitatea testelor.
The
Sondaj Stack Overflow Developer Survey din 2023
oferă câteva informații despre utilizarea actuală a instrumentelor de inteligență artificială în cadrul comunității de dezvoltare de software. Una dintre cele mai interesante părți ale sondajului a sugerat că, în timp ce puțin peste jumătate din toți dezvoltatorii au sugerat că sunt interesați de instrumentele de inteligență artificială pentru testarea software-ului, mai puțin de 3% au declarat că au încredere în aceste instrumente. În plus, doar 1 din 4 a sugerat că utilizează în prezent instrumente de inteligență artificială pentru testarea software-ului.
Ceea ce este interesant în legătură cu aceste statistici este că ele arată că utilizarea instrumentelor de inteligență artificială nu este încă larg răspândită și că cei care le adoptă de timpuriu pot obține încă un avantaj.
1. Cazuri de utilizare a IA copilot și generativă în testarea software și RPA
Copiloții și inteligența artificială generativă au un impact asupra fiecărui domeniu de dezvoltare software. Iată câteva dintre modalitățile prin care tehnologia poate ajuta la testarea software și RPA.
Analiza cerințelor
Analiza cerințelor este o parte esențială a ciclului de viață al dezvoltării de software. Procesul implică înțelegerea cerințelor părților interesate și a diferitelor caracteristici necesare pentru a construi un software. Inteligența artificială generativă poate ajuta echipele în procesul de ideare, venind cu idei și perspective noi.
Planificarea testelor
Odată ce cerințele de testare sunt bine înțelese, echipele de asigurare a calității trebuie să le defalce într-un program pentru a asigura o acoperire adecvată a testelor. Acest tip de activitate necesită expertiză și experiență, dar Generative AI poate sprijini echipele prin exemple și ghiduri, precum și prin recomandări de instrumente specifice și de cele mai bune practici pentru cerințele lor unice.
Crearea cazurilor de testare
Echipele de asigurare a calității pot utiliza LLM pentru a analiza codul, cerințele utilizatorilor și specificațiile software pentru a înțelege relațiile care stau la baza sistemului. Odată ce IA a înțeles intrările și ieșirile și comportamentele așteptate ale software-ului, poate începe să construiască cazuri de testare care vor testa software-ul.
Beneficiile acestui lucru depășesc economia de timp și codarea manuală. Crearea de cazuri de testare inteligentă poate duce, de asemenea, la o acoperire mai cuprinzătoare, deoarece poate explora zone pe care inginerii de asigurare a calității nu le-ar putea lua în considerare, ceea ce duce la realizarea unor proiecte mai fiabile.
Găsirea și rezolvarea erorilor
Învățarea automată le permite profesioniștilor din domeniul QA să reducă semnificativ timpul necesar pentru a localiza și a rezolva erorile. În testarea software, multe erori sunt ușor de localizat. Cu toate acestea, în multe scenarii, este un proces laborios și consumator de timp. Inteligența artificială generativă poate efectua verificări într-o fracțiune de timp față de lucrătorii manuali și poate ajuta la evidențierea chiar și a celor mai încăpățânate erori. În plus, aceste instrumente de inteligență artificială pot rezolva și erorile pe care le identifică, economisind timp nesfârșit pentru echipele de control al calității.
Testarea UI
Instrumentele de inteligență artificială generativă pot simula o serie de comportamente ale utilizatorilor și interacțiuni cu sistemele software. Metodele pot oferi echipelor de dezvoltare încrederea că interfața lor poate gestiona o gamă largă de utilizări om-calculator. Mai mult, Inteligența Artificială Generativă poate, de asemenea, să analizeze datele privind interfața cu utilizatorul și hărțile termice și să facă sugestii despre cum să îmbunătățească interfața cu utilizatorul și să o facă mai ușor de utilizat.
Viitorul copilotului și inteligența artificială generativă
în Testare software și RPA
În timp ce utilizarea în prezent a copilotului și a inteligenței artificiale generative în automatizarea software-ului este deja interesantă, viitorul este și mai promițător.
Viitorul copilotului și al inteligenței artificiale generative depinde de îmbunătățirile care pot fi aduse produselor. Un studiu recent de la Universitatea Purdue, intitulat Cine răspunde mai bine? O analiză în profunzime a răspunsurilor ChatGPT și Stack Overflow la întrebările de inginerie software subliniază unele dintre limitările modelelor de inteligență artificială generativă.
Cercetătorii au dat ChatGPT peste 500 de întrebări din Stack Overflow. Instrumentul de inteligență artificială a răspuns inexact la mai mult de jumătate dintre ele. Este important de menționat că una dintre cele mai importante probleme observate de cercetători a fost că AI-ul a eșuat cel mai frecvent pentru că nu a înțeles corect întrebările. Acest detaliu subliniază importanța ingineriei prompte în cadrul inteligenței artificiale generative.
În plus, atât Google, cât și Amazon au efectuat anul acesta teste independente pentru a analiza calitatea instrumentelor de inteligență artificială generativă în cadrul unui interviu. În ambele cazuri, instrumentul a reușit să răspundă suficient de bine la întrebările din test pentru a obține postul, după cum relatează
CNBC
și
Business Inside
, respectiv.
Așadar, este clar că ne aflăm într-un punct al acestei tehnologii în care potențialul există, dar mai trebuie să se rezolve unele aspecte minore. Scara la care aceste instrumente s-au îmbunătățit în ultimii ani ne dă încredere că se va ajunge la nivelul necesar și, probabil, înainte de termen.
Acum, putem examina câteva dintre domeniile în care aceste tehnologii vor avea un impact asupra viitorului testării dezvoltării de software.
1. Hiperautomatizare
Hiperautomatizarea descrie o destinație în evoluția întreprinderii în care fiecare proces care poate fi automatizat va fi automatizat. Este o abordare holistică a productivității, care este puternic interconectată.
În ceea ce privește dezvoltarea de software, nu este greu de imaginat un sistem centralizat cu o supraveghere a cerințelor proceselor de afaceri. Sistemul va înțelege și va identifica nevoile și eficiențele și va identifica în mod constant domeniile care trebuie îmbunătățite prin intermediul tehnologiei.
Pe măsură ce afacerile evoluează, aceste sisteme centralizate vor folosi inteligența artificială generativă pentru a crea aplicații care vor rezolva automat blocajele și ineficiențele sau, poate, vor trimite anumite sarcini inginerilor pentru a le finaliza.
2. Proiectarea arhitecturilor software
Cu suficiente date, instrumentele de inteligență artificială ar putea înțelege cele mai bune practici de arhitectură software și ar putea găsi modalități de îmbunătățire a acestor proiecte pentru o eficiență maximă. Învățarea automată constă în găsirea de modele și relații care depășesc sfera de acțiune a minții umane.
Dacă instrumentele de inteligență artificială au suficiente cunoștințe despre o varietate de aplicații, le putem da instrucțiuni pentru a adapta arhitecturile anterioare la noile cerințe, ceea ce duce la construcții mai eficiente sau chiar la idei care altfel nu ar fi fost luate în considerare.
3. Modernizarea sistemelor existente
Deși niciun software nu este niciodată perfect, există multe instrumente care încă fac o treabă excelentă și care sunt atât de bine integrate în infrastructura unei companii încât sunt greu de înlocuit. Adaptarea acestor sisteme poate fi o corvoadă, mai ales dacă au fost scrise folosind coduri software care nu mai sunt la modă.
În viitor, instrumentele de inteligență artificială generativă vor fi capabile să convertească acest cod în limbajul zilei, permițând echipelor să își păstreze sistemele moștenite și, în multe cazuri, să le îmbunătățească.
4. Îmbunătățirea dezvoltării low-code și no-code
Una dintre provocările testării automate a software-ului prin intermediul instrumentelor de inteligență artificială generativă pe care le-am identificat mai sus a fost o situație în care programatorul nu avea cunoștințele și experiența necesare pentru a verifica rezultatul.
Copiloții de inteligență artificială vor contribui la creșterea instrumentelor low-code prin sugestii mai bune care să conducă la aplicații robuste. Instrumentele de testare sofisticate vor permite operatorilor umani să dea frâu liber creativității, validându-și în mod constant munca și deschizând ușa profesioniștilor non-tehnici pentru a construi aplicațiile de care au nevoie.
Beneficiile inteligenței artificiale generative în testarea software
Utilizarea inteligenței artificiale generative pentru testarea software are multe beneficii care o fac o opțiune atractivă pentru echipele de dezvoltare care doresc să lucreze mai repede, dar fără a face compromisuri în ceea ce privește calitatea.
1. Accelerarea ciclului de viață al dezvoltării de software
Dezvoltatorii sunt supuși unei presiuni constante de a lucra ore îndelungate pentru a se asigura că software-ul și noile caracteristici ajung pe piață în timp util. În timp ce metodologiile Agile/DevOps au asigurat o dezvoltare mai eficientă, există încă etape individuale de dezvoltare care pot beneficia de o mai mare eficientizare.
Instrumentele de inteligență artificială generativă permit echipelor de testare să abordeze diferite etape ale SDLC, de la generarea de prototipuri la testarea interfețelor.
2. Detectarea completă a erorilor
Una dintre cele mai puternice aplicații ale inteligenței artificiale în testarea de software este dată de capacitatea tehnologiei de a compara seturi mari de date. Instrumentele ML pot analiza seturi vaste de date (inclusiv coduri) pentru a construi un depozit de informații și modele așteptate.
Atunci când dezvoltatorii confirmă codul, îl pot compara cu aceste modele, ceea ce poate evidenția scenarii neașteptate, dependențe și vulnerabilități, permițând un cod mai bun pe parcursul întregului proces de dezvoltare.
3. Îmbunătățirea acoperirii testelor
Instrumentele de învățare automată sunt create pentru a analiza și înțelege seturi vaste de date. Atunci când este aplicat la testarea software, permite echipelor să mărească domeniul de aplicare al testării software. Beneficiile nu se rezumă doar la eliminarea forței de muncă umane din ecuație pentru a economisi bani; AI duce, de asemenea, la un tip de testare mult mai cuprinzător care permite o mai bună detectare a erorilor într-un set complex de scenarii.
4. Reducerea costurilor
În comparație cu angajarea unei echipe de ingineri de asigurare a calității și utilizarea acestora pentru sarcini repetitive și consumatoare de timp pentru testarea software, AI generativă și RPA sunt mai rapide și mai eficiente din punct de vedere al costurilor.
Pe măsură ce lumea dezvoltării de software devine din ce în ce mai competitivă, găsirea unor modalități de a livra produse de calitate, durabile și care să respecte bugetul crește în importanță. Instrumentele de inteligență artificială generativă și copiloții pot reduce dependența de ingineri, permițându-le acestora să desfășoare o activitate orientată spre valoare și să conducă la o mai puțină încărcare a clădirilor.
Instrumentele de inteligență artificială generativă înseamnă sfârșitul
de ingineri software umani?
În ciuda beneficiilor evidente, orice instrument de automatizare le poate provoca lucrătorilor un nivel de anxietate cu privire la viitorul lor. Deși aceasta este o reacție normală, viteza și domeniul de aplicare al inteligenței artificiale generative înseamnă că preocupările sunt mai ample decât de obicei. Deși aceste instrumente au capacitatea de a automatiza multe sarcini, ele nu pot îndeplini toate sarcinile pe care le fac inginerii de software. Înțelegerea capacităților tehnologiei, precum și a limitelor acesteia, este esențială pentru ingineri și lideri.
Primul lucru pe care oamenii trebuie să și-l amintească este că instrumentele de automatizare a testelor bazate pe inteligență artificială există pe piață de ceva timp. Cu toate acestea, natura prietenoasă a inteligenței artificiale generative o face capabilă de o mai mare flexibilitate.
Unul dintre primele lucruri pe care trebuie să le luăm în considerare este că AI generativă funcționează cel mai bine pentru rezultate care pot fi verificate. Acesta este un punct cheie. Natura modului în care LLMs sunt instruiți înseamnă că vor face tot posibilul pentru a vă oferi un răspuns, chiar dacă acest lucru înseamnă ocazional „halucinant” fapte, referințe, și argumente.
Acum, dacă aveți suficiente cunoștințe de codificare, veți putea citi și verifica orice text generat de Generative AI și veți putea detecta eventualele erori. Dacă sunteți un cetățean programator care folosește inteligența artificială generativă în loc să știe să programeze, nu veți fi la fel de capabil să descoperiți aceste greșeli.
Așadar, din această perspectivă, inginerii calificați vor fi în continuare o parte esențială a ecosistemului de dezvoltare software. Aceștia vor trebui în continuare să facă teste atât în sensul de supraveghere, cât și în sens practic.
O altă limitare a inteligenței artificiale generative pentru testarea software-ului implică testarea mobilă. De exemplu, ChatGPT este o opțiune bună pentru testarea interfețelor de utilizare a site-urilor web. Cu toate acestea, nu are acces la diferite dispozitive mobile. Cu atât de multe telefoane și modele diferite pe piață, acesta rămâne în urma programelor actuale de automatizare a testelor, cum ar fi ZAPTEST. Nici această problemă nu este un obstacol minor. Mai mult de
jumătate din totalul utilizării internetului se face de pe telefonul mobil
, iar acest număr crește în fiecare an.
Așadar, în timp ce inteligența artificială generativă va lua multe sarcini de la dezvoltatori, nu va face ca acești profesioniști să devină învechiți fără schimbări majore în infrastructura de testare și în capacitatea de a verifica rezultatele.
Gânduri finale
Testarea software și RPA se află pe o cale constantă de îmbunătățire. Pe măsură ce apar noi tehnologii și metode, ambele discipline absorb cele mai bune practici pentru a ajuta echipele de asigurare a calității să ofere teste mai rapide și mai cuprinzătoare la o fracțiune din prețul testelor manuale.
În timp ce îmbunătățirea domeniului de aplicare a testelor și reducerea erorilor umane și a costurilor sunt unele dintre cele mai evidente beneficii ale testelor bazate pe inteligență artificială, acestea ajută, de asemenea, echipele să adopte o abordare de integrare continuă și de implementare a conductelor (CI/CD).
În contextul în care așteptările consumatorilor și concurența sunt mai mari ca niciodată, AI generativă oferă echipelor o modalitate de a furniza teste rapide și eficiente fără a compromite calitatea.