fbpx

”Det här är den mest fantastiska tillämpning av maskininlärning som jag någonsin har sett.”

Mike Krieger, medgrundare av Instagram.

 

Mike Kriegers ord är ingen överdrift. Medan ML kan göra en del anmärkningsvärda saker när det gäller dataanalys och insikter, är GitHub Copilot en total spelförändrare på grund av den potentiella nytta den kan ge produktutvecklare runt om i världen.

Med hjälp av kodningspiloter och generativ AI kan teamen dra nytta av enorma fördelar, som att livscykeln för programvaruutveckling kan snabbas upp till hittills oanade hastigheter. Teknikens inverkan på RPA och programvarutestning är dock två av de mest spännande gränserna för denna fantastiska teknik.

I den här artikeln tittar vi på hur kodande copiloter och generativ AI har förändrat världarna för programvarutestning och RPA i nutid innan vi utforskar deras framtida inverkan på tekniken.

 

Kopiloter och generativ AI i

utveckling av programvara: En grundbok

Copilots och generativ AI i mjukvaruutveckling - en grund

Generativ AI och kodande copiloter är relativa nykomlingar inom programvaruutveckling. Innan vi diskuterar deras inverkan på rymden är det värt att titta på deras bakgrund och hur de arbetar.

 

1. AI-drivna autokodare

 

Stora språkmodeller (LLM) har förbättrats avsevärt under de senaste åren. Eftersom storleken på datamängderna och beräkningskraften har ökat exponentiellt, har kvaliteten på resultaten ökat.

Det finns många vertikala branscher som kan dra nytta av LLM. Några av de mest omskrivna är generering av text, bilder, videor och andra former av media. Men även om dessa användningsfall är imponerande finns det konsekvenser för utvecklare som kanske är mycket mer intressanta.

Det finns ett antal LLM autocoders på marknaden. GitHub CoPilot är dock kanske den mest kända och mest framgångsrika. En stor del av anledningen är att det utbildas på GitHub-förvaret. De har tillgång till miljontals exempel på öppen källkod, bästa praxis, applikationsarkitektur med mera som de kan lära sig av, vilket gör att de kan leverera högkvalitativa och mångsidiga resultat.

 

2. Hur fungerar kodning av copiloter?

 

Ett av de enklaste sätten att prata om hur kodningscoilots fungerar är att titta på den ledande produkten i spelet, GitHub CoPilot. Applikationen är baserad på OpenAis ChatGPT-3-modell.

Precis som ChatGPT och liknande LLM:er baseras CoPilot på miljarder parametrar. Under utvecklingen av ChatGPT-3 började OpenAI bygga upp ett särskilt kodningsprogram som kallas OpenAI Codex. Microsoft köpte exklusiv tillgång till produkten.

Det viktiga här är dock att Microsoft redan ägde GitHub. Om du är en kodare vet du allt om GitHub. I grund och botten är det en webbaserad plattform som används för versionskontroll och samarbete i mjukvaruutvecklingsprojekt. De tränade OpenAI Codex på GitHub-biblioteket som innehöll miljontals rader av öppen källkod, offentlig kod.

CoPilot använder maskininlärning för att hitta mönster och samband mellan kodrader. Precis som ChatGPT tittar den på ett ord eller en linje och beräknar sannolikheten för vad som ska komma härnäst baserat på ett stort lager av historiska data.

Styrkan hos AI-copiloter ligger i deras förmåga att föreslå kodavsnitt när utvecklare redigerar. Tänk på det som en superladdad autokomplettering för kodning. När kodarna skriver in en kodrad jämför LLM början av koden med sitt enorma bibliotek av tidigare projekt. Därefter föreslår den probabilistiska rader och nya kodrader.

De uppenbara fördelarna här är att utvecklare kan spara otroligt mycket tid genom denna autokomplettering. Det ökar produktiviteten och, i många fall, kodens noggrannhet.

 

3. Vad sägs om generativ AI för kodning och utveckling?

 

Som du kan se av CoPilots historia har generativ AI och copiloter liknande rötter. De är båda tekniker som använder statistisk sannolikhet för att göra förutsägelser om vad användarna behöver baserat på imputerad information.

