Структура
Функціональне тестування – це те, що запобігатиме потребі в дорогому і трудомісткому ремонті в майбутньому, а також підтримає задоволеність клієнтів. У процесі розвитку QA як професії виникла дуже велика кількість видів і типів тестування. Існують різні класифікації, а також підходи до опису видів тестування залежно від того, яку мету ставить перед собою фахівець, що безпосередньо проводить тестування. Об’єктивно новий вид тестування можна уявити в будь-який момент, якщо просто структуровано й тезово пояснити своє бачення і підхід на цей вид тестування.
Але все ж таки є загальноприйняті види тестування і їх всього два – це функціональне і нефункціональне тестування. У цьому матеріалі ми розберемо, що це таке, яка мета функціонального тестування і що входить у функціональне тестування.
Функціональне тестування
Функціональне тестування — це процес перевірки працездатності програмного забезпечення, унаслідок якого порівнюють фактичну поведінку системи на відповідність із функціональними вимогами замовника.
Які є рівні функціонального тестування?
Для функціонального тестування можна виділити чотири основні рівні (іноді їх ще називають типи функціонального тестування):
- Модульне тестування (Unit testing) – найчастіше проводиться розробниками. Це приклад функціонального тестування, де тестується певний ізольований модуль додатка обмежено у власному середовищі. Жодні зовнішні чинники та взаємозв’язок з іншими модулями програмного забезпечення не враховуються на цьому рівні тестування.
- Інтеграційне тестування (Integration testing) – рівень тестування, за якого перевіряється, як окремі компоненти можуть взаємодіяти між собою. Без урахування зовнішніх факторів.
- Системне тестування (System testing) – рівень тестування, де перевіряється працездатність програмного забезпечення цілком. Можна сказати, що на цьому рівні й проводять порівняння фактичної поведінки системи на відповідність із функціональними вимогами замовника.
- Приймальне тестування (Acceptance testing) – завершальний рівень тестування, який зазвичай проводять замовник, або ж його представник, а також може проводити кінцевий користувач. Проводиться з метою отримання оцінки про готовність програмного забезпечення та відповідність його до вимог замовника.
До окремих видів тестування можна додати ті, які необхідно виконувати в разі, якщо відбуватимуться зміни в нашому продукті.
Це можуть бути такі види тестування:
1.Регресійне тестування (Regression testing) – вид тестування ПЗ, який проводиться після внесення в програму змін. Перед тестуванням обирається список тест-кейсів, за якими проводитиметься оцінювання ПЗ на предмет появи нових відхилень, а також на те, що попередній функціонал працює справно і без змін.
2. Димове тестування (Smoke testing) – вид тестування ПЗ, що перевіряє базову функціональність, тобто перевірка того, що основні функції програми працюють без відхилень і помилок. Що дає змогу переходити до тестування вужчих модулів і напрямів роботи ПЗ.
3. Тестування чистоти (Sanity testing) – так само як і димове тестування, перевіряє основний ключовий функціонал, але не так глибоко. У пріоритеті перевірка саме ключових областей, на які можуть вплинути зміни та нові функції вашого ПЗ.
4. Адаптаційне тестування (Adaptation Testing) – перевірка того, що програма успішно адаптується до нових, що виникли внаслідок змін, вимог.
5. Тестування оновлень (Patch testing) – проводиться в разі, якщо зміни надаються у вигляді патча або оновлення. Перевіряється їх коректність і стабільність. Основною метою є перевірка, що оновлення встановлюються без збоїв і не призводять до небажаних побічних ефектів і багів.
Це далеко не всі види тестування, які можуть бути пов’язані зі змінами програмного забезпечення.
Що стосується функціонального тестування, то воно часто підлягає автоматизації. Застосуванню певних технік, підходів та інструментальних засобів, які дають змогу частково виключити людське втручання в процес тестування. Це окремий високоструктурований підхід до тестування, який може охоплювати кроки з вибору інструментів автоматизації, розроблення тест-кейсів для автоматизації, налаштування оточень та інтеграцію з CI/CD, подальшу підтримку з моніторингом результатів, а також отримання та збирання звітності для подальшого подання замовнику.
Автоматизація тестування, звісно, корисна, але необхідно розуміти, що це трудомісткий процес, що вимагає вкладень і грамотного ведення всіх процесів. Тому перш ніж розпочинати процеси автоматизації, необхідно переконатися в її доцільності в конкретному випадку.
Нефункціональне тестування
Нефункціональне тестування – це вид тестування, який перевіряє особливості роботи програмного забезпечення, що не пов’язані з функціональним тестуванням. Якщо порівняти, то функціональне тестування перевіряє, що саме кінцевий користувач може виконувати за допомогою цього продукту, а нефункціональне тестування перевіряє те, як працює система і які характеристики проявляє під час своєї роботи.
Основні види нефункціонального тестування
- Тестування продуктивності:
До тестування продуктивності можна віднести такі види тестування:
1) Навантажувальне тестування (Load testing) – процес перевірки системи з мінімальним навантаженням, з подальшим збільшенням навантаження до максимального. Для виявлення її можливих меж роботи.
2) Стресове тестування (Stress testing) – перевірка системи за максимальних, а також таких, що перевищують максимально допустиме навантаження системи. Проводиться для моніторингу, як система відреагує на перевантаження, або для виявлення точок збою і відмови.
3) Тестування відновлюваності (Recovery Testing) – перевірка, як система може відновлюватися після стану збою або відмови.
4) Тестування стабільності (Stability Testing) – перевірка системи протягом тривалого проміжку часу під середнім навантаженням, спрямована на виявлення можливих недоліків, пов’язаних із витоком ресурсів, накопиченням помилок або іншими факторами.
5) Тестування швидкості завантаження (Load time testing) – перевірка, наскільки швидко система справляється з завантаженням різних ресурсів (вебсторінки, бази даних, додатки).
6) Тестування продуктивності ресурсів (Resource performance testing) – оцінює використовувані ресурси (оперативна пам’ять, мережева пропускна спроможність, навантаження на мережевий процесор тощо).
7) Тестування масштабованості (Scalability testing) – перевірка системи на збереження продуктивності та доступності ПЗ за умови збільшення навантаження або обсягу оброблюваних даних.
2. Тестування користувацького інтерфейсу (User Interface testing) – перевірка користувацького інтерфейсу на коректність відображення, графічного дизайну, дотримання функціональних особливостей, а також процесу взаємодії кінцевого користувача з програмою.
3. Тестування користувацького досвіду (UX testing) – перевірка комфортності та зрозумілості користування продуктом для кінцевого користувача.
4. Тестування встановлення (Installation testing) – це процес перевірки процедури встановлення ПЗ на будь-який пристрій, для якого воно призначене. До цього виду тестування також може бути включено процес перевірки деінсталяції вашого програмного забезпечення.
5. Тестування безпеки (Security testing) – процес перевірки ПЗ на наявність вразливостей, ризиків і загроз. Основною метою є запобігання отримання інформації та конфіденційних даних для зловмисників. Цей вид тестування може бути віднесений як до нефункціонального, так і до функціонального виду. Важливим аспектом тут виступає контекст, за якого викликається цей тип тестування.
6. Тестування сумісності (Compatibility testing) – перевірка, наскільки наше ПЗ здатне коректно працювати з різними операційними системами (Windows, MacOs, Linux, Android, iOS тощо), у різних браузерах (Chrome, Safari, Opera, Firefox тощо), а також на різних пристроях та в різних оточеннях.
7. Конфігураційне тестування (Configuration testing) – перевірка працездатності ПЗ на різних версіях ОС, версіях браузера, з різною роздільною здатністю екрана, мовними налаштуваннями, а також різними конфігураціями апаратного забезпечення.
8. Тестування локалізації (Localization testing) – перевірка коректності роботи застосунку залежно від мовних та інтернаціональних особливостей (коректність перекладу; адаптація інтерфейсу або, простими словами, правильне відображення елементів на екрані залежно від обраної мови; форматування дат, часу, одиниць виміру, валют тощо).
9. Тестування доступності (Accessibility testing) – перевірка ПЗ на доступність для людей з обмеженими можливостями.
Висновок
У цьому матеріалі ми розібрали, що таке функціональне і нефункціональне тестування та назвали їхні види. Це також далеко не всі види нефункціонального тестування. Важливо розуміти, що тільки в разі комплексного і грамотного використання обох видів тестування (функціонального й нефункціонального), можна провести повний та глибокий процес тестування програмного забезпечення, а отже, і забезпечити належну якість продукту для задоволення вимог і очікувань замовника.