Statement testing — це один із базових підходів до тестування програмного забезпечення, який належить до категорії white-box testing (тестування з доступом до коду). Його мета — перевірити, чи всі оператори (інструкції) у програмному коді були виконані хоча б один раз під час тестування.
Основна ідея
Програма складається з набору інструкцій (наприклад, присвоєння, виклики функцій, умовні переходи тощо). Statement testing гарантує, що тестові випадки проходять через усі ці інструкції, тобто кожна з них потрапляє у coverage (покриття).
Приклад:
def is_positive(n):
if n > 0:
return True
else:
return False
Щоб покрити всі інструкції:
- Нам потрібно перевірити випадок, коли n > 0 — виконається return True
- І випадок, коли n <= 0 — виконається return False
Якщо протестувати лише з n = 5, то буде виконано лише return True, і покриття буде неповним.
Вимірювання
Результат statement testing часто виражається у відсотках покриття коду — statement coverage:
Statement Coverage = (Кількість виконаних інструкцій / Загальна кількість інструкцій) × 100%
Переваги:
- Простий у реалізації.
- Допомагає виявити “мертвий код” (який ніколи не виконується).
Недоліки:
- Не гарантує покриття всіх умов або гілок (наприклад, не перевіряє всі варіанти if/else або циклів).
- Може пропустити помилки, якщо інструкція виконується, але не в усіх логічних сценаріях.
Порівняння з іншими видами:
| Тип тестування | Що перевіряє |
| Statement Testing | Чи виконана кожна інструкція |
| Branch Testing | Чи виконана кожна гілка (if/else) |
| Path Testing | Чи пройдені всі можливі шляхи |
| Condition Testing | Чи перевірені всі умови логіки |
Підсумок
Statement testing — це базовий рівень структурного тестування, що забезпечує мінімальний рівень впевненості в тому, що кожна частина коду хоча б раз була виконана, але не гарантує вичерпного тестування логіки.