Den stora skillnaden mellan programvara för copiloting och generativ AI är dock att den senare är promptbaserad. I korthet innebär det att användarna matar in en uppsättning skriftliga instruktioner till maskinen, som sedan producerar innehåll. Som alla som har använt ChatGPT eller liknande applikationer vet, kan denna output komma i form av text, bilder, video eller kod.

Även om de metoder som kodare använder för att uppnå automatiserad kodning är olika kan vi placera dem under ett liknande paraply av AI-assisterad automatiserad eller generativ kodning.

 

Utvecklingen av programvarutestning

utvecklingen av programvarutestning

Programvarutestning är anpassningsbart och utvecklas ständigt. Under loppet av några decennier har den förändrats och omformats för att uppfylla nya krav och utnyttja den tekniska utvecklingen.

 

1. Manuell provning:

I början av programvarutestningen användes manuell testning. Denna typ av testning var dyr och tidskrävande eftersom den krävde att QA-experter gick igenom programvaran med en fin tandkam genom att utveckla en serie testfall, köra och registrera resultaten, schemalägga korrigeringar och upprepa processen.

Att se till att alla tänkbara scenarier och situationer täcktes av dessa tester var en stor utmaning, och när man lade till den tid och de kostnader som krävdes var manuell testning resurskrävande. Den var också mycket känslig för mänskliga misstag, vilket förstärktes av begränsade distributionsalternativ, vilket innebar att eventuella oupptäckta buggar var svåra att åtgärda snabbt.

 

2. Testning enligt föreskrifter:

 

Skriptbaserad testning innebar ett stort steg framåt för kvalitetssäkringsbranschen. Istället för att gå igenom kod och testscenarier manuellt kunde utvecklarna skriva program som kunde testa programvaran automatiskt. De stora fördelarna med detta var att testningen blev effektivare och mindre känslig för mänskliga misstag. För att uppnå detta krävdes dock skicklig, exakt och tidskrävande planering och kodning för att säkerställa omfattande täckning.

 

3. Automatisering av tester:

 

Testautomatisering var nästa steg i utvecklingen av testning. Verktyg som ZAPTEST kunde erbjuda kodare alla fördelar med skriptbaserad testning men med ett gränssnitt utan kod. Även här var de viktigaste fördelarna tidsbesparing, återanvändbara och anpassningsbara tester, testning av användargränssnitt och API samt testning av plattformar och enheter.

 

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

4. Datadriven testning:

 

Datadriven testning var lösningen på problemet med att testa programvara som bearbetade olika datauppsättningar. Även detta är en form av testautomatisering, men den här metoden innebär att man skapar testskript och kör dem mot tilldelade datamängder. Med den här typen av testning kunde utvecklarna arbeta snabbare, isolera tester och minska tiden som gick åt till att upprepa testfall.

 

5. Generativ AI-testning:

 

Generativ AI-testning är den senaste innovationen inom programvarutestning. Genom att använda LLM kan QA-team skapa testfall och testdata som hjälper till att påskynda testprocessen. Dessa testfall är mycket flexibla och redigerbara, vilket hjälper utvecklare att återanvända och återanvända tester och avsevärt öka testomfattningen.

 

Dagens användning av copiloter och

Generativ AI inom programvarutestning och RPA

Nutida användning av copiloter och generativ AI inom programvarutestning och RPA

Generativ AI och copilots har haft en stor inverkan på programvarutestning. Men snarare än att direkt ersätta kodare har dessa verktyg bidragit till att förstärka testarna. Kort sagt hjälper de utvecklarna att bli snabbare och effektivare, och i många fall ökar de kvaliteten på testningen.

Undersökning
Stack Overflow utvecklarundersökning från 2023
ger en inblick i den aktuella användningen av AI-verktyg inom programvaruutveckling. En av de mest intressanta delarna av undersökningen visade att medan drygt hälften av alla utvecklare uppgav att de var intresserade av AI-verktyg för programvarutestning, uppgav mindre än 3 % att de litade på dessa verktyg. Dessutom uppgav bara 1 av 4 att de för närvarande använder AI-verktyg för programvarutestning.

