Condition Testing (тестування умов) — це структурний метод тестування програмного забезпечення, при якому тестуються логічні умови в коді з метою виявлення помилок у логіці.
Цей тип тестування належить до тестування білої скриньки (white-box testing), тобто, коли тестувальник має доступ до коду програми і перевіряє внутрішню логіку виконання.
Мета Condition Testing
Основні цілі:
- Перевірити логіку умовних виразів
- Кожна частина складної умови повинна бути перевірена на істинність (true) та хибність (false).
- Забезпечити правильність роботи кожної окремої умови
- Збільшити покриття коду
- Щоб усі логічні умови були перевірені, і в результаті — знайдено більше потенційних помилок.
- Забезпечити надійність програми
- Особливо важливо для критичних систем (медицина, авіація, банківські системи).
Що таке умова (Condition)?
Умова — це логічний вираз, який може бути істинним або хибним. Наприклад:
if (x > 0 && y < 10)
У цьому виразі є дві атомарні умови:
- x > 0
- y < 10
Вони об’єднані за допомогою логічного оператора && (AND).
Чому недостатньо просто перевірити весь if?
Можна протестувати, чи виконується if, але не перевірити, як поводить себе кожна умова окремо. Наприклад:
- Якщо x > 0 завжди істинне у всіх тестах, ми не знаємо, як поводиться програма, коли x <= 0.
- Якщо y < 10 завжди хибне — ми не перевіряємо гілку, де воно стає істинним.
Тестування лише результату if не гарантує правильності логіки усіх умов у виразі.
Що саме тестується в Condition Testing?
- Кожна атомарна умова (елемент логічного виразу)
- Перевіряється, чи вона може бути як true, так і false
- Перевіряється, чи вона впливає на результат усього виразу
Види тестування умов
| Види покриття | Опис |
| Condition Coverage | Кожна атомарна умова в логічному виразі перевіряється на true і false |
| Decision (Branch) Coverage | Перевірка, що кожна гілка рішення (if, else, switch) виконується хоча б раз |
| Condition/Decision Coverage | Комбіноване покриття — кожна умова і кожне рішення |
| MC/DC (Modified Condition/Decision Coverage) | Перевірка, що кожна умова впливає на результат рішення незалежно |
Приклад:
def check_discount(age, is_member):
if age > 65 or is_member:
return "Discount"
else:
return "No Discount"
Тут маємо 2 умови поєднані логічним оператором or:
- age > 65
- is_member
Щоб провести condition testing, потрібно створити такі тести:
| Test Case | age > 65 | is_member | Результат |
| 1 | True | False | Discount |
| 2 | False | True | Discount |
| 3 | False | False | No Discount |
| 4 | True | True | Discount |
Тут кожна умова приймає значення true і false принаймні один раз.
Чому Condition Testing важливе?
- Знаходить логічні помилки, які не видно при поверхневому тестуванні.
- Гарантує, що кожен логічний елемент працює як треба
- Допомагає при розробці складних алгоритмів — особливо там, де є багато if/else, циклів, вкладених умов.
Підсумок
| Параметр | Опис |
| Що це? | Тестування атомарних умов у логічних виразах |
| Мета | Перевірити, чи кожна умова працює як треба |
| Основна дія | Кожна умова тестується на true і false |
| Перевага | Знаходить логічні помилки на ранній стадії |