„Ово је јединствена апликација машинског учења коју сам икада видео.“
Мике Криегер, суоснивач Инстаграма.
Речи Мајка Кригера нису хипербола. Док је МЛ способан за неке изванредне ствари у смислу анализе података и увида, ГитХуб Цопилот је потпуни мењач игре због потенцијалне корисности коју може да пружи програмерима производа широм света.
Копилоти за кодирање и генеративна вештачка интелигенција помажу тимовима да открију огромне предности, као што је убрзање животног циклуса развоја софтвера до до сада незамисливих брзина. Међутим, утицај технологије на РПА и тестирање софтвера су две најузбудљивије границе ове невероватне технологије.
У овом чланку ћемо погледати како су копилоти кодирања и генеративна АИ променили светове тестирања софтвера и РПА у данашње време пре него што истражимо њихов будући утицај на технологију.
Копилоти и генеративна АИ у
развој софтвера: А Пример
Генеративна АИ и копилоти за кодирање су релативни новопридошлице у области развоја софтвера. Пре него што разговарамо о њиховом утицају на простор, вреди погледати њихову позадину и како раде.
1. Ауто кодери са АИ погоном
Велики језички модели (ЛЛМ) су се значајно побољшали у последњих неколико година. Како су величина скупова података и рачунарска снага експоненцијално расли, квалитет излаза је порастао.
Постоји много вертикала које могу имати користи од ЛЛМ-а. Неки од оних о којима се највише пише укључују генерисање текста, слика, видео записа и других облика медија. Међутим, иако су ови случајеви употребе импресивни, постоје импликације за програмере које су можда далеко интересантније.
На тржишту постоји велики број ЛЛМ аутокодера. Међутим, ГитХуб ЦоПилот је можда најпознатији и најуспешнији. Велики део разлога је то што је обучен на ГитХуб репозиторијуму. Има приступ милионима примера отвореног кода, најбољим праксама, архитектури апликација и више од чега може да учи, што му омогућава да пружи висококвалитетне и разноврсне резултате.
2. Како функционишу копилоти за кодирање?
Један од најлакших начина да разговарате о томе како функционишу копилоти за кодирање је гледајући водећи производ у игри, ГитХуб ЦоПилот. Апликација је заснована на ОпенАи-овом ЦхатГПТ-3 моделу.
Баш као и ЦхатГПТ и слични ЛЛМ, ЦоПилот се заснива на милијардама параметара. Током развоја ЦхатГПТ-3, ОпенАИ је почео да гради наменски програм за кодирање под називом ОпенАИ Цодек. Мицрософт је купио ексклузивни приступ производу.
Међутим, кључна ствар овде је да је Мицрософт већ поседовао ГитХуб. Ако сте кодер, знаћете све о ГитХубу. У основи, то је платформа заснована на вебу која се користи за контролу верзија и сарадњу у пројектима развоја софтвера. Они су обучили ОпенАИ Цодек на ГитХуб библиотеци која је садржала милионе линија отвореног кода, јавног кода.
ЦоПилот користи машинско учење да пронађе обрасце и односе између редова кода. Баш као и ЦхатГПТ, он гледа реч или ред и израчунава вероватноћу онога што би требало да уследи на основу огромног складишта историјских података.
Моћ АИ копилота лежи у њиховој способности да предлажу исечке кода док програмери уређују. Замислите то као надопуњено аутодовршавање за кодирање. Док кодери уносе ред кода, ЛЛМ упоређује почетак тог кода са својом огромном библиотеком претходних пројеката. Одатле сугерише вероватноће и нове линије кода.
Очигледне предности овде су да програмери могу уштедети невероватну количину времена кроз ово аутоматско довршавање. Повећава продуктивност и, у многим случајевима, тачност кода.
3. Шта је са генеративном вештачком интелигенцијом за кодирање и развој?
Као што можете видети из историје ЦоПилот-а, Генеративна АИ и Цопилот имају сличне корене. Обе су технологије које користе статистичку вероватноћу да направе предвиђања о томе шта је корисницима потребно на основу импутираних информација.
Међутим, велика разлика између софтвера за копилотирање и генеративне АИ је у томе што је ова друга заснована на промпту. Укратко, то значи да корисници уносе скуп писаних инструкција у машину, а она емитује садржај. Као што свако ко је користио ЦхатГПТ или сличне апликације зна, овај излаз може доћи у облику текста, слика, видеа или кода.
Дакле, иако су методе које кодери користе да би дошли до аутоматског кодирања различите, можемо их ставити под сличан кишобран аутоматског или генеративног кодирања уз помоћ вештачке интелигенције.
Еволуција тестирања софтвера
Тестирање софтвера је прилагодљиво и стално се развија. У периоду од неколико деценија, померио се и трансформисао да би испунио нове захтеве и користио напредак технологије.
1. Ручно тестирање:
Први дани тестирања софтвера укључивали су ручно тестирање. Ова врста тестирања била је скупа и дуготрајна јер је захтевала од стручњака за квалитет да пређу на софтвер са чешљем са финим зупцима тако што су развили низ тест случајева, покренули и забележили резултате, заказали поправке и поновили процес.
Осигурати да сви могући сценарији и ситуације буду покривени овим тестовима био је велики изазов, а када се додају вријеме и трошкови, ручно тестирање је захтијевало велике ресурсе. Такође је био веома подложан људској грешци, што је било појачано ограниченим опцијама дистрибуције, што је значило да је било које неоткривене грешке било тешко брзо закрпити.
2. Скриптно тестирање:
Скриптно тестирање је представљало огроман корак напред за КА заједницу. Уместо да ручно пролазе кроз код и тестирају сценарије, програмери су могли да напишу програме који могу аутоматски тестирати софтвер. Велики плус овде је то што је тестирање постало ефикасније и мање подложно људским грешкама. Међутим, постизање овог захтева захтева вешто, прецизно и временски интензивно планирање и кодирање како би се обезбедила свеобухватна покривеност.
3. Аутоматизација тестирања:
Аутоматизација тестирања је била следећа еволуција тестирања. Алати као што је ЗАПТЕСТ су били у могућности да понуде кодерима све предности тестирања са скриптама, али са интерфејсом без кодирања. Опет, значајне предности овде су биле уштеда времена, тестови који се могу поново користити и прилагодљиви, тестирање корисничког интерфејса и АПИ-ја и тестирање на више платформи и више уређаја.
4. Тестирање засновано на подацима:
Тестирање засновано на подацима било је решење проблема тестирања софтвера који је обрађивао различите скупове података. Опет, ово је облик аутоматизације тестирања, али овај метод укључује креирање тестних скрипти и њихово покретање према додељеним скуповима података. Ова врста тестирања је омогућила програмерима да раде брже, изолују тестове и смање количину времена за понављање тест случајева.
5. Генеративно тестирање вештачке интелигенције:
Генеративно АИ тестирање је најновија иновација у тестирању софтвера. Коришћењем ЛЛМ-а, КА тимови могу да креирају тест случајеве и податке о тестирању који помажу да се убрза процес тестирања. Ови тестни случајеви су веома флексибилни и могу се уређивати, што помаже програмерима да поново користе и пренамене тестове и значајно повећавају обим тестирања.
Данашња употреба копилота и
Генеративна АИ у тестирању софтвера и РПА
Генеративна АИ и копилоти су имали велики утицај на тестирање софтвера. Међутим, уместо да потпуно замене кодере, ови алати су помогли да се повећају тестери. Укратко, помажу програмерима да постану бржи и ефикаснији и, у многим случајевима, повећавају квалитет тестирања.
Стацк Оверфлов Девелопер Анкета из 2023 нуди неке увиде у данашњу употребу АИ алата у заједници за развој софтвера. Један од најзанимљивијих делова анкете сугерише да док је нешто више од половине свих програмера сугерисало да су заинтересовани за АИ алате за тестирање софтвера, мање од 3% је рекло да верује овим алатима. Штавише, само 1 од 4 сугерише да тренутно користи АИ алате за тестирање софтвера.
Оно што је интересантно у вези са овим статистикама је да показују да коришћење АИ алата још увек није широко распрострањено и да рани корисници и даље могу добити предност.
1. Случајеви употребе Цопилот и Генеративе АИ у тестирању софтвера и РПА
Копилоти и генеративна АИ утичу на сваку област развоја софтвера. Ево неколико начина на које технологија може помоћи у тестирању софтвера и РПА-у.
Анализа захтева
Анализа захтева је кључни део животног циклуса развоја софтвера. Процес укључује разумевање захтева заинтересованих страна и различитих функција потребних за прављење дела софтвера. Генеративна АИ може помоћи тимовима у стварању идеја тако што ће доћи до нових идеја и перспектива.
Планирање тестова
Једном када су захтеви за тестирање добро схваћени, КА тимови морају да раздвоје ствари у распоред како би осигурали адекватну покривеност тестом. Ова врста посла захтева стручност и искуство, али Генеративна АИ може да подржи тимове кроз примере и водиче, као и да да препоруке о одређеним алатима и најбољим праксама за њихове јединствене захтеве.
Креирање тест случаја
КА тимови могу да користе ЛЛМ за анализу кода, корисничких захтева и спецификација софтвера како би разумели основне односе који стоје иза система. Када АИ схвати улазе и излазе и очекивано понашање софтвера, може почети да прави тест случајеве који ће тестирати софтвер.
Предности овде превазилазе уштеду времена и ручно кодирање. Креирање АИ тест случаја такође може довести до свеобухватније покривености јер може истражити области које КА инжењери можда неће узети у обзир, што доводи до поузданијих верзија.
Проналажење и решавање грешака
Машинско учење омогућава КА професионалцима да значајно смање време потребно за лоцирање и решавање грешака. У тестирању софтвера многе грешке је лако лоцирати. Међутим, у многим сценаријима, то је напоран и дуготрајан процес. Генеративна АИ може да изврши провере за делић времена физичких радника и помогне да се истакне чак и најтврдокорније грешке. Штавише, ови алати за вештачку интелигенцију такође могу да реше грешке које идентификују, штедећи бескрајно време за КА тимове.
УИ тестирање
Генеративни АИ алати могу симулирати низ понашања корисника и интеракција са софтверским системима. Методе могу дати развојним тимовима поверење да њихов интерфејс може да се носи са широким спектром употребе људи и рачунара. Штавише, генеративна АИ такође може да анализира податке корисничког интерфејса и топлотне мапе и даје предлоге о томе како побољшати кориснички интерфејс и учинити га лакшим за коришћење.
Будућност копилота и генеративне АИ
у Тестирању софтвера и РПА
Док је данашња употреба копилота и генеративне АИ у софтверској аутоматизацији већ узбудљива, будућност обећава још више.
Будућност копилота и генеративне АИ зависи од побољшања која се могу направити у производима. Недавна студија са Универзитета Пурдуе, под насловом Ко на то боље одговара? Детаљна анализа ЦхатГПТ-а и одговора на преливање стека на питања софтверског инжењерства наглашава нека од ограничења генеративних АИ модела.
Истраживачи су дали ЦхатГПТ-у преко 500 питања из Стацк Оверфлов-а. Алат АИ је одговорио више од половине нетачно. Сада је важно напоменути да је једно од најзначајнијих проблема које су истраживачи приметили било то што је АИ најчешће подбацио јер није правилно разумео питања. Овај детаљ наглашава важност брзог инжењеринга у оквиру Генеративне АИ.
Поред тога, и Гоогле и Амазон су ове године спровели независне тестове како би погледали квалитет генеративних АИ алата у постављању питања за интервју. У оба случаја, алат је успео да одговори на тестна питања довољно добро да добије позицију, како је известио ЦНБЦ и Бусинесс Инсиде , респективно.
Дакле, јасно је да смо на тачки у овој технологији где постоји потенцијал, али неке мање ствари треба да се испеглају. Обим на којем су се ови алати побољшали последњих година даје нам поверење да ће доћи до потребног нивоа и вероватно пре рока.
Сада можемо да погледамо неке од области у којима ће ове технологије утицати на будућност тестирања развоја софтвера.
1. Хипераутоматизација
Хипераутоматизација описује одредиште у еволуцији предузећа где ће сваки процес који се може аутоматизовати бити аутоматизован. То је холистички приступ продуктивности који је веома повезан.
У смислу развоја софтвера, није тешко замислити централизовани систем са надзором над захтевима пословних процеса. Систем ће разумети и идентификовати потребе и ефикасност и стално идентификовати области које треба побољшати технологијом.
Како се предузећа развијају, ови централизовани системи ће користити генеративну вештачку интелигенцију за прављење апликација које ће аутоматски решавати уска грла и неефикасност или можда гурати одређене послове инжењерима да заврше.
2. Пројектовање софтверских архитектура
Са довољно података, АИ алати би могли да разумеју најбоље праксе софтверске архитектуре и пронађу начине да побољшају ове дизајне за максималну ефикасност. Машинско учење је проналажење образаца и односа који су изван досега људског ума.
Ако АИ алати имају довољно знања о различитим апликацијама, можемо их упутити да преокрену претходне архитектуре према новим захтевима, што ће довести до ефикасније израде или чак идеја које иначе не би биле узете у обзир.
3. Модернизација старих система
Иако ниједан софтвер никада није савршен, постоји много алата који и даље раде одличан посао и толико су дубоко уграђени у инфраструктуру компаније да их је тешко заменити. Прилагођавање ових система може бити напорно, посебно ако су написани помоћу софтверског кода који је изашао из моде.
У будућности, алати за генеративну вештачку интелигенцију ће моћи да конвертују овај код у језик рада, омогућавајући тимовима да задрже своје старе системе и, у многим случајевима, да их побољшају.
4. Побољшање развоја са ниским кодом и без кода
Један од изазова тестирања софтвера за аутоматизацију путем генеративних АИ алата који смо горе идентификовали била је ситуација у којој кодер није имао знања и искуства да верификује излаз.
АИ копилоти ће помоћи да се побољшају алати са ниским кодом давањем бољих предлога који доводе до робусних апликација. Софистицирани алати за тестирање ће омогућити људским оператерима слободну креативну владавину док стално потврђују свој рад и отварају врата нетехничким професионалцима да направе апликације које су им потребне.
Предности генеративне АИ у тестирању софтвера
Коришћење генеративне вештачке интелигенције за тестирање софтвера има многе предности које га чине атрактивном опцијом за развојне тимове који желе да раде брже, али без компромиса по питању квалитета.
1. Убрзавање животног циклуса развоја софтвера
Програмери су под сталним притиском да раде дуге сате како би осигурали да софтвер и нове функције стигну на тржиште на време. Док су Агиле/ДевОпс методологије осигурале да је развој ефикаснији, још увек постоје појединачне фазе развоја које могу имати користи од даљег унапређења.
Генеративни АИ алати омогућавају тимовима за тестирање да се позабаве различитим СДЛЦ фазама, од генерисања прототипова до УИ тестирања.
2. Свеобухватно откривање грешака
Једна од најмоћнијих примена АИ у тестирању софтвера потиче од способности технологије да упореди велике скупове података. МЛ алати могу анализирати огромне скупове података (укључујући код) да би изградили спремиште информација и очекиваних модела.
Када програмери урезују код, могу га упоредити са овим моделима, који могу истаћи неочекиване сценарије, зависности и рањивости, омогућавајући бољи код током целог процеса развоја.
3. Побољшана покривеност тестом
Алати за машинско учење су направљени да анализирају и разумеју огромне скупове података. Када се примени на тестирање софтвера, омогућава тимовима да повећају обим свог тестирања софтвера. Предности су изван пуког уклањања људског рада из једначине ради уштеде новца; АИ такође доводи до далеко свеобухватнијег типа тестирања који омогућава побољшано откривање грешака у сложеном скупу сценарија.
4. Смањени трошкови
У поређењу са запошљавањем тима КА инжењера и њиховим коришћењем за задатке тестирања софтвера који се понављају и одузимају много времена, Генеративни АИ и РПА су бржи и исплативији.
Како свет развоја софтвера постаје конкурентнији, проналажење начина да се испоруче квалитетни, трајни производи уз буџет постаје све важнији. Генеративни АИ алати и копилоти могу да смање ослањање на инжењере и да им омогуће да обављају посао заснован на вредности и доведу до мање надувених верзија.
Да ли генеративни АИ алати представљају крај
људских софтверских инжењера?
Упркос њиховим очигледним предностима, било који алат за аутоматизацију може да изазове ниво анксиозности код радника за своју будућност. Иако је ово нормална реакција, брзина и обим Генеративне АИ значе да су забринутости веће него обично. Иако ови алати имају капацитет да аутоматизују многе послове, они не могу да обаве сваки задатак који софтверски инжењери раде. Разумевање могућности технологије, као и њихових ограничења, од суштинског је значаја за инжењере и лидере.
Прва ствар коју људи треба да запамте је да алати за аутоматизацију тестирања које покреће АИ постоје на тржишту већ неко време. Међутим, природа генеративне вештачке интелигенције прилагођена кориснику чини је способним за даљу флексибилност.
Једна од првих ствари које морамо узети у обзир је да генеративна АИ најбоље функционише за излазе који се могу проверити. Ово је кључна тачка. Природа начина на који се ЛЛМ обучава значи да ће дати све од себе да вам дају одговор, чак и ако то повремено значи „халуцинирање“ чињеница, референци и аргумената.
Сада, ако имате довољно знања о кодирању, моћи ћете да прочитате и верификујете сваки текст који генеративна АИ произведе и ухватите потенцијалне грешке. Ако сте грађанин кодер који користи генеративну вештачку интелигенцију уместо да буде у стању да кодира, нећете бити толико способни да ухватите ове грешке.
Дакле, када се посматра из ове перспективе, вешти инжењери ће и даље бити критични део екосистема за развој софтвера. Од њих ће се и даље тражити да тестирају иу надзорном и у практичном смислу.
Још једно ограничење Генеративне АИ за тестирање софтвера укључује тестирање на мобилним уређајима. На пример, ЦхатГПТ је добра опција за тестирање корисничких интерфејса веб локација. Међутим, нема приступ различитим мобилним уређајима. Са толико различитих телефона и модела на тржишту, он заостаје за тренутним софтвером за аутоматизацију тестирања као што је ЗАПТЕСТ. Ни овај проблем није мања препрека. Више од половина све употребе интернета долази са мобилних телефона , а тај број се повећава сваке године.
Дакле, иако ће генеративна АИ преузети многе дужности од програмера, неће учинити ове професионалце застарелим без великих промена у инфраструктури за тестирање и могућности верификације излаза.
Последње мисли
Тестирање софтвера и РПА су на сталном путу побољшања. Како се појављују нове технологије и методе, обе дисциплине апсорбују најбоље праксе како би помогли тимовима за обезбеђење квалитета да испоруче брже и свеобухватније тестирање уз само делић цене ручног тестирања.
Иако су побољшање обима тестова и смањење људске грешке и трошкова неке од очигледнијих предности тестирања заснованог на вештачкој интелигенцији, оно такође помаже тимовима да усвоје приступ континуиране интеграције и имплементације (ЦИ/ЦД).
Са очекивањима потрошача и конкуренцијом већом него икад, Генеративе АИ нуди тимовима начин да обезбеде брзе и ефикасне тестове без угрожавања квалитета.