ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 13.04.2024
Просмотров: 18
Скачиваний: 0
Особливості інтеграційного тестування для процедурного програмування
Процес побудови набору тестів при структурному тестуванні визначається принципом, на якому грунтується конструювання Графа Моделі Програми (ГМП). Від цього залежить безліч тестових шляхів і генерація тестів, відповідних тестовим шляхам.
Першим підходом до розробки програмного забезпечення є процедурне (модульне) програмування. Процедурне програмування передбачає написання вихідного коду в імперативному (наказовому) стилі, приписуючому певну послідовність виконання команд, а також опис програмного проекту за допомогою функціональної декомпозиції. Такі мови, як Pascal і C, є імперативними. У них порядок вихідних рядків коду визначає порядок передачі управління, включаючи послідовного виконання, вибір умов і повторного виконання ділянок програми. Кожен модуль має декілька точок входу (при строгому написанні коду - одну) і декілька точок виходу (при строгому написанні коду - одну).
Складні програмні проекти мають модульно-ієрархічну побудову і тестування модулів є початковим кроком процесу тестування ПЗ. Побудова графа моделі модуля є тривіальним завданням, а тестування практично завжди проводиться по критерію покриття гілок C1, тобто кожна дуга і кожна вершина графа модуля повинні міститися, принаймні, в одній з шляхів тестування.
Таким чином, M(P,C1)= E Nij,
-
де Е - безліч дуг, а Nij - вхідні вершини ГМП.
Складність тестування модуля по критерію С1 виражається уточненою формулою для оцінки топологічної складності МакКейба:
V(P,C1)= q + kin, де q - число бінарних виборів для умов розгалуження, а kin - число входів графа.
Для інтеграційного тестування найбільш суттєвим є розгляд моделі програми, побудованої з використанням діаграм потоків управління. Контролюються зв'язки через дані, що готуються і використовувається іншими групами програм при взаємодії з тестованою групою. Кожна змінна міжмодульного інтерфейсу перевіряється на тотожність описів у взаємодіючих модулях, а також на відповідність початковим програмним специфікаціям. Склад і структура інформаційних зв'язків реалізованої групи модулів перевіряються на відповідність специфікації вимог цієї групи. Всі реалізовані зв'язки мають бути встановлені, впорядковані і узагальнені.
При складанні модулів в єдиний програмний комплекс з'являється два варіанти побудови моделі графу проекту:
-
Плоска або ієрархічна модель проекту наприклад Рис. 4.2
-
Граф викликів.
Якщо програма P складається з p модулів, то при інтеграції модулів в комплекс фактично виходить громіздка плоска (Рис. 4.2) або простіша - ієрархічна (Рис. 4.3) - модель програмного проекту. Як критерій тестування на інтеграційному рівні зазвичай використовується критерій покриття гілок C1. Введемо також наступні позначення:
-
n - число вузлів в графі;
e - число дуг в графі;
q - число бінарних виборів з умов розгалуження в графі;
kin - число входів в граф;
kout - число виходів з графів;
kext - число точок входу, які можуть бути викликані ззовні.
Тоді складність інтеграційного тестування всієї програми P по критерію C1 може бути виражена формулою:
Проте при подібному підході до побудови ГМП (граф моделі програми) розробник тестового набору стикається з неприйнятно високою складністю тестування V(P,C) для проектів середнього і великого об'єму (розміром в 105 - 107 рядків), що виходить із зростання топологічної складності керуючого графа, по МакКейбу. Таким чином, використовуючи плоску або ієрархічну модель, важко дати оцінку протестованості TV(P,C,T) для всього проекту і оцінку залежності протестованості проекту від протестованості окремого модуля TV(Modi,C), включеного в цей проект.
Розглянемо другу модель збірки модулів в процедурному програмуванні - граф викликів. У цій моделі в разі інтеграційного тестування враховуються лише виклики модулів в програмі. Тому з безлічі M(Modi,C) тестованих елементів можна виключити ті елементи, які не схильні до впливу інтеграції, тобто вузли і дуги, не сполучені з викликами модулів:
де
або nj містить виклики модулів, тобто
E' - підмножина ребер графа модуля, а Nin - "вхідні" вузли графа.
Ця модифікація ГМП наводить до здобуття нового графа - графа викликів, кожен вузол в цьому графові представляє модуль (процедуру), а кожна дуга - виклик модуля (процедури). Для процедурного програмування подібний крок спрощує графову модель програмного проекту до прийнятного рівня складності. Таким чином, може бути визначена цикломатична складність спрощеного графа модуля Modi як V'(Modi,C'), а формула, що виражає складність інтеграційного тестування програмного проекту, набирає наступного вигляду
Так, для програми, ГМП якою приведена на Рис. 4.2 для здобуття графа викликів з ієрархічної моделі проекту мають бути виключені всі дуги, окрім:
-
Дуги 1-2, що містить вхідний вузол 1 графа G.
-
Дуг 2-8, 8-7, 7-10, що містять виклик модуля G1.
-
Дуг 2-9, 9-7, 7-10, що містять виклик модуля G2.
В результаті граф викликів набере вигляду, показаного на Рис. 5.2, а складність даного графа по критерію C1' рівна:
V'(G,C1')= q + Kext =1+1=2.
V'(Modi,C') також називається в літературі складністю модульного дизайну (complexity of module design)
Мал. 5.2. Граф викликів модулів