Як ефективно використовувати AI у тестуванні та де цьому навчитись

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Мене звати Галина Захарова, і я працюю Middle QA Engineer в ІТ-компанії Customertimes. Ви вже могли читати мої статті на DOU про те, як я шукала роботу в ІТ, як пройшов мій перший рік в ІТ, як мануальному тестувальнику уникнути рутинності та зберегти ефективність в роботі, а також про техніки тест-дизайну для «чайників».

У цій статті поговоримо про АІ не тільки у розробці, а й в тестуванні. А саме:

— На які нейронні мережі варто звернути увагу.

— Як розвивається ринок ІТ через штучний інтелект.

— Де навчитись використовувати його на свою користь.

Практики використання AI у тестуванні

Автоматизація тестів. ШІ використовується для автоматизації рутинних завдань тестування, таких як генерування тест-кейсів, виконання тестів, аналіз результатів. Це звільняє час для складніших завдань.

Аналіз тестових даних. AI може аналізувати великі обсяги тестових даних для виявлення закономірностей, аномалій та потенційних проблем. Це допомагає передбачати помилки та покращити загальну якість програмного забезпечення.

Віртуальні помічники для тестування. AI-помічники можуть надавати інформацію та підтримку в режимі реального часу, допомагаючи швидше та ефективніше виконувати свою роботу.

Я була на конференції Salesforce, де презентували такого помічника. Він здатен, зокрема, робити таку роботу: підтягнути необхідні документи, надати вижимку інформації, створити документ на підписання, нагадати про зустріч тощо. Все залежить від того, як його налаштувати.

Фото з конференції Salesforce

Інтелектуальне генерування тестів. AI-алгоритми можуть генерувати тести на основі розуміння коду, історії помилок та інших даних. Це допомагає охопити ширший спектр сценаріїв тестування. Я використовувала AI для написання тестів у Postman. Просила розібрати за частинами те чи інше значення. Адже тоді я тільки вчилась і логіка не була зрозуміла до кінця.

Можна також просити AI написати, які тестові сценарії можливі. Відібрати найбільш відповідні й за ними вже самостійно розписати деталі. Це економить час.

На скриншотах можна побачити деякі з моїх запитів. ChatGPT надає настільки розгорнуті відповіді, що все на них не влізло :)

Тестування локалізації. AI може допомогти з автоматизацією тестування локалізованого програмного забезпечення, щоб переконатися, що його правильно перекладено та адаптовано для різних культур.

Створення документації. Автоматичне створення документації з програмного забезпечення — ще одна перевага AI, що заощаджує час та ресурси розробників і тестувальників. Важливо пам’ятати: що більше вхідної інформації ви дасте, то кращий результат отримаєте.

На початку використання AI я давала не надто точні вказівки. Відповідно, результат був не дуже. Але зараз пишу максимально детальну інструкцію та отримую саме те, що мені потрібно, з невеликими правками (ще не досягла рівня, коли ми тотально на одній хвилі :).

Тестування доступності. AI допомагає з автоматизацією тестування програмного забезпечення на предмет доступності, щоб переконатися, що люди з обмеженими можливостями можуть ним користуватися.

Це не всі приклади, але їх достатньо, щоб зрозуміти, як AI може полегшити життя тестувальникам вже зараз. Але він дуже стрімко розвивається, тому функцій, які можна буде частково делегувати, ставатиме все більше.

Які нейронки можна використовувати

Це все — безплатні мовні моделі, які допоможуть вам у роботі.

Mistral

— Спеціально розроблена для тестування програмного забезпечення.

— Автоматично генерує тести, виконує їх та аналізує результати.

— Може використовуватися для різних типів тестування, включно з регресійним тестуванням, тестуванням на проникнення та тестуванням продуктивності.

ChatGPT

— Легка у використанні, має зрозумілий інтерфейс.

— Здатна перекладати мови, писати різні види творчого контенту та відповідати на запитання.

— Може генерувати багато варіантів тексту на одну тему.

— Використовується для чат-ботів, створення контенту, досліджень та освіти.

Gemini

— Генерує текст, перекладає мови, створює творчий контент та відповідає на запитання.

— Підходить для автоматизації завдань: аналізу тексту чи його узагальнення.

— Швидша та точніша за ChatGPT.

Claude 3

— Також перекладає мови, генерує текст та різні види творчого контенту, відповідає на запитання.

— Може генерувати вірші, код, сценарії, музичні твори, електронні листи тощо.