Det intressanta med denna statistik är att den visar att användningen av AI-verktyg ännu inte är allmänt utbredd och att tidiga användare fortfarande kan få en fördel.

 

1. Användningsfall för copilot och generativ AI inom programvarutestning och RPA

 

Copilots och generativ AI påverkar alla områden inom programvaruutveckling. Här är några av de sätt som tekniken kan hjälpa till med programvarutestning och RPA.

 

Analys av krav

Kravanalys är en viktig del av livscykeln för programvaruutveckling. I processen ingår att förstå intressenternas krav och de olika funktioner som krävs för att bygga en programvara. Generativ AI kan hjälpa team med idéskapande genom att komma med nya idéer och perspektiv.

 

Planering av tester

När testkraven är väl kända måste QA-teamen bryta ner dem i ett schema för att säkerställa tillräcklig testtäckning. Denna typ av arbete kräver expertis och erfarenhet, men Generative AI kan stödja team genom exempel och guider, samt ge rekommendationer om särskilda verktyg och bästa praxis för deras unika krav.

 

Skapande av testfall

QA-team kan använda LLM för att analysera kod, användarkrav och programvaruspecifikationer för att förstå de underliggande relationerna bakom systemet. När AI:n har fått grepp om programmets in- och utdata och förväntade beteenden kan den börja bygga testfall som testar programmet.

Fördelarna här går utöver att spara tid och manuell kodning. AI-skapande av testfall kan också leda till mer omfattande täckning eftersom det kan utforska områden som QA-ingenjörer kanske inte tänker på, vilket leder till mer tillförlitliga byggen.

 

Hitta och åtgärda buggar

Med maskininlärning kan QA-personal avsevärt minska den tid det tar att hitta och åtgärda buggar. Vid programvarutestning är många buggar lätta att hitta. I många scenarier är det dock en mödosam och tidskrävande process. Generativ AI kan utföra kontroller på en bråkdel av den tid som krävs av manuella medarbetare och hjälpa till att hitta även de mest envisa felaktigheterna. Dessutom kan dessa AI-verktyg också lösa de buggar de identifierar, vilket sparar oändligt med tid för QA-teamen.

 

Testning av användargränssnitt

Generativa AI-verktyg kan simulera en rad olika användarbeteenden och interaktioner med mjukvarusystem. Metoderna kan ge utvecklingsteamen trygghet i att deras gränssnitt kan hantera ett brett spektrum av människa-dator-användningar. Generativ AI kan dessutom analysera användargränssnittsdata och heatmaps och komma med förslag på hur användargränssnittet kan förbättras och göras mer användarvänligt.

 

Framtiden för copiloter och generativ AI

i Programvarutestning och RPA

Framtiden för copiloter och generativ AI inom programvarutestning och RPA

Även om dagens användning av copiloter och generativ AI inom programvaruautomation redan är spännande, är framtiden ännu mer lovande.

Framtiden för copilot och generativ AI beror på vilka förbättringar som kan göras av produkterna. En nyligen genomförd studie från Purdue University, med titeln Vem svarar bäst på frågan? En djupgående analys av ChatGPT och Stack Overflow svar på frågor om programvaruteknik understryker några av begränsningarna med generativa AI-modeller.

Forskarna gav ChatGPT över 500 frågor från Stack Overflow. AI-verktyget svarade felaktigt på mer än hälften av frågorna. Nu är det viktigt att notera att en av de viktigaste frågorna som forskarna noterade var att AI misslyckades oftast eftersom den inte förstod frågorna ordentligt. Denna detalj understryker vikten av prompt engineering inom generativ AI.

Dessutom har både Google och Amazon genomfört oberoende tester i år för att undersöka kvaliteten på generativa AI-verktyg i en intervjufråga. I båda fallen lyckades verktyget svara tillräckligt bra på testfrågorna för att få tjänsten, vilket rapporterades av
CNBC
och
Business Inside
respektive.

Så det är tydligt att vi befinner oss vid en punkt i denna teknik där potentialen finns där, men några mindre saker behöver strykas ut. Den snabba utvecklingen av dessa verktyg under de senaste åren gör att vi är övertygade om att vi kommer att nå den nivå som krävs och förmodligen tidigare än planerat.

