Готова посперечатися, що кожен тестувальник і розробник відчував неймовірне захоплення перед першою роботою зі штучним інтелектом. Так само було і в мене. Однак романтичні очікування швидко натрапили на непробивну стіну реальності. Одного разу моїй команді довелося тестувати самонавчальний алгоритм. Від самого початку на нас чекало багато несподіванок.
У цій статті я хочу поділитися досвідом і викликами, з якими стикнулася разом з QA Lead Іриною Смердовою. Я розповім, як ми налаштували процес тестування так, щоб усе пройшло якомога ефективніше та комфортніше. Матеріал буде корисний усім, хто цікавиться впровадженням штучного інтелекту в реальний софт.
Для прикладу візьмемо мобільний застосунок для знайомств. Це гіпотетичний кейс, але він повністю відображає всі труднощі, з якими ми стикнулися у реальному проєкті. В основі нашого уявного застосунку — самонавчальний алгоритм, який порівнює дані користувачів і на підставі їх унікальних характеристик виносить вердикт: чи підходять люди одне одному, а також надає оцінку збігу у відсотках.
Ми очікували, що одразу матимемо доступ до алгоритму роботи штучного інтелекту та, виходячи з цього, розберемося, як він працює. Однак наш Product Owner придбав цей алгоритм у третьої сторони, тому вибір рішення для штучного інтелекту був винятковим бажанням клієнта. Так в умовах нашої співпраці з’явилося NDA від провайдера штучного інтелекту.
Оскільки наш замовник не мав права поділитися з нами ні кодом, ні принципами роботи алгоритму, цей ШІ для нас виявився чорною скринькою.
Щоб наш самонавчальний алгоритм працював на основі штучного інтелекту, його спочатку необхідно… правильно — навчити! Робити це нам потрібно було вручну за допомогою безлічі кейсів і сетів вхідних даних. Ми цілком серйозно розраховували на видачу адекватних результатів від програми, яка вміє думати. Однак на практиці наш інструмент зовсім не відслідковував адекватність встановлених нами даних. З цим теж треба було щось робити.
Отже, що ми маємо: застосунок, який думає та незрозуміло як ухвалює рішення і при цьому претендує на те, щоб ми його розуміли.
На вхід до системи подавалися анкети користувачів. Потім система аналізувала ці дані і, керуючись своїми алгоритмами на основі штучного інтелекту (та сама чорна скринька), видавала результат збігу: відмова (збігу не виявлено) або наявність збігу (результат вказувався у відсотковому співвідношенні).
Далі приєднувався користувач: роздивлявся результат, який йому запропонувала програма, і схвалював його або відхиляв. У разі відмови система мала реагувати на незгоду користувача з її рішенням, запам’ятати це і навчитися більше не виносити помилкових відповідей.
Але як саме система виносила свій вердикт, нам було невідомо.
Щоб полегшити собі тестування системи на базі штучного інтелекту, ще на етапі планування процесу зверніть увагу на такі аспекти:
Повернемось до нашого прикладу. У вимогах не йшлося про алгоритм, завдяки якому система ухвалює рішення. У технічній документації згадувалися лише загальні дані щодо UI. Жодним чином не був описаний user flow — сценарій взаємодії користувача з системою.
User flow наочно ілюстрував би порядок дій, необхідний для коректної роботи застосунку.
Сценарій «Користувач виконує дію X, система відповідає дією Y… і все працює» — цілковито не відповідав тому, з чим ми зіткнулися.
Наведені в документації формули відображали абстрактні принципи роботи штучного інтелекту. Документований алгоритм інтеграції теж не приніс нам користі. На практиці особливості роботи інтеграції довелося з’ясовувати через прогін тест-кейсів і складання статистики, виходячи з отриманих результатів.
Наша порада: коли читаєте вимоги до розробки, будьте готові, що вони можуть не мати нічого спільного з тим, як усе працює насправді. У такому разі вам доведеться багато чого робити вручну.
Перш ніж розпочати тестування ПЗ з елементами штучного інтелекту, переконайтеся, що у вас:
У нашому випадку він розпочався з повного абсурду:
Подібні системи не підходять для розглядання будь-яких крайніх параметрів, адже вони спираються на середні значення. Тому активне використання тестів, які базуються на граничних показниках, дають протилежний результат у контексті правильного навчання програми.
Звідси висновок: використання негативних тестів для самонавчених алгоритмів потрібно мінімізувати, довівши їх до одного-двох.
У процесі тестування ми виділили декілька важливих аспектів. Радимо вам врахувати ці моменті у своїй роботі:
Перш ніж передавати продукт у продакшн, переконайтеся, що ви дотримались наступних умов:
Тестування програмного забезпечення на основі штучного інтелекту у нашому випадку принесло нам багато несподіванок. Ймовірно, ми забагато очікували від продукту, зовсім забувши про один нюанс: самонавчальні системи завжди працюють так, як ти їх навчиш. Щойно ми зрозуміли принцип дії цього бумерангу, він одразу ж повернувся до нас із добрими новинами. Продукт був успішно схвалений замовником, вийшов на ринок і досі підтримується.
Днями я завзято нила про щось ChatGPT (експериментую між сеансами з живим терапевтом). І от…
«Крутіть колесо, щоб отримати знижку до 50%!» «Натисніть тут, щоб відкрити таємничу пропозицію!» «Зареєструйтесь зараз,…
Дуже хочеться робити якісь десктопні апки. Сумую за часами коли всі програми були offline-first, і…
Надсилаючи криптовалюту, багато новачків ставлять запитання: як працюють комісії та чому вони відрізняються в різних…
Нова афера набирає обертів — ось детальний розбір того, як фальшиві потенційні роботодавці намагаються вкрасти…
Соцмережа з можливістю вбудовувати повноцінні додатки прямо в пости — звучить як фантастика, але Farcaster…