— Може змістовно відповідати на питання, навіть якщо вони відверті, складні або дивні.

Тестуємо однакове завдання на чотирьох AI

Порівняймо нейронки на простому прикладі — написання тест-кейсу. Я дам однакове завдання Claude 3, Gemini, ChatGPT та Mistral.

Задача виглядає так:
«Привіт. Мені потрібно написати тест-кейс по наступному функціоналу:
— реєстрація на сайті Розетка.
— Вхід на сайт Розетка.
Сайт: rozetka.com.ua/ua»

Gemini:

ChatGPT:

Claud3:

Mistral:

Подивимось, яка нейронна мережа продемонструвала кращий результат.

Gemini.Впоралася добре, запропонувала не тільки задані тест-кейси, але й тест-кейси з негативним сценарієм. Всього вийшло чотири тест-кейси. Також надала ідеї для додаткових перевірок, список інструментів для тестування, нагадала про звіт тестування. Браво!

ChatGPT. Впоралася добре. Як і Gemini, надала чотири варіанти тест-кейсів — два позитивних та два негативних сценарії.

Claud3. Мені не сподобалось, що ця нейронка писала в тест-кейсах «Ті самі кроки, що й в попередньому тест-кейсі». Тест-кейси так не пишуться. Тобто ми маємо ще самостійно додати кроки, щоб тест-кейс виглядав коректно. А це вже додатковий час, не вийде просто скопіювати та вставити.

Mistral. Впоралась добре, але не вийшла за рамки заданої задачі, не запропонувала інші варіанти. Потрібна була підказка, що мають бути два різні тест-кейси. А ця нейронка зліпила реєстрацію та вхід в один великий тест-кейс, не дотрималась структури тест-кейсу з самого початку (назва, передумова, кроки, очікуваний результат).

Не дивлячись на те, що Mistral позиціонується як нейронка для ІТ, її конкуренти ChatGPT та Gemini не відстають. Якщо дивитися за повнотою відповіді, рейтинг буде наступний:

  1. Gemini
  2. ChatGPT
  3. Mistral
  4. Claud3

Згодні з цим? Напишіть у коментарях :)

Куди йде AI та чого очікувати у майбутньому

Обсяг світового ринку тестування з використанням AI у 2022 році оцінювався в 414,7 мільйона доларів США. Очікується, що сукупний річний темп зростання складе 18,4% з 2023 по 2030 рік.

Великі гравці пропонують рішення для тестування з використанням AI. Наприклад, Deep Test від Google — інструмент тестування на базі AI, який використовує машинне навчання (ML) для створення тестових прикладів та їх автоматичного виконання у вебзастосунках. Він спрямований на покращення покриття тестами та зменшення зусиль, необхідних для створення тестових прикладів.

Малі та середні підприємства часто використовують послуги тестування AI для оцінки ефективності програм. Для них послуги AI з тестування мають безліч переваг: нижчі витрати, більша ефективність та покращення користувальницького досвіду.

Використання рішень для автоматизації на основі штучного інтелекту допомагає їхній бізнесовій діяльності на всіх етапах її реалізації, що дає змогу не починати щоразу з нуля.

Очікується, що зростання ринку тестування з використанням AI буде стимулюватися низкою факторів, включно зі зростальною потребою в автоматизації тестування програмного забезпечення та збільшенням інвестицій у розробку інструментів тестування на основі AI.

Погляньмо на аналітику використання AI. Це узагальнена картина й хибно думати, що в Україні цього ще немає — штучний інтелект набирає оберти і вже є у нас. Через те, що багато ІТ-компаній працюють із закордонними партнерами, нам варто поспішити опанувати AI у своїй роботі, щоб не випасти з ринку.

Що робити з AI тестувальникам

AI допомагає стати більш потрібним. Попит на тестувальників, які володіють навичками роботи з AI, зростає. Я вже проходжу курси з вивчення роботи штучного інтелекту, щоб виконувати свою роботу ефективніше та швидше.

AI допомагає вчитись. Зазвичай ми все гуглимо, але вести бесіду з AI простіше. Він одразу дає потрібну інформацію (ну ок, може не одразу, але якщо правильно ставити питання — з першого разу). Це значно економить час, повірте мені.

Ви могли бачити, як я використовувала AI для задач у Postman — впорався на відмінно. Також я використовую штучний інтелект, коли не хочу досліджувати декілька ресурсів для повноти інформації. Наприклад, коли я готувалась до грейдування на роботі, треба було повторити багато теорії та деяку практику, а щось довчити. Щоб зекономити час, я написала AI план навчання і попросила надати розгорнуті відповіді щодо кожної теми.

