Як я використовую штучний інтелект, або Невтомний Шерлок Холмс для QA Engineer
Привіт, мене звати Марина Долгальова, я працюю в Forte Group на позиції QA Engineer.
Моя робота часто схожа на розв’язання головоломки, де всі елементи важливі та взаємопов’язані. Від налагодження тест-кейсів до аналізу програмних помилок, кожен крок вимагає моєї уваги та точності. Але завдяки штучному інтелекту я отримала неоціненну підтримку, яка допомагає мені з легкістю вирішувати ці складні завдання і принесла в процес роботи елементи магії та ефективності.
Як ШІ допомагає мені щодня
Навіть якщо ШІ не інтегровано до ваших робочих інструментів (як-то плагіни для Jira, Confluence, ШІ для поштових сервісів і перевірки граматики, наприклад Grammarly, платні плагіни до IDE на кшталт Copilot), ви однаково можете почати використовувати безплатні інструменти, такі як OpenAI GPT або Bard (які мають вільний доступ для певного обсягу запитів). У цій статті я спробую навести практичні приклади для початківців.
Захист чутливої інформації
Використання ШІ в тестуванні програмного забезпечення приносить численні переваги, але важливо пам’ятати про безпеку даних. Перед впровадженням ШІ-інструментів оцініть ризики: визначте, які дані найбільш вразливі та подумайте, як їх захистити. Наприклад:
- персональні дані користувачів: імена, адреси електронної пошти;
- аутентифікаційні дані: паролі, токени доступу, ключі API;
- чутливі дані з лог-файлів: лог-файли, що містять IP-адреси, ідентифікатори користувачів, конфіденційні повідомлення про помилки, фінансові дані;
- внутрішні документи та дані: документи, які містять бізнес-стратегії, технічні специфікації, патенти або інші конфіденційні відомості.
Подбайте про анонімізацію даних перед їх використанням у ШІ-системах. Це може бути заміна особистих даних на унікальні ідентифікатори та видалення будь-якої конфіденційної інформації. Використовуйте спеціально створені дані замість реальних для тренування моделей ШІ. Дотримуйтеся внутрішніх політик безпеки, що регламентують використання та зберігання даних, і використовуйте інструменти шифрування для захисту даних під час їх обробки.
Зберігайте паролі, токени, URL та інші конфіденційні відомості у змінних середовища або сховищах секретів, замість зберігання їх безпосередньо в коді. Це допоможе захистити чутливу інформацію та забезпечити її безпеку.
Стандартизація тестової документації
Наш проєкт має великий попит та є успішним на ринку вже понад десять років. Зрозуміло, що за цей час відбувся не один перехід на сучасніші рішення та інструменти. Міграція тестової документації може здаватися нескінченною та виснажливою, особливо коли ми говоримо про старі, заплутані та часто неповні дані. Я маю сотні тестових випадків, які потрібно перенести в нову тест-менеджмент систему, переписати, оновити, доповнити та підвести під один стандартизований вигляд.
Звучить, як робота на все життя, правда? Але тут на допомогу прийшов ШІ. Він генерує, аналізує та виправляє тест-кейси, заощаджуючи мені купу часу. Замість того, щоб робити все вручну, я просто довіряю цей процес розумним алгоритмам.
Ви можете використовувати промпт або попросити бот переписати вам тести у вільному форматі. Після надання чітких інструкцій просто надсилайте тести, які потребують апгрейду, і отримуйте відформатований результат.
Приклад вільного запиту до ChatGPT
Hi, we need to fix some of our test cases. I will share the old one with you. Please reformat it according to these criterias: It should have a clear title, description, preconditions, accurate test steps without sub-steps, data section if any, and expected result in the end.
Приклад пропмту
Prompt for Standardizing Test Cases
Goal: Standardize all test cases for clarity and consistency.
Instructions:Standard Test Case Format
- Review Old Test Case: Understand the purpose, steps, and expected outcomes.
- Rewrite Using This Format:
Title: [Clear, concise title]
Description: [Brief overview of the test case]
Preconditions: [List any setup needed before the test]
Steps:Data: [Any data needed for the test]
- Step 1
- Step 2
- Step 3
Expected Result: [What should happen after the steps]
Example Rewritten Test Case
Title: Verify Login with Valid Credentials
Description: Test that a user can log in with valid credentials.
Preconditions:Steps:
- User has a valid account.
- Application is running.
Data:
- Open the login page.
- Enter the username.
- Enter the password.
- Click «Login».
Expected Result:
- Username: user1
- Password: password123
Tips:
- User is redirected to the homepage.
- Welcome message «Welcome, user1!» is displayed.
- Consistency: Keep the format the same for all tests.
- Clarity: Use simple, clear language.
- Detail: Make sure steps and results are detailed enough to follow.
- Accuracy: Ensure all information is correct and up-to-date.
Лайфхак 1. Ви можете попросити ШІ згенерувати вам промт для самого себе за прикладам хороших тест-кейсів.
Лайфхак 2. Запитуйте всі виправлення у бота в одному чаті — так ШІ буде вчитися і покращувати результат.
Приклад: Маємо запит з невідформатованим тестом з перемішаними кроками, одруківками, без прекондишинів і назви:
Отримуємо чіткий відформатований тест-кейс:
Генерація тестових випадків
Ще одним застосуванням ШІ є генерація тест-кейсів та чек-листів. Розглянемо деякі основні аспекти цього процесу.
Генерація тестових сценаріїв
На основі аналізу документації, юзер-сторіз і коду ШІ може автоматично створювати тестові сценарії, які покривають різні аспекти програмного забезпечення. Наприклад, використовуючи моделі глибокого навчання, як-от OpenAI GPT, можна генерувати послідовності кроків для тестування функціональності, інтеграції та взаємодії з користувачем.
Приклад запиту до Chat GPT
Hi, we need to create some test cases from our documentation. It should have clear title, description, preconditions, accurate test steps without sub-steps, data section if any, and expected result in the end. Create separate tests for each section.
*Part of documentation*
Також можна використовувати готові рішення чат-бота для аналізу вебсторінки та генерації тестів, наприклад, цей чат-бот створює тести лише за URL або скриншотом.
Також можна спробувати інші доступні чати:
Покращення покриття тестування
Коли функціональна частина продукту дуже велика, написання негативних тест-кейсів або різноманіття тестової дати часто урізається, але завдяки здатності ШІ аналізувати великі обсяги даних швидко та ефективно, інженери з якості можуть забезпечити глибше покриття тестами. Це дозволяє виявляти більше помилок і знижує ризик невиявлення критичних проблем під час експлуатації програмного забезпечення.
Приклад запиту до Chat GPT
Hi, we have a positive test case which tests our proxy connection. Could you generate a few negative scenarios? *Positive test case*
Hi, I will share a user story with you. Generate the test suit to check this functionality, use positive and negative cases. Provide test data samples.
Приклад: поділившись з ШІ юзер-історею, отримаємо базовий чек-лист для верифікації нового функціоналу.
Генерація тестових даних
Наш проєкт має взаємодіяти з багатьма сторонніми системами — він використовує понад 40 різних API. Це означає, що для ефективної взаємодії з кожним API потрібно мати відповідні тестові дані. ШІ допомагає мені автоматично генерувати ці дані, враховуючи всі можливі сценарії та варіанти. Це дозволяє проводити детальніше тестування і забезпечує коректну роботу системи у різних умовах.
Приклад запиту до Chat GPT
We need to check how our product interacts with Google BigQuery. Could you help me to generate some queries on DDL and DML for it?
To test our web service adapter we need to create a POST request to Twitter API. It should create a new Twitter post. Also, we need a request to authenticate with a username and password.
Приклад: просимо згенерувати нам деякі тестові дані, які будемо використовувати для подальших тестів нашої програми, яка інтегрується до 3d-party систем.
Генерація баг-репортів
Використовуючи ШІ, можна автоматично генерувати баг-репорти на основі провалених тест-кейсів або навіть з корпоративної переписки у чаті, в якій ви обговорювали проблему. Просто надішліть до чату з ШІ кроки, очікуваний і актуальний результат, помилки та логи.
Приклад запиту до Chat GPT
Hi, we have a failed test case during our regression. The problem is that *describe*. Here are some logs *share logs*. Could you generate the bug report? *Failed test case*
We have a problem with our application, we need to create a bug report. *share messages you describe the problem to your PO in EN or UA*. If UA adds: Please translate it into English, the bug report should be in English.
Лайфхак 3. Ви можете встановити до браузера плагін голосового набору тексту і надиктувати в чат з ботом баг-репорт у вільному стилі з усіма деталями, а він оформить його за вас.
Важливо: стежте за чутливою інформацією! Не надсилайте її до ШІ.
Приклад: ми описали до чату ШІ проблему та надіслали тест кейс під час проходження якого баг було виявлено — в результаті отримали відформатований і детальний баг-репорт.
Виявлення та прогнозування помилок
ШІ — справжній детектив! Можна надсилати йому помилки з програми або лог-файли, і він спробує знайти першопричину бага і підказати, в якому модулі може бути проблема. Це як мати власного і завжди доступного Шерлока Холмса, який ніколи не втомлюється і завжди готовий до роботи.
Приклад запиту до Chat GPT
Hi, I checked this test case *share test case* and got an error *share an error*. Any ideas about what could be wrong? *additionally share some part of code, for example, class which throws an exception *
We have this feature *share the documentation* and got an error in our logs *share the log*. Do you know what it can be?
І звісно, ви можете попросити пояснити частину коду, яка, наприклад, була написана дуже давно і не за всіма канонами клін-коду, щоб знайти можливу помилку.
Автоматизація щоденних завдань
Коли команда з автоматизації зайнята більш пріоритетними завданнями, або навіть зовсім відсутня на проєкті, ШІ може взяти на себе частину таких завдань. До прикладу, він допоміг мені швидко створити інтерактивні Bash-скрипти для інсталяції та деінсталяції компонентів продукту. Так, я могла б написати ці скрипти сама, проте зробити їх такими інтерактивними та зручними зайняло б більше часу. Завдяки ШІ мої скрипти тепер можуть запитувати користувача про його потреби та відповідно адаптуватися.
Приклад запиту до Chat GPT
Hi, we need to create a bash script that installs our application. Here is part of the documentation on how to install the application on the Unix system. Additionally script should check if Java is installed and install if not. Should support RHEL and Ubuntu. Users can set the OS as a parameter, Ubuntu is by default.
*Install user manual*
І звісно, після того, як скрипт готовий, ви можете попросити бот ще і написати інструкцію для ваших колег, як ним користуватися, за що вони будуть вам неймовірно вдячні.
Приклад:
- просимо наш ШІ створити інсталяційний скрипт для нашого продукту і ділимося з ним частиною документації, де описаний процес установки для UNIX-систем:
- маючи робочу базу починаємо додавати ускладнення. По-перше, ми хочемо, щоб наш скрипт автоматично перевіряв версію Java та встановлював її у разі відсутності. Також він має підтримувати дві UNIX ОС — Ubuntu та RHEL:
- додаємо ще ускладнення, просимо, щоб наші інсталяційні файли звантажуватися автоматично з нашого білд-сервера:
- Додаємо значення параметрів за замовчуванням:
- Маючи значення за замовчуванням, додаємо параметризацію від користувача:
- Просимо також додати частину коду, яка запитує у користувача пароль до білд-сервера, щоб не зберігати чутливу інформацію безпосередньо в коді:
- перевіряємо, чи працює скрипт на кожному кроці, позаяк під час регенерації ШІ може робити помилки та змінювати вже наявний код. Зберігаємо робочі версії коду, якщо потрібно, то виправляємо баги самостійно та відправляємо йому як базовий скрипт для апдейтів.
- додаємо стільки умов і покращень, скільки треба, наприклад можна перевірити чи програма вже запущена, встановлена, чи встановлена правильна версія і отримати вказівку від користувача на перевстановлення наявної версії на нову тощо.
- коли результат нас задовольняє, просимо написати невелике README.txt:
Інтеграція з іншими інструментами QA
ШІ може інтегруватися з іншими інструментами тестування, як-от:
- статичним аналізатором коду, наприклад, SonarQube для автоматичного виправлення помилок;
- Veracode нещодавно презентував ШІ-утиліту для виправлення вразливостей безпеки;
- також інструменти для автоматизації тестування, такі як Selenium, можуть використовувати згенеровані тестові дані в автоматизації тестування інтерфейсів користувача;
- а репорт системи з ШІ, такі як ReportPortal, допоможуть розпізнати інфраструктурні проблеми і недосконалості скриптів від реальних багів.
Переваги використання ШІ
Серед переваг використанння ШІ:
- ефективність: ШІ дозволяє працювати швидше та з меншою кількістю помилок.
- точність: автоматизація тестування підвищує точність результатів;
- економія часу: більше не потрібно витрачати години на рутинні завдання;
- підтримка в складних умовах: обмежені ресурси та час більше не проблема. ШІ допомагає робити складні речі швидше та краще.
Недоліки використання ШІ
Проте, як і будь-яка технологія, ШІ має свої недоліки:
- залежність від даних: ШІ потребує якісних і великих обсягів даних для навчання. Без цього його ефективність значно знижується. Іноді через брак даних він просто перестає вас розуміти, і ви наче ходите по колу. Не витрачайте на це час, зробіть самі та покажіть йому як треба;
- не найкращі дані для навчання: різноманітність даних для навчання ШІ породжує не найкращі, а іноді об’єктивно погані рішення. Інженер має обов’язково валідувати все, що створює ШІ;
- інтеграційні проблеми: впровадження ШІ в наявні системи може бути складним і вимагати додаткових та вкладень ресурсів та фінансів;
- відсутність креативності: ШІ добре виконує рутинні та повторювані задачі, але йому бракує креативності та інтуїції, які є у людей;
- етичні питання та упередження: алгоритми ШІ можуть бути упередженими, якщо дані для їхнього навчання містять упередження. Це може призвести до несправедливих результатів.
Важливо: будь-які дані, згенеровані ШІ, треба ретельно вичитувати, адже ймовірність помилок у ньому доволі висока — від неправильно написаного промпту до незнання ШІ нових даних, яких його ще не навчали.
Чому ШІ не замінить інженера з якості
ШІ може бути потужним інструментом для автоматизації та оптимізації багатьох аспектів забезпечення якості, але він ніколи не замінить людину повністю. Ось чому:
- людська інтуїція та креативність: інженери з якості використовують інтуїцію та креативність для знаходження нетривіальних проблем, які ШІ може пропустити;
- контекстуальне розуміння: інженери розуміють контекст проєкту, бізнес-вимоги та очікування користувачів, що дозволяє їм ухвалювати обґрунтованіші рішення;
- адаптивність: люди можуть швидко адаптуватися до нових обставин та змін у проєкті, тоді як ШІ потребує часу для перенавчання.
Як подолати страх перед використанням ШІ
ШІ може виглядати складним і навіть трохи лячним для тих, хто ніколи не працював з ним. Ось кілька порад, як подолати цей страх і зробити перші кроки до використання ШІ у вашій роботі:
- починайте з малого: використовуйте ШІ для автоматизації невеликих, рутинних задач. Це допоможе вам поступово звикнути до технології та зрозуміти її потенціал;
- освіта та навчання: інвестуйте час у вивчення основ ШІ та його застосувань у вашій галузі. Є багато онлайн-курсів, семінарів та вебінарів, які допоможуть вам розширити свої знання;
- практичні приклади: досліджуйте реальні приклади використання ШІ у вашій сфері. Це допоможе вам побачити, як інші професіонали використовують цю технологію для вирішення подібних завдань.
Висновок
Штучний інтелект суттєво змінює підхід до розробки програмного забезпечення, зокрема тестування. Автоматизація рутинних завдань, збільшення покриття тестами за допомогою генерування кейсів та виявлення прихованих помилок дозволяють інженерам з якості програмного забезпечення зосередитися на більш творчих аспектах своєї роботи.
Завдяки інтеграції ШІ з конвеєрами безперервної інтеграції та доставки і використанню безплатних інструментів, можна суттєво знизити витрати та підвищити продуктивність розробки. Роль QA-спеціаліста також змінюється — від виконання рутинних завдань до аналізу та удосконалення процесів, що вимагає нових навичок.
Майбутнє тестування програмного забезпечення безсумнівно пов’язане з ШІ — колаборація має величезний потенціал для покращення процесів, автоматизації, аналізу, зменшення витрат людських зусиль та ресурсів, збільшення тестового покриття та забезпечення високої якості кінцевого продукту.
Рецензент статті — Геннадій Міщевський.
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів