Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
480 Кб
Скачать
☆

Завдання

1 . За заданою блок-схемою алгоритму створити програму, що реалізує цей алгоритм, побудувати КГП та розробити тести, що задовольняють наведені вище критерії, виписати шляхи.

2. З поміж наведених нижче рисунків, обрати ті на яких зображено траєкторії покриття операторів, гілок, шляхів, умов, умо-гілок:

А) Б) В)

3) Для функції GD та її модифікації побудувати блок-схему та на ній відзначити шляхи для кожного з критеріїв які наведені в теоретичній частині лабораторної роботи.

Лабораторна 2. Тестування потоків даних

Група критеріїв для даного методу побудована на принципах досяжності й доступу до змінних. Будемо вважати, що вираз використовує змінні для обчислювального процесу (Computational use), що позначається як c-use, при цьому даний вираз є визначення змінної у (def у). Будемо вважати, що вираз використовує змінні як предикати (Predicate-use), що позначається як p-use.

Шлях вважається таким, що не містить визначень змінної , якщо в ньому немає . Для вершини та змінної , такої що вираз позначає набір всіх вершин таких, що і шлях від до не містить визначень .

Для вершини та змінної , такої що вираз позначає набір всіх ребер , таких що і шлях від до не містить визначень .

Розглянемо критерії тестування потоків даних програми.

Критерій “all-defs”

Даний критерій вимагає створення набору тестів, які б містили для кожної вершини і кожної змінної як мінімум один шлях, що не містить визначень х від до елемента з або . Критерій забезпечує перевірку правильної ініціалізації змінних, але не дає гарантій їхнього правильного використання в обчислювальному процесі. Це завдання ставиться поетапно перед наступними критеріями.

Критерій “all p-uses“

За даним критерієм вимагається створення набору тестів, які б містили для кожної вершини і кожної змінної як мінімум один шлях, що не містить визначень від до елемента .

Критерій “all c-uses“

Даний критерій вимагає створення набору тестів, які б містили для кожної вершини і кожної змінної як мінімум один шлях, що не містить визначень від до елемента .

Ці два критерії гарантують перевірку того факту, що використовувані змінні в предикатних виразах та в обчисленнях були проініціалізовані.

Критерій “all c-uses / some p-uses“

Наступне завдання полягає у відповіді на питання: чи використані всі ініціалізовані змінні в обчисленнях або хоча б у предикатних виразах. Критерій all c-uses / some p-uses вимагає створення набору тестів, які б містили для кожної вершини і кожної змінної як мінімум один шлях, що не містить визначень від до елемента або, якщо - порожня множина, хоча б шлях, що не містить визначень від до елемента з .

Критерій “all p-uses / some c-uses“

Даний критерій аналогічний попередньому, з тією різницею, що в ньому перевіряються входження шуканої змінної в предикатні вирази, а якщо таких не виявлено, то в обчислення.

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

Критерій “all uses“ (всі використання)

Даний критерій є узагальнюючим для останніх двох критеріїв. Він вимагає створення набору тестів, які б містили для кожної вершини і кожної змінної як мінімум один шлях, що не містить визначень від до елемента і до всіх елементів з

Критерій “all du-paths”

Найбільшу повноту покриття забезпечує критерій all du-paths, він враховує всі можливі використання зазначеної змінної. Даний критерій вимагає створення набору тестів, які б містили для кожної і кожної змінної всі du-шляхи даного визначення.

Приклади. Проілюструємо побудову графу потоку даних. Розглянемо функцію:

void MinMax (int& Min, int& Max)

{ int Hilf;

if (Min > Max) {

Hilf = Max;

Max = Min;

Min = Hilf;

}

}

Для кожного вузла на графі управління зазначена відповідність із типовими структурами потоку даних (визначення, предикатні використання, використання в обчислювальному процесі). Розглянемо відповідності між вершинами потоку управління та потоку даних, що представлені в таблиці:

Як було зазначене вище, предикатне використання відповідає ребрам графу:

Побудуємо шляхи визначення-використання (предикатне та в обчислювальному процесі ):

Отже, були отримані всі необхідні дані для проведення структурного тестування на основі потоку даних.