Основи автоматизованого тестування

Iryna Volnykh

+ 7 years in E-commerce
+ 6 years as a QA engineer

 

ISTQB Certified Tester

Manual/Automation QA engineer

QA lead at

Course teacher at

Автоматизація - це лише засіб тестування

Процеси, які можуть бути автоматизовані:

 

> регресійне та smoke тестування;

> тестування продуктивності;

> тестування навантаження;

> тестування методом білого ящика (за допомогою інструментів модульного тестування);

> аналіз покриття коду (наприклад використання статичних аналізаторів коду, що допомагають уникнути помилок у коді і так званого мертвого коду (такого, що не використовується));

> Тестування інтеграцій або інтеграційне тестування;

Як пишуться тести і якими мають бути тести

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

На кожну вимогу ми пишемо окремий тест - це дозволить при помилці зрозуміти, що саме зламалося. Тести зазвичай пишуть в стилі Arrange, Act, Assert. Ми спочатку готуємо і налаштовуємо потрібні компоненти (Arrange), виконуємо дію (Act) і перевіряємо результат (Assert).

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

> повторюваним - тест повинен видавати однаковий результат при кожному запуску. Варто уникати використання випадкових величин, так як інакше може вийти «нестабільний» (flaky) тест, який то працює, то ні, і кожен раз треба витрачати час, і шукати причину.

Вимога:

Функція пошуку на веб-сайті повинна дозволяти користувачам знаходити та отримувати доступ до відповідної інформації чи сторінок на веб-сайті.

Test case: функція пошуку на веб-сайті

Steps (або тестовий cценарій):

1. Перейдіть до панелі пошуку веб-сайту.

2. Введіть дійсний пошуковий запит у пошуковий рядок і натисніть клавішу «Enter».

Expected result:

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

2. Переконайтеся, що результати пошуку відображаються чітко та впорядковано.

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

Selenium та його продукти: Selenium IDE, Selenium  WebDriver, Selenium Grid

Selenium — це масштабний open source проєкт, а точніше, browser automation framework, у межах якого розробляється серія програмних продуктів для автоматизованого тестування, які зазвичай використовуються для тестування вебдодатків. Ось посилання на офіційне джерело і документацію: https://www.seleniumhq.org/

Selenium WebDriver — це гнучкий інструмент для автоматизованого тестування вебпроєктів на базі набору бібліотек для різних мов програмування, як-от Java, .Net (C#), Python, Ruby, PHP, Perl, JavaScript. Цей інструмент підтримує роботу на базі Windows, macOS та Linux, а також найпоширеніші браузери Google Chrome, Firefox, Safari, Edge, Internet Explorer та навіть деякі браузери без графічного інтерфейсу. Selenium WebDriver найчастіше використовується з регресійним та функціональним тестуванням.

Архітектура Selenium WebDriver складається з чотирьох компонентів:

> драйвер конкретного браузера;

> клієнтська бібліотека Selenium;

> браузер;

> протокол JSON Wire (JavaScript Object Notation).

Selenium та його продукти: Selenium IDE, Selenium  WebDriver, Selenium Grid

Selenium Server — це сервер, який дозволяє керувати браузером мережею з віддаленої машини;

 

Selenium Grid — це частина фреймворку Selenium, яка спеціалізується на паралельному виконанні тестів у різних браузерах, операційних системах та девайсах.

Selenium Grid-кластер має два основні компоненти: hub i nodes.

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

Node — віддалений пристрій, який складається з рідної ОС та віддаленого WebDriver. Він отримує запити від Hub у вигляді тестових команд JSON і виконує їх за допомогою WebDriver.

Selenium та його продукти: Selenium IDE, Selenium  WebDriver, Selenium Grid

Selenium IDE — плагін до браузера Firefox та Chrome, який може записувати дії користувача, відтворювати їх, а також генерувати код для WebDriver, в якому виконуються ті самі дії. Загалом це «Selenium-рекордер».

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

Для написання автоматизованих тестів, де ми будемо емулювати взаємодію користувача з системою, необхідно вміти знаходити локатори елементів. Найчастіше використовуються CSS-локатори та XPath.

СSS селектори

Xpath

Вибір за атрибутами:

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

 

//*[@style]

Вибірка всіх елементів які мають класс style

//*[@class="chapter"]

Вибірка всіх елементів які мають class="chapter"

//h1[@class="bookTitle"]

Вибірка всіх елементів з h1 тегом що мають атрибут class="bookTitle" [4]

Selenide

Selenide - це фреймворк для автоматизованого тестування веб-додатків на основі Selenium WebDriver, що дає наступні переваги:

 

❤️ витончений API

❤️ Підтримка Ajax для стабільних тестів

❤️ потужні селектори

❤️ проста конфігурація

 

Документація: https://selenide.org/

Page Object Model

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

Page objects are a classic example of encapsulation - they hide the details of the UI structure and widgetry from other components (the tests).
                          (c) Martin Fowler, PageObject.

 

Welcome to Automation

By iravol

Welcome to Automation

  • 337