Блог

Всі статті

Автоматизуємо тестування: коли, навіщо і кому це потрібно

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

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

Завдання автоматизації

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

Автоматизація потрібна для того, щоб:

  • Замінити трудомістке ручне тестування робочих процесів і безлічі сценаріїв
  • Виключити помилки внаслідок «людського фактора»
  • Забезпечити прозорий контроль над процесом тестування
  • Скоротити витрати на скриптах завдяки їх повторному використанню
  • Отримати точні та надійні результати випробувань
  • Скоротити час виходу готового продукту на ринок
  • Поліпшити процес розробки (Continues Integration)

Коли потрібно автоматизувати

Як зрозуміти, що настав час автоматизувати тестування? Чи у всіх випадках рентабельність інвестицій в автоматизацію буде виправдана?

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

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

  • Сценарії регулярно повторюються
  • Сценарії трудомісткі, складні й не підходять для ручної перевірки
  • Перевірка тест-кейсів займає багато часу
  • Сценарії для високонавантажених додатків (High-load applications)

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

Що автоматизувати

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

  • Back-end процеси та сервіси
  • API
  • Запис логів
  • Роботу баз даних
  • Опції та інструменти сайту, додатку, ресурсу, що часто використовуються: форми реєстрації, системи онлайн-оплат і т.п.
  • Автоматизацію заповнення полів, збереження і перевірку
  • Валідацію даних, що вводяться
  • Зберігання та цілісність даних

Які типи тестування можна автоматизувати

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

Розглянемо типи тестування, які рекомендується автоматизувати.

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

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

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

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

Інтеграційне тестування застосовується для групових тестів, які об’єднують програмні модулі, створені декількома програмістами. Наприклад, потрібно перевірити як взаємодіє модуль кошика і платіжний модуль в інтернет-магазині. Крім цього, ІТ перевіряє роботу системи в поєднанні з позапроцесними залежностями (керованими й некерованими). Результат автоматизації інтеграційних тестів — надійний захист від збоїв і відсутність необхідності переробки коду.

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

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

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

Як проходить процес автоматизації тестів

Розглянемо роботи поетапно:

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

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

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

Четвертий етап. Обслуговуємо тести для перевірки якості автоматизації. Це необхідно для підвищення ефективності вже наявних сценаріїв і при розробці нових.

Інструменти для автоматизації

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

При їх виборі важливу роль відіграє наявність таких функцій:

  • Простота використання та інтуїтивно зрозумілий інтерфейс
  • Вбудована підтримка основних типів тестування — виробниче, регресійне, функціональне і т.п.
  • Легкість в налагодженні та підтримці сценаріїв
  • Формування інформативних звітів про тестування

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

Selenium

Selenium призначений для тестування сайтів і веб-додатків на різних операційних системах і браузерах. Його перевага в тому, що тестувальники можуть обирати свою мову програмування для написання тестів. Серед основних: Python, Perl, PHP, Java, C # та ін.

TestingWhiz

Даний інструмент дозволяє налагодити автоматизоване тестування для веб-продуктів і мобільних додатків, ПО, баз даних, програмних інтерфейсів додатків (API). Серед тестів підтримується регресійне і кросбраузерне види тестування.

HPE UFT

Ліцензований інструмент від Hewlett Packard. Призначений для функціонального тестування програмних додатків. Має вбудований механізм обробки багів, розпізнає смарт-об’єкти, контролює створюваний текст скрипта безпосередньо під час дій користувача.

JMeter

Створювався для тестування веб-додатків, але сьогодні його функціонал дозволяє проводити тестування навантаження для таких сполук як FTP, HTTP, JDBC, POP3, LDAP та ін. З його допомогою можна створити групу запитів відразу з декількох ПК. Результати тестів оформляються з використанням інфографіки.

TestComplete

Платформа від компанії SmartBear Software, в якій налаштована автоматизація десктопних і мобільних продуктів з підтримкою таких мов: C ++ Script, Python, C # Script, JavaScript, DelphiScript, JScript, VBScript.

TestNG

Написаний на Java фреймфорк для автоматизації тестів, поєднує в собі функціонал JUnit і NUnit поряд із новими функціями і багатопотоковим тестуванням. Простий у використанні, цей інструмент забезпечує підтримку основних типів тестування, включаючи функціональне, інтеграційне та ін.

Sahi

Інструмент для автоматизованих тестів мобільних додатків, написаний на Java і JavaScript. У платформу вбудована підтримка таких фреймворків як Dojo, ExtJS, YUI та ін. Однією з функцій є кросбраузерне тестування.

Ranorex

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

Webload

Платформа для автоматизації тестування з широким функціоналом з можливістю навантаження від Amazon EC2 в разі хмарного тестування. Формує більш ніж 80 варіантів (на вибір) звітів з використанням інфографіки.

Postman

Програма призначена для створення і тестування роботи програмних інтерфейсів додатків (API) і веб-сайтів, а також для відправки запитів на сервер. Завдяки графічному інтерфейсу можна легко налаштовувати всі необхідні дані для проведення тестів.

Резюме

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

Коли потрібна автоматизація:

  • При розробці масштабного додатка, ПЗ або сайту з великим набором функцій
  • Для довгострокових проєктів
  • При впровадженні CI / CD, регулярних релізах

Переваги автоматизації:

  • Оптимізація витрат
  • Прискорення процесу тестування
  • Підвищення якості ПЗ
  • Скорочення часу і ресурсів на проведення тест-кейсів
  • Підвищення ефективності роботи команди
  • Широке тестове покриття
  • Підтримка та оновлення автотестів

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