Автоматизоване тестування як інструмент для онбордингу та презентації функціоналу

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

Привіт, спільното!

Робота з великими проєктами часто передбачає появу проблем, пов’язаних з онбордингом нових співробітників або відсутністю чіткої документації для презентації функціоналу. У цій статті я пропоную рішення, яке поєднує автоматизоване тестування, відеоінструкції та можливості штучного інтелекту для створення інформативного та ефективного процесу.

Працюючи мануальним тестувальником над досить складною CRM-системою, я мав задачу з онбордингу нового колеги. Враховуючи велику кількість залежностей, яку мала наша аплікація, вирішив записати відео для кожного окремого складного сценарію. Щоб в будь-який момент можна було повернутися до перегляду й освіжити знання. Цей підхід досить ресурсозатратний, проте він був використаний не один раз.

Зараз, маючи знання автоматизації, я відкрив для себе досить простий, але продуктивний спосіб презентації роботи функціоналу. Використовуючи можливості фреймворку з автоматизації — в моєму випадку це Playwright + Python, потрібно детально описати сам тестовий сценарій і загалом це майже все.

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

Переваги цього методу

  1. Економія часу:
    • Запис відеоінструкції та створення тест-кейсів автоматично займає значно менше часу, ніж їх створення вручну.
    • Оновлення тестів і документації після змін у функціоналі займає лічені хвилини.
  2. Легка підтримуваність:
    • Зміни в функціоналі потребують лише редагування тестового скрипта. Всі інші артефакти (відео, тест-кейси) генеруються автоматично на основі оновленого коду.
  3. Зрозумілий результат для всіх команд:
    • Відеоінструкція наочно демонструє роботу функціоналу.
    • Тест-кейси, перетворені з коду, зрозумілі для мануальних тестувальників, менеджерів або клієнтів.
  4. Мінімізація помилок:
    • Автоматизація виключає людський фактор, забезпечуючи точність і послідовність виконання дій.
    • Зменшуються ризики пропустити важливі кроки під час створення інструкцій чи тестів.
  5. Універсальність:
    • Метод підходить як для онбордингу нових співробітників, так і для демонстрації функціоналу замовникам або зацікавленим сторонам.
  6. Доступність без автоматизатора:
    • Навіть за відсутності спеціаліста з автоматизації тестування Playwright може самостійно згенерувати код на основі мануальних дій, що робить метод доступним для всіх.
  7. Крос-командна інтеграція:
    • Інструкції та тести легко використовуються різними командами: розробниками, тестувальниками, менеджерами проєктів.
  8. Покращення документації:
    • Відео та структуровані тест-кейси можуть бути частиною бази знань проєкту, що розв’язує проблему недостатньої або застарілої документації.

Приклад реалізації

У випадку присутності автоматизатора на проєкті все просто, але якщо автоматизатора немає, функціонал «playwright codegen» автоматично згенерує для вас скрипт на основі мануальних дій на сайті.

  • Встановлюємо PyCharm.
  • Встановлюємо Playwright «playwright install»
  • Запускаємо генератор тестів -

«playwright codegen —target python the-internet.herokuapp.com»

  • У браузері, що відкрився, виконуємо потрібний нам сценарій, який буде записано у вигляді коду.
  • Копіюємо згенерований код до нового проєкту до стрічки присвоєння контексту.
context = browser.new_context()

Для запису відео треба додати:

record_video_dir="videos/"

Також треба пам’ятати, що Playwright працює дуже швидко і записане відео треба буде передивлятися в режимі зменшеної швидкості. Або сповільнювати Playwright напряму, використовуючи slow_mo опцію для уповільнення швидкості роботи скрипта.

browser = playwright.chromium.launch(headless=False, slow_mo=100)

Для прикладу я згенерував кілька простих дій на тестовому сайті:

import os
from playwright.sync_api import Playwright, sync_playwright

def run(playwright: Playwright) -> None:
   browser = playwright.chromium.launch(headless=False)
   context = browser.new_context(record_video_dir="videos/")

   page = context.new_page()
   page.goto("https://the-internet.herokuapp.com/")
   page.get_by_text("Basic Auth (user and pass:").click()
   page.get_by_role("link", name="Basic Auth").click()
   page.goto("https://the-internet.herokuapp.com/")
   page.locator("li").filter(has_text="Checkboxes").click()
   page.get_by_role("link", name="Checkboxes").click()
   page.get_by_role("checkbox").first.check()
   page.goto("https://the-internet.herokuapp.com/")
   page.get_by_role("link", name="File Download", exact=True).click()
   with page.expect_download() as download_info:
       page.get_by_role("link", name="necklace2.jpg").click()
   download = download_info.value
   target_path = os.path.join(os.getcwd(), "downloads", "necklace2.jpg")
   os.makedirs(os.path.dirname(target_path), exist_ok=True)
   download.save_as(target_path)
   assert os.path.exists(target_path), "File was not downloaded successfully!"

   context.close()
   browser.close()


with sync_playwright() as playwright:
   run(playwright)

Наступним кроком запускаємо код для запису відео, копіюємо код вище і за допомогою AI трансформуємо його в тест-кейс. Я використав чат GPT, і ось результат.

Кроки виконання тесту

  1. Відкрити головну сторінку сайту.
  2. Виконати авторизацію через Basic Auth.
    • Знайти та натиснути посилання Basic Auth.
    • Виконати авторизацію за замовчуванням (логін: admin, пароль: admin).
  3. Повернутися на головну сторінку.
  4. Перевірити чекбокс на сторінці Checkboxes.
    • Знайти та натиснути на посилання Checkboxes.
    • Вибрати перший чекбокс (якщо він ще не вибраний).
  5. Завантажити файл «necklace2.jpg».
    • На головній сторінці знайти та натиснути на посилання File Download.
    • У секції завантаження знайти файл «necklace2.jpg».
    • Натиснути на посилання для завантаження файлу.
  6. Перевірити, що файл успішно завантажений.
    • Переконатися, що файл збережено у визначеній директорії (downloads/).
    • Підтвердити наявність файлу necklace2.jpg у зазначеній папці.

Очікуваний результат

  1. Авторизація через Basic Auth успішна.
  2. Чекбокс на сторінці Checkboxes обраний.
  3. Файл necklace2.jpg успішно завантажений і доступний у локальній директорії downloads/.

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

Висновки

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

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

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

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

Використані матеріали

Playwright test generator
Web site example
Python IDE

👍ПодобаєтьсяСподобалось11
До обраногоВ обраному5
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

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

Дякуємо за цікаву пізнавальну статтю!💡

воу, це дуже класна фіча, яку я нахабно, проте з величезною вдячністю краду собі

Дякую! Радий, що знайшли статтю корисною!

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

browser = playwright.chromium.launch(headless=False, slow_mo=100) — ось тут можна регулювати швидкість проходження тесту

Вітаю! Так, все вірно, тести миттєві, та Playwright під капотом має slow_mo функціонал. Slow_mo це затримка в мілісекундах між кожною наступною дією тест-скрипта. Можна задати декілька секунд між кроками і ви отримаєте відео з можливістю коментування, без використання пауз чи додаткових вейтерів.

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