AI допомагає менторити ефективніше. А саме — навчати та наставляти нових тестувальників. Можна попросити нейронку скласти програму навчання, підібрати ресурси, розрахувати кількість часу, яка знадобиться для вивчення всього і так далі.

У підсумку хочу сказати — варто не опускати руки та розуміти, що AI не замінить людину. Бо ніхто не скасовував людський досвід, судження, навички розв’язання проблем.

Тестувальники все ще будуть потрібні, щоб керувати процесами тестування, приймати рішення щодо того, які тести проводити, та аналізувати результати. Проте ми бачимо у статистиці, що попит на інструменти AI зростатиме, тому варто не зволікати та вже зараз вчитись використовувати його у своїй роботі.

А де цьому навчитись? Я підібрала декілька курсів, які вам у цьому допоможуть. Всі вони безплатні та доступні українською й англійською. Я пройшла їх особисто, тож поділюсь розгорнутим фідбеком.

Де навчатись використання AI для своєї роботи

Курс Основи AI від Google. Для новачків у темі та підприємців. Наприкінці кожного модулю є підсумковий тест. Щоб отримати сертифікат, потрібно відповісти на 70% питань правильно та продивитись 90% курсу (прискорити відео неможливо). Уроки без води та дуже інформативні.

Також є воркбук на 53 сторінки А4, в якому зібрана досить детальна вижимка з уроків. Можна робити власні помітки та виконувати завдання для закріплення матеріалу.

Після завершення курсу сертифікат не видається автоматично. Потрібно заповнити форму, де є питання про враження від пройденого матеріалу. Після цього заявку обробляють і мають надіслати сертифікат (я поки чекаю на нього).

Цей курс — мій особистий фаворит, адже в ньому зібрані лекції за різними сферами (ресторанний бізнес, навчання, агрокультура тощо). Автори розказали про машинне навчання, як правильно до нього підходити й чи взагалі потрібно це бізнесу. Лекції ведуть різні спеціалісти, кожен — профі у своїй сфері.

Курс Початок роботи з ChatGPT. Досить обʼємний курс для новачків, багато теорії. Після уроків є практичні завдання, щоб її закріпити:

Майже після кожного уроку є додаткові матеріали на тему:

Наприкінці курсу за результатами проходження тестів видається сертифікат, треба набрати 60 балів.

Курс ChatGPT для підвищення власної ефективності. Для новачків. Містить короткі навчальні відео без зайвої води. Під час перегляду можна робити нотатки:

Після кожного уроку є коротенькі тести для закріплення знань:

Наприкінці курсу на вас чекатиме фінальне тестування з 10 питань, які ви вже проходили у попередніх уроках. Після успішного складання іспиту отримаєте сертифікат:

Корисні матеріали

👍ПодобаєтьсяСподобалось12
До обраногоВ обраному12
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Це Гарні приклади, я вже давно використовую АІ в автоматизованому тестуванні, але все гарно, допоки таски плюс мінус стандартні. Як тільки щось виходить за межі простих сценаріїв (натисни кнопочку)
То чат гпт, клауд — відвалюється.

і їх ідеї вже треба допилювати, або ще щось.
Взагалі з досвіду — ці аі краще підходять для рефакторінгу, чи допомоги в дебагу. Ніж для повної заміни даних.

С биг дата тоже не очень работает

Приведіть, будь ласка, живий приклад як тестувати локалізацію за допомогою ШІ. Це буде дуже корисно. Дякую

Вітаю
Якщо розглядати інструменти для тестування локалізації, то Crowdin один з найпростіших та його можна опанувати поза робочим проєктом (я так робила, бо в мене немає тестування локалізації на проєкті), там є 30-денний безкоштовний період. потрібно:
1) зареєструватись
2) створити свій проєкт (публічний або приватний може бути)
3) обрати мову перекладу
4) завантажити потрібні файли
5) можна зробити інтеграцію з різними системами, такими як GitHub, Bitbucket, Google Drive тощо, це допоможе автоматизувати завантаження та оновлення файлів
6) можна додати декілька людей до проєкту, щоб ті могли оцінити роботу (по суті це тестувальники)
7) Але Crowdin пропонує власні інструменти для автоматичної перевірки якості перекладів:
— перевірка термінології
— перевірка довжини рядків
— перевірка форматування
8) Тестувальник дає фінальне слово чи ок чи ні, якщо затверджено, то можна або руками все вивантажити, або через інтеграцію з системами це автоматично робити

