“Це найбільш вражаюче застосування машинного навчання, яке я коли-небудь бачив”.
Майк Крігер, співзасновник Instagram.
Слова Майка Крігера – не перебільшення. Хоча ML здатний на деякі чудові речі з точки зору аналізу даних та інсайтів, GitHub Copilot повністю змінює правила гри завдяки потенційній корисності, яку він може надати розробникам продуктів по всьому світу.
Кодування копілотів і генеративний ШІ допомагають командам отримати величезні переваги, такі як прискорення життєвого циклу розробки програмного забезпечення до немислимих досі швидкостей. Однак вплив технології на RPA та тестування програмного забезпечення – це два найцікавіші напрямки розвитку цієї дивовижної технології.
У цій статті ми розглянемо, як кодування копілотів та генеративний ШІ змінили світ тестування програмного забезпечення та RPA в сьогоденні, перш ніж дослідити їхній майбутній вплив на технології.
Копілоти та генеративний ШІ в
розробка програмного забезпечення: Підручник
Генеративний ШІ та копілоти для кодування – відносні новачки у сфері розробки програмного забезпечення. Перш ніж обговорювати їхній вплив на простір, варто поглянути на їхнє минуле і те, як вони працюють.
1. Автокодери зі штучним інтелектом
За останні кілька років великі мовні моделі (LLM) значно покращилися. Оскільки розмір наборів даних і обчислювальна потужність зростали в геометричній прогресії, якість результатів зростала.
Існує багато вертикалей, які можуть отримати вигоду від LLM. Деякі з найбільш поширених функцій включають створення тексту, зображень, відео та інших форм медіа. Однак, незважаючи на те, що ці приклади використання вражають, існують наслідки для розробників, які, можливо, набагато цікавіші.
На ринку є кілька LLM-автокодерів. Однак GitHub CoPilot, мабуть, найвідоміший і найдосконаліший. Значною мірою це пов’язано з тим, що він навчається на репозиторії GitHub. Він має доступ до мільйонів прикладів коду з відкритим вихідним кодом, найкращих практик, архітектури додатків та багато іншого, що дозволяє йому навчатися, забезпечуючи високоякісні та універсальні результати.
2. Як працюють копілоти з кодування?
Один з найпростіших способів розповісти про те, як працюють копілоти в кодуванні, – це подивитися на провідний продукт в цій галузі, GitHub CoPilot. Додаток базується на моделі ChatGPT-3 від OpenAi.
Як і ChatGPT та подібні LLM, CoPilot базується на мільярдах параметрів. Під час розробки ChatGPT-3 OpenAI почав створювати спеціальну програму кодування під назвою OpenAI Codex. Microsoft придбала ексклюзивний доступ до продукту.
Однак ключовим моментом тут є те, що Microsoft вже володіла GitHub. Якщо ви програміст, то знаєте все про GitHub. По суті, це веб-платформа, яка використовується для контролю версій і співпраці в проектах з розробки програмного забезпечення. Вони навчали OpenAI Codex на бібліотеці GitHub, яка містить мільйони рядків відкритого публічного коду з відкритим вихідним кодом.
CoPilot використовує машинне навчання для пошуку шаблонів і взаємозв’язків між рядками коду. Так само, як і ChatGPT, він дивиться на слово або рядок і обчислює ймовірність того, що буде далі, на основі величезного сховища історичних даних.
Сила ШІ-копілотів полягає в їхній здатності пропонувати фрагменти коду під час редагування розробниками. Уявіть собі, що це наддувний автодоповнювач для кодування. Коли програмісти вводять рядок коду, LLM порівнює початок цього коду зі своєю величезною бібліотекою попередніх проектів. Звідти він пропонує імовірнісні лінії та нові рядки коду.
Очевидні переваги полягають у тому, що розробники можуть заощадити неймовірну кількість часу завдяки цьому автодоповненню. Це підвищує продуктивність і, в багатьох випадках, точність коду.
3. Як щодо генеративного ШІ для кодування та розробки?
Як видно з історії CoPilot, генеративний ШІ і копілоти мають схоже коріння. Обидві технології використовують статистичну ймовірність для прогнозування того, що потрібно користувачам на основі врахованої інформації.
Однак велика різниця між програмним забезпеченням для копілотування та генеративним ШІ полягає в тому, що останній ґрунтується на підказках. Коротко кажучи, це означає, що користувачі вводять в машину набір письмових інструкцій, а вона виводить контент. Як відомо кожному, хто користувався ChatGPT або подібними програмами, вихідні дані можуть бути у вигляді тексту, зображень, відео або коду.
Отже, хоча методи, які кодувальники використовують для автоматизованого кодування, відрізняються, ми можемо об’єднати їх під загальною назвою автоматизованого або генеративного кодування за допомогою ШІ.
Еволюція тестування програмного забезпечення
Тестування програмного забезпечення швидко реагує і постійно розвивається. За кілька десятиліть вона змінилася і видозмінилася, щоб відповідати новим вимогам і використовувати технологічні досягнення.
1. Ручне тестування:
Перші дні тестування програмного забезпечення були пов’язані з ручним тестуванням. Такий вид тестування був дорогим і трудомістким, оскільки вимагав від QA-спеціалістів ретельного прочісування програмного забезпечення шляхом розробки серії тестових кейсів, запуску і запису результатів, планування виправлень і повторення процесу.
Забезпечення охоплення всіх можливих сценаріїв і ситуацій цими тестами було серйозним викликом, а якщо додати до цього час і витрати, то ручне тестування було ресурсомістким. Він також був дуже схильний до людських помилок, які посилювалися обмеженими можливостями розповсюдження, що означало, що будь-які невиявлені помилки було складно швидко виправити.
2. Скриптове тестування:
Скриптове тестування стало величезним кроком вперед для QA-спільноти. Замість того, щоб переглядати код і тестові сценарії вручну, розробники змогли писати програми, які можуть тестувати програмне забезпечення автоматично. Великим плюсом було те, що тестування стало більш ефективним і менш схильним до людських помилок. Однак досягнення цього вимагало кваліфікованого, точного та трудомісткого планування та кодування для забезпечення всебічного охоплення.
3. Автоматизація тестування:
Автоматизація тестування стала наступним етапом розвитку тестування. Такі інструменти, як ZAPTEST, змогли запропонувати кодувальникам всі переваги скриптового тестування, але без інтерфейсу без коду. Знову ж таки, значними перевагами тут були економія часу, багаторазове та адаптивне тестування, тестування інтерфейсу користувача та API, а також кросплатформенне тестування та тестування на різних пристроях.
4. Тестування на основі даних:
Тестування на основі даних стало рішенням проблеми тестування програмного забезпечення, яке обробляло різні набори даних. Знову ж таки, це форма автоматизації тестування, але цей метод передбачає створення тестових скриптів і запуск їх на заданих наборах даних. Цей тип тестування дозволив розробникам працювати швидше, ізолювати тести та скоротити час на повторення тестових кейсів.
5. Тестування генеративного ШІ:
Генеративне тестування ШІ – це найновіша інновація в тестуванні програмного забезпечення. Використовуючи LLM, команди QA можуть створювати тестові кейси та тестові дані, які допомагають прискорити процес тестування. Ці тестові кейси дуже гнучкі та легко редагуються, що допомагає розробникам повторно використовувати та перепрофілювати тести, а також значно збільшити обсяг тестування.
Сучасне використання копілотів та
Генеративний ШІ в тестуванні програмного забезпечення та RPA
Генеративний ШІ та копілоти мали великий вплив на тестування програмного забезпечення. Однак, замість того, щоб повністю замінити кодерів, ці інструменти допомогли розширити можливості тестувальників. Коротше кажучи, вони допомагають розробникам працювати швидше та ефективніше і, в багатьох випадках, підвищують якість тестування.
Опитування для розробників
Опитування розробників про переповнення стеку з 2023 року
пропонує деякі відомості про сучасне використання інструментів штучного інтелекту у спільноті розробників програмного забезпечення. Одна з найцікавіших частин опитування показала, що хоча трохи більше половини всіх розробників висловили зацікавленість в інструментах ШІ для тестування програмного забезпечення, менше 3% сказали, що довіряють цим інструментам. Більше того, лише кожен четвертий припустив, що наразі використовує інструменти штучного інтелекту для тестування програмного забезпечення.
Цікавим у цій статистиці є те, що вона показує, що використання інструментів штучного інтелекту ще не набуло широкого розповсюдження і що ранні послідовники все ще можуть отримати перевагу.
1. Приклади використання копілотного та генеративного ШІ в тестуванні програмного забезпечення та RPA
Копілоти та генеративний ШІ впливають на кожну сферу розробки програмного забезпечення. Ось кілька способів, як ця технологія може допомогти в тестуванні програмного забезпечення та RPA.
Аналіз вимог
Аналіз вимог є ключовою частиною життєвого циклу розробки програмного забезпечення. Цей процес передбачає розуміння вимог зацікавлених сторін і різних функцій, необхідних для створення програмного забезпечення. Генеративний ШІ може допомогти командам у створенні нових ідей та перспектив.
Планування тестування
Після того, як вимоги до тестів добре зрозумілі, командам QA потрібно розбити їх на графік, щоб забезпечити адекватне покриття тестів. Цей тип роботи вимагає знань і досвіду, але Generative AI може підтримати команди прикладами та інструкціями, а також надати рекомендації щодо конкретних інструментів і найкращих практик, які відповідають їхнім унікальним потребам.
Створення тестових кейсів
Команди QA можуть використовувати LLM для аналізу коду, вимог користувачів і специфікацій програмного забезпечення, щоб зрозуміти основні взаємозв’язки, що лежать в основі системи. Після того, як ШІ зрозуміє вхідні та вихідні дані, а також очікувану поведінку програмного забезпечення, він може почати створювати тестові кейси, які перевірятимуть програмне забезпечення.
Переваги тут виходять за рамки економії часу та ручного кодування. Створення тестових кейсів зі штучним інтелектом також може призвести до більш повного покриття, оскільки він може досліджувати області, які інженери з контролю якості можуть не врахувати, що призведе до більш надійних збірок.
Пошук та усунення помилок
Машинне навчання дозволяє фахівцям з контролю якості значно скоротити час, необхідний для пошуку та усунення помилок. У тестуванні програмного забезпечення багато помилок легко знайти. Однак у багатьох сценаріях це трудомісткий і тривалий процес. Генеративний ШІ може виконувати перевірки за частку часу, що витрачається на ручну роботу, і допомагає виявити навіть найвпертіші помилки. Крім того, ці інструменти ШІ можуть також виправляти виявлені ними помилки, заощаджуючи нескінченний час для команд контролю якості.
Тестування інтерфейсу
Інструменти генеративного ШІ можуть імітувати різноманітну поведінку користувачів і взаємодію з програмними системами. Ці методи можуть дати командам розробників впевненість у тому, що їхній інтерфейс може впоратися з широким спектром застосувань, пов’язаних з роботою людини з комп’ютером. Більше того, Генеративний ШІ також може аналізувати дані користувацького інтерфейсу та теплові карти і вносити пропозиції щодо того, як покращити інтерфейс і зробити його більш зручним для користувача.
Майбутнє пілотів і генеративного ШІ
в галузі тестування програмного забезпечення та RPA
Хоча сьогоднішнє використання копілотів і генеративного ШІ в автоматизації програмного забезпечення вже викликає захоплення, майбутнє обіцяє ще більше.
Майбутнє копілота і генеративного ШІ залежить від удосконалень, які можна внести в ці продукти. Нещодавнє дослідження Університету Пердью під назвою Хто відповідає на нього краще? Поглиблений аналіз ChatGPT та переповнення стеку – відповіді на питання програмної інженерії підкреслює деякі обмеження моделей генеративного ШІ.
Дослідники задали ChatGPT понад 500 запитань зі Stack Overflow. ШІ-інструмент відповів більш ніж у половині випадків неточно. Важливо зазначити, що однією з найважливіших проблем, яку відзначили дослідники, було те, що ШІ найчастіше зазнавав невдач через те, що не розумів запитання належним чином. Ця деталь підкреслює важливість швидкого інжинірингу в рамках генеративного ШІ.
Крім того, цього року Google і Amazon провели незалежні тести, щоб оцінити якість інструментів генеративного ШІ при складанні запитань для інтерв’ю. В обох випадках інструменту вдалося відповісти на питання тесту достатньо добре, щоб отримати посаду, як повідомляють
CNBC
та
Business Inside
відповідно.
Отже, зрозуміло, що ми перебуваємо на тому етапі розвитку цієї технології, коли потенціал є, але деякі дрібні моменти потребують доопрацювання. Масштаби вдосконалення цих інструментів за останні роки дають нам впевненість у тому, що вони досягнуть необхідного рівня і, можливо, навіть раніше запланованого терміну.
Тепер ми можемо поглянути на деякі сфери, в яких ці технології вплинуть на майбутнє тестування розробки програмного забезпечення.
1. Гіперавтоматизація
Гіперавтоматизація описує пункт призначення в розвитку підприємства, де кожен процес, який можна автоматизувати, буде автоматизовано. Це цілісний підхід до продуктивності, який є дуже взаємопов’язаним.
З точки зору розробки програмного забезпечення, не важко уявити централізовану систему з наглядом за вимогами бізнес-процесів. Система буде розуміти і визначати потреби та ефективність, а також постійно виявляти сфери, які потребують вдосконалення за допомогою технологій.
З розвитком бізнесу ці централізовані системи використовуватимуть генеративний ШІ для створення додатків, які автоматично усувають вузькі місця та неефективність або, можливо, передають певні завдання інженерам для виконання.
2. Проектування архітектури програмного забезпечення
Маючи достатньо даних, інструменти штучного інтелекту можуть зрозуміти найкращі практики архітектури програмного забезпечення та знайти способи покращити ці проекти для досягнення максимальної ефективності. Машинне навчання – це пошук закономірностей і взаємозв’язків, які виходять за рамки людського розуму.
Якщо інструменти ШІ володіють достатніми знаннями про різноманітні додатки, ми можемо доручити їм пристосувати попередні архітектури до нових вимог, що призведе до більш ефективних збірок або навіть до ідей, які в іншому випадку не були б розглянуті.
3. Модернізація застарілих систем
Хоча жодне програмне забезпечення не буває досконалим, є багато інструментів, які чудово виконують свою роботу і настільки глибоко вкорінені в інфраструктуру компанії, що їх важко замінити. Адаптація цих систем може бути рутинною роботою, особливо якщо вони були написані з використанням програмного коду, який вийшов з моди.
У майбутньому інструменти генеративного ШІ зможуть перетворювати цей код на сучасну мову, що дозволить командам зберегти свої застарілі системи і, в багатьох випадках, покращити їх.
4. Підвищення рівня низькокодової та безкодової розробки
Однією з проблем автоматизації тестування програмного забезпечення за допомогою інструментів генеративного ШІ, яку ми визначили вище, була ситуація, коли кодеру не вистачало знань і досвіду для перевірки вихідних даних.
Копілоти зі штучним інтелектом допоможуть вдосконалити інструменти з низьким рівнем коду, вносячи кращі пропозиції, які призводять до створення надійних додатків. Складні інструменти тестування дозволять людям-операторам вільно творити, постійно перевіряючи їхню роботу і відкриваючи двері нетехнічним фахівцям для створення необхідних їм додатків.
Переваги генеративного ШІ в тестуванні програмного забезпечення
Використання генеративного ШІ для тестування програмного забезпечення має багато переваг, які роблять його привабливим варіантом для команд розробників, які хочуть працювати швидше, але без шкоди для якості.
1. Прискорення життєвого циклу розробки програмного забезпечення
Розробники перебувають під постійним тиском, змушені працювати довгі години, щоб гарантувати, що програмне забезпечення та нові функції потраплять на ринок вчасно. Хоча методології Agile/DevOps забезпечили підвищення ефективності розробки, все ще існують окремі етапи розробки, які можуть отримати вигоду від подальшої оптимізації.
Інструменти генеративного ШІ дозволяють командам тестувальників працювати на різних етапах SDLC, від створення прототипів до тестування інтерфейсу користувача.
2. Комплексне виявлення помилок
Одне з найпотужніших застосувань ШІ в тестуванні програмного забезпечення пов’язане зі здатністю технології порівнювати великі набори даних. Інструменти ML можуть аналізувати великі масиви даних (включно з кодом) для створення сховища інформації та очікуваних моделей.
Коли розробники фіксують код, вони можуть порівняти його з цими моделями, які можуть виявити несподівані сценарії, залежності та вразливості, що дозволяє покращити код протягом усього процесу розробки.
3. Покращене покриття тестів
Інструменти машинного навчання створені для аналізу та розуміння величезних масивів даних. У застосуванні до тестування програмного забезпечення він дозволяє командам збільшити обсяг тестування програмного забезпечення. Переваги не обмежуються лише виключенням людської праці з рівняння для економії коштів; ШІ також призводить до набагато більш комплексного типу тестування, що дозволяє покращити виявлення помилок у складному наборі сценаріїв.
4. Зниження витрат
У порівнянні з наймом команди QA-інженерів і використанням їх для повторюваних і трудомістких завдань з тестування програмного забезпечення, генеративний ШІ і RPA працюють швидше і економічно ефективніше.
Оскільки світ розробки програмного забезпечення стає все більш конкурентним, пошук шляхів створення якісних, довговічних продуктів в рамках бюджету набуває все більшого значення. Інструменти генеративного ШІ та копілоти можуть зменшити залежність від інженерів і дозволити їм виконувати роботу, що має цінність, а також призвести до менш роздутих збірок.
Чи означають інструменти генеративного ШІ кінець?
людей-інженерів-програмістів?
Незважаючи на свої очевидні переваги, будь-який інструмент автоматизації може викликати у працівників певний рівень тривоги за своє майбутнє. Хоча це нормальна реакція, швидкість і масштаби генеративного ШІ означають, що побоювання є більш серйозними, ніж зазвичай. Хоча ці інструменти здатні автоматизувати багато завдань, вони не можуть виконати кожне завдання, яке виконують інженери-програмісти. Розуміння можливостей технологій, а також їхніх обмежень є важливим для інженерів та керівників.
Перше, що потрібно пам’ятати, це те, що інструменти автоматизації тестування на основі ШІ існують на ринку вже досить давно. Однак дружній до користувача характер генеративного ШІ робить його здатним до подальшої гнучкості.
Перше, що ми повинні врахувати, це те, що генеративний ШІ найкраще працює для результатів, які можна перевірити. Це ключовий момент. Характер підготовки магістрів права означає, що вони зроблять все можливе, щоб дати вам відповідь, навіть якщо це іноді означає “галюцинацію” фактів, посилань та аргументів.
Тепер, якщо ви володієте достатніми знаннями з програмування, ви зможете прочитати і перевірити будь-який текст, який виводить Генеративний ШІ, і виявити потенційні помилки. Якщо ви кодер-громадянин, який використовує генеративний ШІ замість того, щоб вміти кодувати, ви не зможете вчасно помітити ці помилки.
Отже, якщо дивитися з цієї точки зору, кваліфіковані інженери все ще залишатимуться важливою частиною екосистеми розробки програмного забезпечення. Вони все одно будуть зобов’язані проводити тестування як у наглядовому, так і в практичному сенсі.
Ще одним обмеженням генеративного ШІ для тестування програмного забезпечення є мобільне тестування. Наприклад, ChatGPT є хорошим варіантом для тестування інтерфейсів веб-сайтів. Однак він не має доступу до різних мобільних пристроїв. З такою великою кількістю різних телефонів і моделей на ринку, він відстає від сучасного програмного забезпечення для автоматизації тестування, такого як ZAPTEST. Ця проблема також не є незначною перешкодою. Більше, ніж
половина всього користування інтернетом припадає на мобільні пристрої
і ця цифра зростає з кожним роком.
Отже, хоча генеративний ШІ візьме на себе багато обов’язків розробників, він не зробить цих фахівців застарілими без значних змін в інфраструктурі тестування та здатності перевіряти вихідні дані.
Заключні думки
Тестування програмного забезпечення та RPA постійно вдосконалюються. З появою нових технологій і методів обидві дисципліни вбирають у себе найкращі практики, щоб допомогти командам QA проводити більш швидке і всебічне тестування за меншу ціну, ніж ручне тестування.
Попри те, що розширення обсягу тестів, зменшення людських помилок і витрат є одними з найбільш очевидних переваг тестування з використанням ШІ, він також допомагає командам застосовувати підхід безперервної інтеграції та конвеєрів розгортання (CI/CD).
В умовах, коли очікування споживачів і конкуренція вищі, ніж будь-коли, Генеративний ШІ пропонує командам спосіб проводити швидкі та ефективні тести без шкоди для якості.