Nu kan vi ta en titt på några av de områden där dessa tekniker kommer att påverka framtiden för testning av programvaruutveckling.

 

1. Hyperautomatisering

 

Hyperautomation beskriver ett läge i företagets utveckling där alla processer som kan automatiseras kommer att automatiseras. Det är en helhetssyn på produktivitet som är starkt sammankopplad.

När det gäller programvaruutveckling är det inte svårt att föreställa sig ett centraliserat system med överblick över kraven på affärsprocesser. Systemet kommer att förstå och identifiera behov och effektivitetsvinster och ständigt identifiera områden som behöver förbättras med hjälp av teknik.

I takt med att företagen utvecklas kommer dessa centraliserade system att använda generativ AI för att bygga applikationer som automatiskt löser flaskhalsar och ineffektivitet eller kanske överför vissa jobb till ingenjörer för att slutföras.

 

2. Utformning av programvaruarkitekturer

 

Med tillräckliga data kan AI-verktyg förstå bästa praxis för programvaruarkitektur och hitta sätt att förbättra dessa konstruktioner för maximal effektivitet. Maskininlärning handlar om att hitta mönster och samband som ligger utanför den mänskliga hjärnans räckvidd.

Om AI-verktyg har tillräcklig kunskap om en mängd olika tillämpningar kan vi instruera dem att anpassa tidigare arkitekturer till nya krav, vilket leder till mer effektiva konstruktioner eller till och med idéer som annars inte skulle ha beaktats.

 

3. Modernisering av äldre system

 

Ingen programvara är någonsin perfekt, men det finns många verktyg som fortfarande gör ett utmärkt jobb och som är så djupt rotade i ett företags infrastruktur att de är svåra att ersätta. Det kan vara svårt att anpassa dessa system, särskilt om de har utvecklats med hjälp av programkod som har blivit omodern.

I framtiden kommer generativa AI-verktyg att kunna konvertera den här koden till dagens språk, så att teamen kan behålla sina äldre system och i många fall förbättra dem.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

 

4. Förbättrad utveckling med låg och ingen kod

 

En av utmaningarna med automatiserad programvarutestning via generativa AI-verktyg som vi identifierade ovan var en situation där kodaren saknade kunskap och erfarenhet för att verifiera resultatet.

AI-copiloter kommer att bidra till att förbättra verktyg med låg kod genom att ge bättre förslag som leder till robusta applikationer. Sofistikerade testverktyg kommer att ge mänskliga operatörer fria kreativa händer samtidigt som de ständigt validerar sitt arbete och öppnar dörren för icke-tekniska yrkesverksamma att bygga de applikationer de behöver.

 

Fördelar med generativ AI vid testning av programvara

prompt engineering inom automatisering av programvarutest och rpa (robotic process automation)

Att använda generativ AI för programvarutestning har många fördelar som gör det till ett attraktivt alternativ för utvecklingsteam som vill arbeta snabbare men utan att kompromissa med kvaliteten.

 

1. Snabbare livscykel för mjukvaruutveckling

 

Utvecklarna är ständigt pressade att arbeta långa arbetsdagar för att se till att programvara och nya funktioner kommer ut på marknaden i tid. Agile/DevOps-metodiken har visserligen gjort utvecklingen mer effektiv, men det finns fortfarande enskilda utvecklingssteg som kan rationaliseras ytterligare.

Med generativa AI-verktyg kan testteamen hantera olika SDLC-stadier, från generering av prototyper till UI-testning.

 

2. Omfattande felsökning

 

En av de mest kraftfulla tillämpningarna av AI inom programvarutestning kommer från teknikens förmåga att jämföra stora datamängder. ML-verktyg kan analysera stora datamängder (inklusive kod) för att bygga upp ett arkiv med information och förväntade modeller.

När utvecklarna publicerar kod kan de jämföra den med dessa modeller, som kan belysa oväntade scenarier, beroenden och sårbarheter, vilket möjliggör bättre kod genom hela utvecklingsprocessen.

 

3. Förbättrad testtäckning

 