Функціонал широкий насправді, можна надовго застрягти з вивченням того всього. Там і статистика є, і можна вносити різні правки тощо. Посилання на платформу: crowdin.com

При использовании ИИ для тестирования автоматического перевода текстов интерфейса приложения или веб-сайта. Например, если применить API таких сервисов, как Google Translate или DeepL, чтобы быстро получить переведенные тексты, токены чата гопоты не пообрезаются. Будут ли какие-то ограничения в бесплатном тарифе, при решении данного класса задач. Да и ответьте как сгенерить 100000 пользователей используя чат гопоты? Наверняка вы решали подобные задачи при тестировании.

Як згенерувати 100 000 користувачів — не знаю, максимум 100 створювала через Постман під робочу задачу. На 100 000 не виникало потреби.

Якщо казати про ту програму, що я вище написала

crowdin.com

то тут воно працює норм, можна обрати, який ресурс підключити, щоб перекладало. Хоч гугл транслейт, хоч джипіті. 30 днів і дається, щоб все попробувати там, а далі вже платно весь функціонал буде. Про інше не підкажу, програм багато, в кожній по своєму.

А как же хайлоад? Там просто апиха есть, в Аи можно допилить плагин, а уж апосля... Во общем тестировщики не сильно будут нужны, или тестировщик+ промптинженер..

На проєкті не було навантажувального тестування, тому і потреби не було вирішувати таку задачу, все банально)

Велика подяка за цікавий матеріал
Вміння працювати з AI-інструментами — одна з вимог до тестувальника, що зустрічається дедалі частіше
У статті згадувалося про Deep Test від Google
Хотілося б уточнити: Deep Test — це один із модулів у якомусь рішенні?

Вітаю, Олексію)
Дякую за фідбек, мені дуже приємно, що стаття була корисною))

Deep Test від Google — це розробка від Google DeepMind, воно не є чимось окремим, а застосовується у купі з іншими програмами. Але саме Deep Test (на базі АІ) відповідає за створення тестових прикладів та їх автоматичного виконання у вебзастосунках.

Есть в чате те, кто уже писал плагины для AI?

Хлопцы кто знает, как с AI сгенерировать джейсон с 1000 данных, например в чате гопоты или копилоте?

промпт: “Please write a function that creates a JSON array of 1000 objects of this structure: { id, firstname, lastname, email and age }”

аутпут:

const people = [];
for (let i = 1; i <= 1000; i++) {
  people.push({
    id: i,
    firstName: `FirstName${i}`,
    lastName: `LastName${i}`,
    age: Math.floor(Math.random() * 60) + 18, // random age between 18 and 77
    email: `person${i}@example.com`
  });
}
console.log(JSON.stringify(people, null, 2))

Спасибо, я имел чуток другое, что бы когда ему пишешь промпт, он генерил 1000 записей, так больше 10 у меня не получалось.

економлять токени) але все-таки, цю таску

как с AI сгенерировать джейсон с 1000 данных

ми закрили :)

function* generatePeople() {
  for (let i = 1; i <= 1000; i++) {
    yield {
      id: i,
      firstName: `FirstName${i}`,
      lastName: `LastName${i}`,
      age: Math.floor(Math.random() * 60) + 18, // random age between 18 and 77
      email: `person${i}@example.com`
    };
  }
}

async function createPeople() {
  const people = [];
  const generator = generatePeople();

  for await (const person of generator) {
    people.push(person);
  }

  console.log(JSON.stringify(people, null, 2));
}

createPeople();
Переписал Ваш код, добавил генераторы(т.к сильно много пиплов будет генерить), поэтому данный код будет, более эффективен в использовании памяти, так как генераторы создают значения по мере необходимости и не хранят все значения в памяти одновременно, можно обращаться к итератору по мере выполнения кода. И еще добавил асинхронные операции шё будут выполняться параллельно, это также позволяет улучшить производительность приложения при выполнении нескольких задач, это и так понятно. Хотя думаю есть варианты и получше... Хлопцы если кто знает как оптимизировать этот код напишите сюдою...
как оптимизировать этот код

зачем?

добавил генераторы ... более эффективен в использовании памяти

