System Testing (Системне тестування) — це рівень тестування, під час якого тестується повністю зібрана, інтегрована система, яка складається з усіх компонентів (модулів), але ще не включає зовнішніх систем або середовищ.
Це тестування розглядає продукт як єдине ціле, перевіряючи, чи відповідає він функціональним та нефункціональним вимогам, сформульованим у специфікації або вимогах до системи.
Контекст у рівнях тестування
Згадаємо рівні тестування та місце System Testing:
Рівні тестування (Test Levels)
| Рівень тестування | Що тестується | Основна мета |
| 1. Unit Testing | Окремі компоненти (класи, методи, функції) | Перевірка правильності логіки окремих одиниць |
| 2. Component Integration Testing | Взаємодія між компонентами системи | Перевірка коректної інтеграції модулів |
| 3. System Testing | Уся система як цілісний продукт | Перевірка відповідності вимогам |
| 4. System Integration Testing | Взаємодія системи з іншими зовнішніми системами | Перевірка інтеграції на рівні міжсистемному |
| 5. Acceptance Testing | Готовий продукт з точки зору користувача | Перевірка прийнятності продукту для релізу |
Коли проводиться?
System Testing виконується після успішного завершення Component Integration Testing, коли всі окремі компоненти вже інтегровані та працюють разом. Система на цьому етапі вважається функціонально повною, але ще не взаємодіє з зовнішніми системами (API, сторонні сервіси, інші підсистеми тощо).
Ціль System Testing
Перевірити, чи відповідає вся система вимогам, зазначеним у:
- функціональній специфікації
- технічному завданні
- бізнес-вимогах
- документації користувача
Хто виконує
System Testing зазвичай проводиться незалежною командою тестувальників. Часто використовується техніки “чорної скриньки“, коли тестувальник не має знань про внутрішню реалізацію системи, а перевіряє лише зовнішню поведінку.
Що саме тестується
System Testing охоплює повний набір функціональних і нефункціональних тестів:
Функціональне тестування:
- Перевірка бізнес-логіки
- Перевірка обробки помилок
- Валідація даних
- Тестування ролей користувачів
- Перевірка навігації та взаємодії
Нефункціональне тестування:
- Performance Testing (тестування продуктивності)
- Security Testing (перевірка безпеки)
- Usability Testing (юзабіліті-тестування)
- Compatibility Testing (сумісність із ОС, браузерами, пристроями)
- Localization Testing (перевірка перекладів, форматів дат тощо)
- Accessibility Testing (відповідність стандартам WCAG для користувачів з обмеженими можливостями)
Відмінність від суміжних рівнів
Порівняння з Component Integration Testing:
| Параметр | Component Integration Testing | System Testing |
| Що перевіряється | Взаємодія між компонентами | Повна система як єдине ціле |
| Рівень деталізації | Середній (компоненти) | Високий (усі фічі, як бачить користувач) |
| Підхід | Часто “білого ящика” | Зазвичай “чорного ящика” |
| Фокус | Інтерфейси, обмін даними між модулями | Повна відповідність системи вимогам |
Порівняння з System Integration Testing:
| Параметр | System Testing | System Integration Testing |
| Фокус | Внутрішня цілісність системи | Взаємодія з іншими системами |
| Включає зовнішні системи? | Ні | Так |
| Приклад | Реєстрація користувача, додавання товару до кошика | Інтеграція з платіжною системою, ERP |
| Залежність від середовища | В основному автономне середовище | Інтегроване середовище з іншими системами |
Приклади System Testing
- Ви тестуєте CRM-систему: перевіряєте реєстрацію клієнта, створення лідів, створення угоди, зміну статусу, генерацію звіту.
- Ви тестуєте e-commerce платформу: проходите повний шлях користувача — від перегляду товарів до оформлення замовлення.
Переваги System Testing
- Дозволяє виявити дефекти, що проявляються лише на рівні взаємодії всіх компонентів.
- Імітує поведінку реального користувача.
- Перевіряє виконання вимог замовника.
Недоліки System Testing
- Вимагає повністю зібраної системи, тому виконується пізно в циклі розробки.
- Важко знайти причину помилки, якщо вона виникає на рівні компонентів — потребує ретельної ізоляції дефекту.
- Може бути дорогим через складність тестового середовища.
Підсумки
System Testing — це тестування повної системи на відповідність вимогам, яке виконується після того, як окремі компоненти були зібрані та протестовані разом (Component Integration Testing), але ще до взаємодії із зовнішніми системами (System Integration Testing).
Це важливий рівень тестування, який забезпечує перевірку того, що вся система працює правильно та готова до інтеграції в реальне середовище.