Verktyg för maskininlärning är byggda för att analysera och förstå stora datamängder. När det tillämpas på programvarutestning ger det teamen möjlighet att öka omfattningen av sin programvarutestning. Fördelarna är fler än att bara ta bort mänsklig arbetskraft från ekvationen för att spara pengar; AI leder också till en mycket mer omfattande typ av testning som möjliggör förbättrad felsökning i en komplex uppsättning scenarier.

 

4. Minskade kostnader

 

Jämfört med att anställa ett team av QA-ingenjörer och använda dem för repetitiva och tidskrävande testuppgifter är generativ AI och RPA snabbare och mer kostnadseffektiva.

I takt med att konkurrensen inom programvaruutveckling hårdnar blir det allt viktigare att hitta sätt att leverera hållbara kvalitetsprodukter inom budgetramarna. Generativa AI-verktyg och copiloter kan minska beroendet av ingenjörer och göra det möjligt för dem att utföra värdedrivet arbete och leda till mindre uppblåsta konstruktioner.

 

Innebär generativa AI-verktyg slutet för

av mänskliga programvaruingenjörer?

Innebär generativa AI-verktyg slutet för mänskliga programvaruutvecklare?

Trots de uppenbara fördelarna kan alla automatiseringsverktyg skapa oro hos arbetstagarna när det gäller deras framtid. Även om detta är en normal reaktion innebär hastigheten och omfattningen av generativ AI att problemen är mer omfattande än vanligt. Även om dessa verktyg har kapacitet att automatisera många jobb, kan de inte utföra alla uppgifter som programvaruingenjörer gör. Att förstå teknikens möjligheter och begränsningar är avgörande för ingenjörer och ledare.

Det första man måste komma ihåg är att testautomatiseringsverktyg som drivs av AI har funnits på marknaden under ganska lång tid. Generativ AI:s användarvänlighet gör dock att den kan vara ännu mer flexibel.

En av de första sakerna vi måste tänka på är att generativ AI fungerar bäst för resultat som kan verifieras. Detta är en viktig punkt. LLM-utbildningen innebär att de kommer att göra sitt bästa för att ge dig ett svar, även om det ibland innebär att de ”hallucinerar” fakta, referenser och argument.

Om du har tillräckliga kunskaper om kodning kommer du att kunna läsa och verifiera all text som Generative AI producerar och upptäcka eventuella fel. Om du är en medborgarkodare som använder generativ AI istället för att kunna koda, kommer du inte att vara lika kapabel att upptäcka dessa misstag.

Om man ser det ur det perspektivet kommer kvalificerade ingenjörer fortfarande att vara en viktig del av ekosystemet för mjukvaruutveckling. De kommer fortfarande att vara tvungna att testa i både övervakande och praktisk mening.

En annan begränsning av generativ AI för programvarutestning gäller mobil testning. ChatGPT är till exempel ett bra alternativ för att testa webbplatsers användargränssnitt. Den har dock inte tillgång till olika mobila enheter. Med så många olika telefoner och modeller på marknaden hamnar den på efterkälken när det gäller testautomatiseringsprogram som ZAPTEST. Detta problem är inte heller något litet hinder. Mer än
hälften av all internetanvändning sker från mobila
och den siffran ökar för varje år.

Så även om generativ AI kommer att ta många uppgifter från utvecklare, kommer det inte att göra dessa yrkesverksamma föråldrade utan stora förändringar i testinfrastrukturen och förmågan att verifiera resultatet.

 

Avslutande tankar

 

Programvarutestning och RPA förbättras ständigt. I takt med att ny teknik och nya metoder utvecklas tar båda disciplinerna till sig de bästa metoderna för att hjälpa QA-teamen att leverera snabbare och mer omfattande tester till en bråkdel av priset för manuell testning.

Att förbättra testernas omfattning och minska mänskliga fel och kostnader är några av de mer uppenbara fördelarna med AI-driven testning, men det hjälper också team att anta en strategi för kontinuerlig integration och distributionspipelines (CI/CD).

När konsumenternas förväntningar och konkurrensen är högre än någonsin erbjuder generativ AI teamen ett sätt att tillhandahålla snabba och effektiva tester utan att kompromissa med kvaliteten.

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