в данном случае не должно быть разницы, память занимает массив people, а больше ничего нет, что в цикле, что в генераторе. Это если б файле был список пользователей и был вопрос прочитать его целиком в память и перебрать или в генераторе читать построчно/небольшими_блоками, тогда можно было говорить про память.

В данном случае, когда мы генерируем массив из 1000 объектов, разница между циклом и генераторами будет незаметна. Однако, если количество объектов хлопцы, будет очень большим (например, миллионы), то использование генераторов может помочь сэкономить память. Кроме того, если данные генерируются на сервере или читаются из файла, то оптимизация становится более важной, чтобы избежать перегрузки памяти и обеспечить быстрый отклик приложения. В любом случае спасибо за Ваш комментарий.

В тeории правильно говоришь, но на практикe — вот в этом примeрe вышe, гeнeратор нe даёт никаких прeимущeств. Потому что в память (массив people) и так добавляются всe данныe (c гeнeратором тожe).

Я же внизу написал, на 122-ой нас так заставляют делать. Я просто жизнь немного хотел себе облегчить, но чат гопоты больше 10 юзеров не генерит, хоть кол на нем чеши. Поэтому и обратился к экспертам ДОУ. Даже с чатом гопоты, использование мозгов еще никто пока не отменял...

Ну ты ж учишься, вот я и пытаюсь сказать что в данном cлучаe yield нe помогаeт. Он в циклe для оптимизации поможeт, когда изначально что-то большоe загружаeтся в память, а с ним можно обрабатывать частями. Здeсь нeт больших начальных данных, eсть тe, что копятся в процeссe и eсли оптимизировать, то их. Сonsole.log это слишком исскуствeнный конeчный рeзультат, скорee рeзультат это сохранить в файл или отправить в stream. И eсли итeраций 100500 миллионов, то накапливать всё и вызывать JSON.stringify() нe вариант (оно просто в память нe влeзeт), нужно каждыe N-итeраций сбрасывать сохраннёныe данныe и очищать буфeр.

Код должен быть универсален, если записей будет 1000000000 то код не прийдется уже переписывать. Насколько я знаю, это мастхев при работе с БД.

віддайте цей код джіпіті і спитайте у нього, які ідеї щоб це оптимізувати :)
в нього точно буде пару варіантів, зможете щось неочевидне вибрати)

Спасибо, за Ваш комментарий, нас на 122-ой учили, шё больше 100 то уже генераторы, работают когда лабу сдавал, пришлось переписывать, они тоже разные есть, но я некоем случае не утверждаю, что мой код оптимален. Пишите хлопцы замечания, с удовольствием почитаю. Критика приветствуется, особенно если она конструктивная. Чат ГПТ выпаливается...

function* generatePeople() {
for (let i = 1; i <= 1000; i++) {
yield {
id: i,
firstName: `FirstName${i}`,
lastName: `LastName${i}`,
age: Math.floor(Math.random() * 60) + 18, // random age between 18 and 77
email: `person${i}@example.com`
};
}
}

async function createPeople(signal) {
const people = [];
const generator = generatePeople();

try {
for await (const person of generator) {
if (signal.aborted) {
throw new Error(’Operation aborted’);
}
people.push(person);
// Имитация асинхронной операции
await new Promise(resolve => setTimeout(resolve, 10));
}
console.log(JSON.stringify(people, null, 2));
} catch (error) {
if (error.name === ’AbortError’) {
console.log(’Operation was aborted’);
} else {
console.error(’An error occurred:’, error);
}
}
}

// Использование
const controller = new AbortController();
const signal = controller.signal;

createPeople(signal);

// Пример прерывания операции через 2 секунды
setTimeout(() => {
controller.abort();
}, 2000);

Вот перепсал с сигналами, вроде сейчас так асинхоронщина пишиться, была изменена функция createPeople теперь принимает signal в качестве параметра.
Внутри цикла for await мы проверяем signal.aborted перед каждой итерацией. Если сигнал прерван, мы выбрасываем ошибку.Добавлена имитация асинхронной операции с помощью setTimeout, чтобы продемонстрировать возможность прерывания длительных операций.Весь код обернут в блок try-catch для обработки ошибок, включая ошибку прерывания. Создан экземпляр AbortController и получен signal. Добавлен пример прерывания операции через 2 секунды с помощью setTimeout и controller.abort().
Вообщем хлопцы, тут уже никчему не докопаешься, даже если захочешь, я код имею ввиду.

купити пдписку на chatgpt :)

Підписатись на коментарі