Усі види тестування умовно можна поділити на два «табори»: функціональні перевірки та нефункціональні. Кожна з груп відповідає за певні критерії оцінки продукту. Давайте розглянемо їх детальніше.
Різниця між функціональним і нефункціональним тестуванням
- 13.07.2023
- Опубліковано: Admin
Що таке функціональне тестування?
Функціональне тестування — це тип тестування програмного забезпечення, під час якого система перевіряється на відповідність вимогам і специфікаціям. Функціональне тестування гарантує, що вимоги або специфікації належним чином задовольняються продуктом. Цей тип тестування, у першу чергу, стосується результату обробки. Він зосереджений на моделюванні фактичного використання системи, але не розробляє жодних припущень про структуру системи. За базу визначення цього типу тестування береться перевірка, що кожна функція програми працює відповідно до вимог і специфікацій. Цей вид не стосується вихідного коду програми. Кожна функціональність програми чи сайту перевіряється шляхом надання відповідних тестових вхідних даних, очікування вихідного результату та порівняння фактичного результату з очікуваним результатом.
Функціональне тестування — це загальний термін для багатьох типів тестів, призначених для перевірки всієї функціональності програмного забезпечення. Функціональне тестування підтверджує, що програмне забезпечення працює належним чином і не містить помилок. Щоб підтвердити це, тестувальник моделює реальний сценарій кінцевого користувача та порівнює результати тесту з очікуваними результатами, що зазначені у документі вимог. Функціональне тестування може виконуватися вручну або автоматизовано.
Здебільшого, функціональне тестування зосереджено на зовнішній поведінці програмного забезпечення, тому немає потреби у знаннях внутрішнього вихідного коду, і здебільшого воно вважається тестуванням чорного ящику. Цей тип тестування виконується перед нефункціональним тестуванням. Існує кілька типів функціонального тестування, наприклад: димове тестування (Smoke testing), санітарне тестування (Sanity testing), регресійне тестування (Regression testing) тощо.
Що таке нефункціональне тестування?
Нефункціональне тестування – це тип тестування програмного забезпечення, яке виконується для перевірки нефункціональних вимог продукту. Воно перевіряє, чи відповідає поведінка системи вимогам, чи ні. Цей тип тестування – широкий термін, який містить усі аспекти, не пов’язані з функціональністю системи. Серед аспектів, які вважаються нефункціональними, є продуктивність, безпека, зручність використання тощо. Основна мета нефункціонального тестування — відповісти на потреби клієнтів і зробити продукт зручним та безпечним для користувача. Нефункціональні тести зосереджуються на часі відгуку, надійності системи, питаннях безпеки тощо.
Нефункціональне тестування виконується переважно як автоматизоване тестування з використанням різних засобів автоматизації залежно від типу тесту. Типи тестування, які класифікуються як нефункціональне тестування, це навантажувальне тестування (Load testing), стрес-тестування (Stress testing), тестування доступності (Accessibility testing) тощо.
Більш наочно відмінності функціонального і нефункціонального тестування відображено у порівняльній таблиці:
Ознака | Функціональне тестування | Нефункціональне тестування |
Визначення | Тип тестування, який підтверджує визначені характеристики продукту | Тип тестування, який підтверджує аспекти поведінки продукту |
Що перевіряється | Код продукту у процесі роботи досягає поставлених вимогами результатів | Код продукту працює належним чином та вказаним способом |
На чому базується | На специфікації та вимогах | На очікуваннях користувачів |
Мета | Поліпшити поведінку продукту | Покращити продуктивність продукту |
Цілі | Перелічені функції продукту працюють | Фактори швидкості, продуктивності та зручності використання працюють |
Ручне/ автоматизоване | Може бути і ручним, і автоматизованим | Автоматизоване |
Коли виконується | Перед нефункціональним | Після функціонального |
Переваги |
|
|
Види тестування |
|
|
Розберемо кожен із видів на прикладі тестування сайту інтернет-магазину.
Функціональним тестуванням для нього буде перевірка того, чи виконує сайт ключові функції відповідно до вимог продукту: чи можна товар додати до кошика, чи вірно рахується кількість і вартість товару у кошику, чи валідуються поля на формі оформлення замовлення тощо.
Нефункціональне тестування сайту передбачатиме усі перевірки щодо швидкості завантаження та відгуку сторінок, тестування у різних браузерах, тестування візуальних складових на зручність для цільового користувача та багато іншого.
Для зручності відобразимо приклади для кожного з видів у вигляді таблиці:
Вид тестування | Приклад застосування (у розрізі сайту інтернет-магазину) |
Функціональні види тестування |
|
Модульне тестування (Unit testing) | Тестування окремих компонентів (модулів) сайту, зазвичай з позиції аналізу коду продукту. Наприклад, перевірка коду функції додавання товару до списку бажань |
Інтеграційне тестування (Integration testing) | Перевірка різних компонентів/модулів сайту як єдиного цілого (у взаємозв’язку). Наприклад, перевірка інтерфейсу при авторизації, додаванні товару до списку бажань тощо |
Тестування системи (System testing) | Тестування сайту як комплексної системи з урахуванням особливостей взаємодії з іншим програмним/апаратним забезпеченням, необхідним для роботи. Наприклад, виконання комплексу тестів з реєстрації, повторного входу, додавання товару до списку бажань, до кошика, оформлення й підтвердження замовлення |
Димове тестування (Smoke testing) | Перевірка після доопрацювань/змін критично важливих функцій, чи вони працюють відповідно до очікувань. Наприклад, чи успішно здійснюється реєстрація на сайті після зміни способу реєстрації з електронної пошти на СМС |
Санітарне тестування (Sanity testing) | Детальна перевірка функціонала з незначними змінами. Наприклад, чи успішно здійснюється реєстрація на сайті після додавання до форми реєстрації поля з зазначенням віку |
Регресійне тестування (Regression testing) | Тестування функціонала з метою переконатися, що зміни в коді не завдали побічних ефектів на функціонал, що існує. Наприклад, чи додавання значення віку при реєстрації не вплинуло на можливість відновити пароль на сайті |
Нефункціональні види тестування | |
Тестування продуктивності
(Performance testing) |
Тестування сайту при очікуваному або більш високому навантаженні (наприклад, при планових 100 одночасних користувачів, при незначному збільшенні - 120 одночасних користувачів) |
Тестування безпеки (Security testing) | Дослідження, що спрямовані на пошук багів, пов’язаних зі збереженням даних користувача. Наприклад, чи можливо авторизуватися до особистого кабінету покупця з невірним паролем |
Тестування навантаження (Load testing) | Тестування сайту за нормальних умов та нормальної завантаженості. Наприклад, чи допустимий час відгуку сторінки після успішного оформлення замовлення |
Стрес-тестування (Stress testing) | Перевірка реакції сайту на більше, ніж очікувано, робоче навантаження (наприклад, 150 чи навіть 1000 одночасних користувачів) з метою виявлення витоків пам’яті та перевірки надійності сайту |
Об'ємне тестування (Volume testing) | Тестування сайту при збільшеній кількості оброблюваних даних. Наприклад, при надвеликій кількості товарів у кошику (500 різних позицій) або ж надмірній кількості товарів у списку бажань |
Тестування масштабованості (Scalability testing) | Перевірка здатності сайту до модернізації з метою задоволення зростаючого навантаження. Наприклад, при передбаченому зростанні кількості відвідувачів до 500 напередодні новорічних свят, слід визначити, які показники продуктивності можна поліпшити, щоб сайт і надалі працював належним чином |
Тестування сумісності (Compatibility testing) | Перевірка роботи сайту у різному оточенні, наприклад, у різних браузерах чи у браузерах різних операційних систем |
Юзабіліті тестування (Usability testing) | Тестування зручності використання сайту. Наприклад, чи іконка кошика розміщена справа в шапці сайту, як звикли користувачі, чи не надто багато кроків у процесі оформлення замовлення |
Кожен із видів тестування є важливим та відіграє чи не найголовнішу роль у процесі перевірки продукту. Знання відмінностей функціональних та нефункціональних перевірок допоможе у плануванні та реалізації процесів тестування.