«Dette er den mest oppsiktsvekkende applikasjonen av maskinlæring jeg noen gang har sett.»
Mike Krieger, medgründer av Instagram.
Ordene til Mike Krieger er ikke overdrevne. Mens ML er i stand til noen bemerkelsesverdige ting når det gjelder dataanalyse og innsikt, er GitHub Copilot en total game-changer på grunn av den potensielle nytten den kan gi produktutviklere over hele verden.
Koding av copiloter og generativ AI hjelper team med å låse opp enorme fordeler, som å akselerere livssyklusen for programvareutvikling til hittil ufattelige hastigheter. Imidlertid er teknologiens innvirkning på RPA og programvaretesting to av de mest spennende grensene til denne fantastiske teknologien.
I denne artikkelen skal vi se på hvordan koding av copiloter og generativ AI har endret verdener av programvaretesting og RPA i dag før vi utforsker deres fremtidige innvirkning på teknologien.
Copiloter og Generativ AI i
programvareutvikling: A Primer
Generative AI og kodende copiloter er relativt nykommere i programvareutviklingslandskapet. Før vi diskuterer deres innvirkning på rommet, er det verdt å se på deres bakgrunn og hvordan de fungerer.
1. AI-drevne autokodere
Store språkmodeller (LLM) har forbedret seg bemerkelsesverdig de siste årene. Ettersom størrelsen på datasettene og beregningskraften har økt eksponentielt, har kvaliteten på utdata økt.
Det er mange vertikaler som kan dra nytte av LLM-er. Noe av det mest skrevet om inkluderer generering av tekst, bilder, videoer og andre former for medier. Men selv om disse brukstilfellene er imponerende, er det implikasjoner for utviklere som kanskje er langt mer interessante.
Det finnes en rekke LLM-autokodere på markedet. Imidlertid er GitHub CoPilot kanskje den mest kjente og mest dyktige. En stor del av grunnen er at den er trent på GitHub-depotet. Den har tilgang til millioner av eksempler på åpen kildekode, beste praksis, applikasjonsarkitektur og mer å lære av, noe som lar den gi høykvalitets og allsidige utdata.
2. Hvordan fungerer koding av copiloter?
En av de enkleste måtene å snakke om hvordan koding av copiloter fungerer, er ved å se på det ledende produktet i spillet, GitHub CoPilot. Applikasjonen er basert på OpenAis ChatGPT-3-modell.
Akkurat som ChatGPT og lignende LLM-er, er CoPilot basert på milliarder av parametere. Under utviklingen av ChatGPT-3 begynte OpenAI å bygge et dedikert kodeprogram kalt OpenAI Codex. Microsoft kjøpte eksklusiv tilgang til produktet.
Det viktigste her er imidlertid at Microsoft allerede eide GitHub. Hvis du er en koder, vil du vite alt om GitHub. I utgangspunktet er det en nettbasert plattform som brukes til versjonskontroll og samarbeid i programvareutviklingsprosjekter. De trente OpenAI Codex på GitHub-biblioteket som inneholdt millioner av linjer med åpen kildekode, offentlig kode.
CoPilot bruker Machine Learning for å finne mønstre og relasjoner mellom kodelinjer. Akkurat som ChatGPT, ser den på et ord eller en linje og beregner sannsynligheten for hva som skal komme neste basert på et stort depot av historiske data.
Kraften til AI-copiloter ligger i deres evne til å foreslå kodebiter som utviklere redigerer. Tenk på det som en superladet autofullføring for koding. Når kodere legger inn en kodelinje, sammenligner LLM starten på den koden med det enorme biblioteket med tidligere prosjekter. Derfra foreslår det sannsynlighetslinjer og nye kodelinjer.
De åpenbare fordelene her er at utviklere kan spare utrolig mye tid gjennom denne autofullføringen. Det øker produktiviteten og, i mange tilfeller, nøyaktigheten til koden.
3. Hva med Generativ AI for koding og utvikling?
Som du kan se fra historien til CoPilot, har Generative AI og Copilots lignende røtter. De er begge teknologier som bruker statistisk sannsynlighet for å lage spådommer om hva brukerne trenger basert på imputert informasjon.
Den store forskjellen mellom copiloting-programvare og generativ AI er imidlertid at sistnevnte er promptbasert. Kort fortalt betyr det at brukere legger inn et sett med skriftlige instruksjoner til maskinen, og den sender ut innhold. Som alle som har brukt ChatGPT eller lignende applikasjoner vet, kan denne utgangen komme i form av tekst, bilder, video eller kode.
Så selv om metodene som kodere bruker for å komme frem til automatisert koding er forskjellige, kan vi plassere dem under en lignende paraply av AI-assistert automatisert eller generativ koding.
Utviklingen av programvaretesting
Programvaretesting er responsiv og i stadig utvikling. I løpet av noen tiår har det endret seg og endret seg for å møte nye krav og bruke fremskritt innen teknologi.
1. Manuell testing:
De første dagene med programvaretesting innebar manuell testing. Denne typen testing var kostbar og tidkrevende fordi den krevde kvalitetssikringseksperter til å gå gjennom programvaren med en fin tannkam ved å utvikle en serie testsaker, kjøre og registrere resultatene, planlegge rettinger og gjenta prosessen.
Å sikre at alle mulige scenarier og situasjoner ble dekket av disse testene var en stor utfordring, og lagt til tiden og kostnadene som var involvert, var manuell testing ressurskrevende. Det var også svært utsatt for menneskelige feil, som ble forsterket av begrensede distribusjonsmuligheter, noe som betydde at uoppdagede feil var utfordrende å lappe raskt.
2. Skripttesting:
Skripttesting representerte et stort skritt fremover for QA-fellesskapet. I stedet for å gå gjennom kode og testscenarier manuelt, kunne utviklere skrive programmer som kunne teste programvare automatisk. De store plusssidene her var at testingen ble mer effektiv og mindre utsatt for menneskelige feil. For å oppnå dette krevde det imidlertid dyktig, presis og tidkrevende planlegging og koding for å sikre omfattende dekning.
3. Test automatisering:
Testautomatisering var den neste utviklingen av testing. Verktøy som ZAPTEST var i stand til å tilby kodere alle fordelene med skripttesting, men med et grensesnitt uten kode. Igjen, de betydelige fordelene her var tidsbesparelse, gjenbrukbare og tilpasningsdyktige tester, UI- og API-testing og testing på tvers av plattformer og enheter på tvers av enheter.
4. Datadrevet testing:
Datadrevet testing var løsningen på problemet med å teste programvare som behandlet ulike datasett. Igjen, dette er en form for testautomatisering, men denne metoden innebærer å lage testskript og kjøre dem mot tildelte datasett. Denne typen testing gjorde det mulig for utviklere å jobbe raskere, isolere tester og redusere tiden for å gjenta testtilfeller.
5. Generativ AI-testing:
Generativ AI-testing er den nyeste innovasjonen innen programvaretesting. Ved å bruke LLM-er kan QA-team lage testcases og testdata som hjelper til med å akselerere testprosessen. Disse testsakene er svært fleksible og redigerbare, noe som hjelper utviklere å gjenbruke og gjenbruke tester og øke omfanget av testing betydelig.
Dagens bruk av copiloter og
Generativ AI i programvaretesting og RPA
Generativ AI og copiloter har hatt stor innvirkning på programvaretesting. Men i stedet for å erstatte kodere, har disse verktøyene bidratt til å øke testerne. Kort sagt hjelper de utviklere med å bli raskere og mer effektive, og i mange tilfeller øker kvaliteten på testingen.
Stack Overflow Developer Survey fra 2023 tilbyr litt innsikt i dagens bruk av AI-verktøy i programvareutviklingsfellesskapet. En av de mest interessante delene av undersøkelsen antydet at mens litt mer enn halvparten av alle utviklere foreslo at de var interessert i AI-verktøy for programvaretesting, sa mindre enn 3 % at de stolte på disse verktøyene. Dessuten foreslo bare 1 av 4 at de for øyeblikket brukte AI-verktøy for programvaretesting.
Det som er interessant med denne statistikken er at den viser at bruk av AI-verktøy ennå ikke er utbredt, og at tidlige brukere fortsatt kan få en fordel.
1. Copilot og Generative AI brukssaker i programvaretesting og RPA
Copiloter og Generativ AI påvirker alle områder innen programvareutvikling. Her er noen av måtene teknologien kan hjelpe med programvaretesting og RPA.
Behovsanalyse
Kravanalyse er en sentral del av livssyklusen for programvareutvikling. Prosessen innebærer å forstå interessentenes krav og de ulike funksjonene som kreves for å bygge et stykke programvare. Generativ AI kan hjelpe team med ideer ved å komme opp med nye ideer og perspektiver.
Testplanlegging
Når testkravene er godt forstått, må QA-team dele ting ned i en tidsplan for å sikre tilstrekkelig testdekning. Denne typen arbeid krever ekspertise og erfaring, men Generative AI kan støtte team gjennom eksempler og veiledninger, i tillegg til å gi anbefalinger om spesielle verktøy og beste praksis for deres unike krav.
Oppretting av testcase
QA-team kan bruke LLM-er til å analysere kode, brukerkrav og programvarespesifikasjoner for å forstå de underliggende relasjonene bak systemet. Når AI har en forståelse av inngangene og utgangene og forventet oppførsel til programvaren, kan den begynne å bygge testcaser som vil teste programvaren.
Fordelene her går utover å spare tid og manuell koding. Oppretting av AI-testcase kan også føre til mer omfattende dekning fordi den kan utforske områder som QA-ingeniører kanskje ikke vurderer, noe som fører til mer pålitelige bygg.
Finne og løse feil
Maskinlæring lar QA-profesjonelle betraktelig redusere tiden det tar å finne og løse feil. I programvaretesting er mange feil lette å finne. I mange scenarier er det imidlertid en arbeidskrevende og tidkrevende prosess. Generativ AI kan utføre kontroller på en brøkdel av tiden til manuelle arbeidere og bidra til å fremheve selv de mest gjenstridige feilene. Dessuten kan disse AI-verktøyene også løse feilene de identifiserer, og sparer endeløs tid for QA-team.
UI-testing
Generative AI-verktøy kan simulere en rekke brukeratferd og interaksjoner med programvaresystemer. Metodene kan gi utviklingsteam tillit til at grensesnittet deres kan håndtere et bredt spekter av menneske-datamaskinbruk. Dessuten kan Generativ AI også analysere brukergrensesnittdata og varmekart og komme med forslag til hvordan man kan forbedre brukergrensesnittet og gjøre det mer brukervennlig.
Fremtiden til copiloter og Generativ AI
i programvaretesting og RPA
Mens dagens bruk av copiloter og generativ AI i programvareautomatisering allerede er spennende, lover fremtiden enda mer.
Fremtiden til copilot og Generative AI avhenger av forbedringer som kan gjøres på produktene. En fersk studie fra Purdue University, med tittelen Hvem svarer bedre? En dyptgående analyse av ChatGPT og Stack Overflow-svar på programvaretekniske spørsmål understreker noen av begrensningene til Generative AI-modeller.
Forskerne ga ChatGPT over 500 spørsmål fra Stack Overflow. AI-verktøyet svarte mer enn halvparten unøyaktig. Nå er det viktig å merke seg at et av de viktigste problemene forskerne bemerket var at AI feilet oftest fordi den ikke forsto spørsmålene ordentlig. Denne detaljen understreker viktigheten av rask utvikling innen Generativ AI.
I tillegg har både Google og Amazon kjørt uavhengige tester i år for å se på kvaliteten på Generative AI-verktøy i en innstilling for intervjuspørsmål. I begge tilfeller klarte verktøyet å svare på testspørsmål godt nok til å få stillingen, som rapportert av henholdsvis CNBC og Business Inside .
Så det er klart at vi er på et punkt i denne teknologien hvor potensialet er der, men noen mindre ting må strykes ut. Skalaen som disse verktøyene har blitt forbedret i de siste årene gir oss tillit til at de vil komme til det nødvendige nivået og sannsynligvis foran skjema.
Nå kan vi ta en titt på noen av områdene der disse teknologiene vil påvirke fremtiden for testing av programvareutvikling.
1. Hyperautomatisering
Hyperautomatisering beskriver en destinasjon i utviklingen av bedriften der hver prosess som kan automatiseres vil bli automatisert. Det er en helhetlig tilnærming til produktivitet som henger sammen.
Når det gjelder programvareutvikling, er det ikke vanskelig å forestille seg et sentralisert system med overvåking av krav til forretningsprosesser. Systemet skal forstå og identifisere behov og effektivitet og hele tiden identifisere områder som må forbedres via teknologi.
Etter hvert som virksomheter utvikler seg, vil disse sentraliserte systemene bruke Generativ AI til å bygge applikasjoner som vil løse flaskehalser og ineffektivitet automatisk eller kanskje sende bestemte jobber til ingeniører å fullføre.
2. Designe programvarearkitekturer
Med tilstrekkelig data kan AI-verktøy forstå beste praksis for programvarearkitektur og finne måter å forbedre disse designene for maksimal effektivitet. Maskinlæring handler om å finne mønstre og relasjoner som er utenfor rammen av menneskesinnet.
Hvis AI-verktøy har tilstrekkelig kunnskap om en rekke applikasjoner, kan vi instruere dem til å bøye tidligere arkitekturer mot nye krav, noe som fører til mer effektive bygg eller til og med ideer som ellers ikke ville blitt vurdert.
3. Modernisering av eldre systemer
Selv om ingen programvare noensinne er perfekt, er det mange verktøy som fortsatt gjør en utmerket jobb og er så dypt innebygd i en bedrifts infrastruktur at de er vanskelige å erstatte. Å tilpasse disse systemene kan være et ork, spesielt hvis de ble skrevet med programvarekode som har falt av moten.
I fremtiden vil Generative AI-verktøy kunne konvertere denne koden til språket du jour, slik at team kan beholde sine gamle systemer og i mange tilfeller forbedre dem.
4. Forbedring av lav kode og ingen kode utvikling
En av utfordringene med testing av automatiseringsprogramvare via Generative AI-verktøy som vi identifiserte ovenfor, var en situasjon der koderen manglet kunnskap og erfaring til å verifisere utdataene.
AI-copiloter vil bidra til å utvide lavkodeverktøy ved å komme med bedre forslag som fører til robuste applikasjoner. Sofistikerte testverktøy vil tillate menneskelige operatører fritt kreativt styre mens de hele tiden validerer arbeidet sitt og åpner døren for ikke-tekniske fagfolk til å bygge applikasjonene de trenger.
Fordeler med Generativ AI i programvaretesting
Å bruke Generativ AI til programvaretesting har mange fordeler som gjør det til et attraktivt alternativ for utviklingsteam som ønsker å jobbe raskere, men uten å gå på kompromiss med kvaliteten.
1. Fremskynde livssyklusen for programvareutvikling
Utviklere er under konstant press for å jobbe lange timer for å sikre at programvare og nye funksjoner kommer ut på markedet i tide. Mens Agile/DevOps-metodikk har sørget for at utviklingen er mer effektiv, er det fortsatt individuelle utviklingsstadier som kan dra nytte av ytterligere effektivisering.
Generative AI-verktøy lar testteam takle ulike SDLC-stadier, fra generering av prototyper til UI-testing.
2. Omfattende feildeteksjon
En av de kraftigste applikasjonene til AI i programvaretesting kommer fra teknologiens evne til å sammenligne store datasett. ML-verktøy kan analysere enorme datasett (inkludert kode) for å bygge et depot av informasjon og forventede modeller.
Når utviklere forplikter kode, kan de sammenligne den med disse modellene, som kan fremheve uventede scenarier, avhengigheter og sårbarheter, noe som gir bedre kode gjennom hele utviklingsprosessen.
3. Forbedret testdekning
Maskinlæringsverktøy er bygget for å analysere og forstå store sett med data. Når det brukes på programvaretesting, lar det teamene øke omfanget av programvaretestingen. Fordelene er mer enn bare å fjerne menneskelig arbeidskraft fra ligningen for å spare penger; AI fører også til en langt mer omfattende type testing som muliggjør forbedret feildeteksjon på tvers av et komplekst sett med scenarier.
4. Reduserte kostnader
Sammenlignet med å ansette et team med QA-ingeniører og bruke dem til repeterende og tidkrevende programvaretestingsoppgaver, er Generative AI og RPA raskere og mer kostnadseffektive.
Etter hvert som verden av programvareutvikling blir mer konkurransedyktig, øker viktigheten av å finne måter å levere kvalitet og holdbare produkter på budsjett. Generative AI-verktøy og copiloter kan redusere avhengigheten av ingeniører og tillate dem å utføre verdidrevet arbeid og føre til mindre oppblåste bygg.
Gjør Generative AI-verktøy stave slutten
av menneskelige programvareingeniører?
Til tross for deres åpenbare fordeler, kan et hvilket som helst automatiseringsverktøy forårsake arbeidstakere et nivå av angst for fremtiden. Selv om dette er en normal reaksjon, betyr hastigheten og omfanget av Generative AI at bekymringene er mer omfattende enn vanlig. Selv om disse verktøyene har kapasitet til å automatisere mange jobber, kan de ikke utføre alle oppgaver som programvareingeniører gjør. Å forstå teknologiens evner, så vel som deres begrensninger, er avgjørende for ingeniører og ledere.
Det første folk må huske på er at testautomatiseringsverktøy drevet av AI har eksistert på markedet i ganske lang tid. Imidlertid gjør den brukervennlige naturen til Generative AI den i stand til ytterligere fleksibilitet.
En av de første tingene vi må vurdere er at Generativ AI fungerer best for utganger som kan verifiseres. Dette er et nøkkelpoeng. Naturen til hvordan LLM-er trenes, betyr at de vil gjøre sitt beste for å gi deg et svar, selv om det av og til betyr «hallusinerende» fakta, referanser og argumenter.
Nå, hvis du har tilstrekkelig kunnskap om koding, vil du kunne lese og verifisere all tekst som generativ AI gir ut og fange opp potensielle feil. Hvis du er en borgerkoder som bruker Generativ AI i stedet for å kunne kode, vil du ikke være like i stand til å fange opp disse feilene.
Så, sett fra dette perspektivet, vil dyktige ingeniører fortsatt være en kritisk del av programvareutviklingens økosystem. De vil fortsatt være pålagt å teste både i tilsynsmessig og praktisk forstand.
En annen begrensning ved Generativ AI for programvaretesting involverer mobiltesting. ChatGPT er for eksempel et godt alternativ for å teste brukergrensesnittet på nettstedet. Den har imidlertid ikke tilgang til forskjellige mobile enheter. Med så mange forskjellige håndsett og modeller på markedet, faller den bak dagens testautomatiseringsprogramvare som ZAPTEST. Dette problemet er heller ingen liten hindring. Mer enn halvparten av all internettbruk kommer fra mobil , og det tallet øker hvert år.
Så selv om Generativ AI vil ta mange oppgaver fra utviklere, vil det ikke gjøre disse fagfolkene foreldet uten store endringer i testinfrastruktur og muligheten til å verifisere utdata.
Siste tanker
Programvaretesting og RPA er på en konstant vei til forbedring. Etter hvert som ny teknologi og metoder oppstår, absorberer begge disipliner den beste praksisen for å hjelpe QA-team med å levere raskere og mer omfattende testing til en brøkdel av prisen for manuell testing.
Selv om forbedring av testomfanget og reduksjon av menneskelige feil og kostnader er noen av de mer åpenbare fordelene med AI-drevet testing, hjelper det også team med å ta i bruk en kontinuerlig integrasjons- og distribusjonspipelines (CI/CD)-tilnærming.
Med forbrukernes forventninger og konkurranse høyere enn noen gang, tilbyr Generative AI team en måte å tilby raske og effektive tester uten at det går på bekostning av kvaliteten.