Тема 4. ТЕСТУВАННЯ ПОТОКІВ ДАНИХ ПРОГРАМИ
Група критеріїв для даного методу побудована на принципах досяжності й доступу до змінних. Будемо вважати, що вираз y:=f(x1,..., xn) використовує змінні x1,...,xn для обчислювального процесу (Computational use), що позначається як c-use, при цьому даний вираз є визначення змінної у (def у). Будемо вважати, що вираз p(x1,…,xn) використовує змінні x1,...,xn як предикати (Predicate-use), що позначається як p-use. Шлях p=(nin,...,nm) вважається таким, що не містить визначень змінної x, якщо в ньому немає def x. Для вершини ni та змінної x, такої що x Для вершини ni та змінної x, такої що x Позначимо як du - шлях (шлях визначення-використання): - шлях p = (ni+1,... nj, nk), що містить глобальне визначення змінної x у вершині ni, і такий, що p не містить визначень змінної х, але містить c - use (x), і всі вершини ni... nk (крім ni і nk) попарно відмінні - або шлях p(nj, nk), що не містить визначень змінної х, але містить предикатне використання х (p- use (x)) і всі вершини ni... nk попарно відмінні.
Розглянемо критерії тестування потоків даних програми. Критерій “ all-defs”
Даний критерій вимагає створення набору тестів, які б містили для кожної вершини ni і кожної змінної x Критерій “all p-uses“ За даним критерієм вимагається створення набору тестів, які б містили для кожної вершини ni і кожної змінної x Критерій “all c-uses“
Даний критерій вимагає створення набору тестів, які б містили для кожної вершини ni і кожної змінної x Ці два критерії гарантують перевірку того факту, що використовувані змінні в предикатних виразах та в обчисленнях були проініціалізовані.
Критерій “all c-uses / some p-uses“
Наступне завдання полягає у відповіді на питання: чи використані всі ініціалізовані змінні в обчисленнях або хоча б у предикатних виразах. Критерій «all c-uses / some p-uses» вимагає створення набору тестів, які б містили для кожної вершини ni і кожної змінної x
Критерій “all p-uses / some c-uses“
Даний критерій аналогічний попередньому, з тією різницею, що в ньому перевіряються входження шуканої змінної в предикатні вирази, а якщо таких не виявлено, то в обчислення. Даний критерій вимагає створення набору тестів, які б містили для кожної вершини ni і кожної змінної x
Критерій “all uses“ (всі використання)
Даний критерій є узагальнюючим для останніх двох критеріїв. Він вимагає створення набору тестів, які б містили для кожної вершини ni і кожної змінної x
Критерій “all du-paths” Найбільшу повноту покриття забезпечує критерій «all du-paths», він враховує всі можливі використання зазначеної змінної. Даний критерій вимагає створення набору тестів, які б містили для кожної вершини ni і кожний змінної x Всі критерії структурного тестування узагальнені й представлені у вигляді ієрархічної структури, зображеної на рис. 2. Дана структура дозволяє виявити існуючі взаємозв'язки між критеріями. Рис. 2. Взаємозв'язок між критеріями структурного тестування.
Взаємозв'язки між критеріями, які ґрунтуються на потоці керування програми, були вже проаналізовані вище, а критерії потоків даних, як видно з рис. 2, позв'язані в такий спосіб: найширшим є критерій «all du-paths», його виконання забезпечує виконання критерію «all uses», який, в свою чергу, є об'єднанням критеріїв «all p-uses / some c-uses» і «all c-uses / some p-uses». Кожний з останніх двох забезпечує виконання критерію «all-defs». При цьому, виходячи з визначення, «all p-uses / some c-uses» гарантує «all p-uses», а «all c-uses / some p-uses» гарантує «all c-uses». Вочевидь, що покриття всіх шляхів, забезпечить виконання критерію «all du-paths», а критерій «all p-uses» перевірить проходження всіх переходів (всіх рішень). Таким чином, схема буде мати вигляд, представлений на Рис 2.
|