Control Flow Testing

Control Flow Testing (тестування керування потоком) — це один із підходів до структурного (white-box) тестування, який фокусується на логічному потоці виконання програми або окремої функції. Мета — перевірити всі можливі шляхи, якими може пройти виконання програми, щоб виявити помилки в логіці, умовах або переходах.

Основні терміни:

  • Control Flow Graph (CFG) — граф керування потоком, у якому вузли представляють блоки коду (наприклад, оператори або групи інструкцій), а ребра — можливі переходи між цими блоками залежно від умов.
  • Блок (Basic Block) — послідовність інструкцій, що виконується без розгалужень.

Основні види контрольного тестування потоку:

  1. Statement Coverage (Покриття операторів):
    • Перевіряє, чи всі інструкції коду були виконані хоча б один раз.
  2. Branch Coverage (Покриття гілок / умов):
    • Перевіряє, чи всі можливі гілки (true/false) умов були пройдені.
  3. Path Coverage (Покриття шляхів):
    • Перевіряє всі можливі унікальні шляхи виконання коду. Найглибший рівень, але часто складний для реалізації через велику кількість можливих шляхів.

Мета Control Flow Testing:

  • Виявити:
    • логічні помилки;
    • помилки умовного переходу;
    • пропущені шляхи;
    • нескінченні цикли або недосяжний код.

Приклад:

def absolute_value(x):
    if x >= 0:
        return x
    else:
        return -x

Для цього прикладу Control Flow Testing має охопити два шляхи:

  • коли x >= 0 (гілка if);
  • коли x < 0 (гілка else).

Переваги:

  • Дає глибоке розуміння внутрішньої логіки програми.
  • Допомагає виявити складні, умовно-залежні помилки.

Підбиваючи підсумок, Control Flow Testing — це ефективний підхід до внутрішнього тестування логіки програмного забезпечення, що дозволяє виявити помилки, які можуть залишитися непоміченими при тестуванні лише на основі вимог або специфікацій (тобто без доступу до коду).

Leave a Reply

Your email address will not be published. Required fields are marked *