ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.04.2024
Просмотров: 180
Скачиваний: 1
Интеграционное тестирование при структурном подходе к программированию.
Структура программы:
|
|
|
|
|
|
М1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
М2 |
|
М3 |
|
М4 |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
М5 |
|
М6 |
|
М7 |
|
М8 |
|
М9 |
Если нижние модули отвечают за обработку и ввод информации, то нужно начинать снизу вверх. Если не отвечают – то можно попробовать отрабатывать сверху вниз. ПОэтмоу сначала тестируем сверху вниз: сначала одну ветку: М1->М2->М5, а на остальные делаем заглушки.
Драйвер (в контексте тестирования) – модуль, обеспечивающий вызов и передачу тестируемому модулю данных и необходимых результатов.
Заглушка – модуль, имитирующий функции модулей, вызываемых при тестировании.
Пошаговое тестирование – последовательно добавляем в систему по модулю и каждый раз тестируем.
Сборка при тестировании:
Сверху вниз
Снизу вверх
Пошаговая
Монолитная – тестирование целиком системы.
Процесс тестирования – процесс многократного повторения кода программы в различных условиях для обнаружения как можно большего количества ошибок.
Тестирование при объектно-ориентированном подходе.
Построение графовой модели программы для начала тестирования.
При объектном подходе «модульное тестирование» означает тестирование класса.
Графовая модель программы –ГМП.
Вершины графа – методы
Ребра графа – вызовы методов
Романова Т.Н. – Технология программирования [2011]by Melvin |
Страница 43 |
|
|
MM-путь |
|
|
|
|
КлассN |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Четыре MM пути: |
|
|
|
MsgA |
1 |
|
|
|
|
|
|
|
|
|
Метод3 |
|
|
|
|
1. MsgA M3 Msg3 M4 MsgD |
|
|
|
|
|
|
|
Msg3 |
|||
|
|
|
|
|
|
2. MsgB M1 Msg1 M4 MsgD |
|||
|
|
|
|
|
|
|
|
||
MsgB |
|
Метод1 |
Msg1 |
2 |
Метод4 |
MsgD |
3. |
MsgB M1 Msg2 M5 |
|
|
|
|
|
|
|||||
|
|
|
Msg2 |
|
|
|
|
4. |
MsgC M2 |
MsgC |
4 |
Метод2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Call method5()(p_пути) |
|
3 |
|
Метод5 |
|
|
|
|
|
|
|
|
|
|
Число MM-путей зависит от схемы обработки сообщений данным классом, что должно быть определено в спецификации класса.
Сложность тестирования интеграционного класса.
Общая формула.
Сложность тестирования по критерию C – это функция от количества точек входа и количества коэффициентов:
Kmsg – число точек входа в класс, которые могут быть вызваны извне.
Kem – число определяется как сумма методов, которые могут быть вызваны из других классов.
–если call method5() - public
–если call method5() - private
Итак, каждый класс тестируем отдельно. Оцениваем. Теперь строим интеграционную модель всех классов, которые могут между собой все взаимодействовать.
Дерево классов проекта.
|
Msg1 |
Порожденный класс 1.1 |
|
|
Порожденный класс 1.1.x |
Базовый класс1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Порожденный класс 1.2 |
Msg1 |
||
|
|
|
|
|
|
… |
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Класс N.1 |
|
|
|
Базовый классN |
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Класс N.K
Романова Т.Н. – Технология программирования [2011]by Melvin |
Страница 44 |
Класс3 |
|
Класс1 |
Класс2 |
M1 |
M1 |
|
|
|
M2 |
M3 |
M1 |
Методика тестирования классовой модели в несколько этапов.
1.Сначала тестируется каждый метод в каждом классе
2.Объединяем их в графовую модель программы
3.Интеграционное тестирование как дерево классов, отслеживаются реакции программы на внешние события
Романова Т.Н. – Технология программирования [2011]by Melvin |
Страница 45 |
19.04.2011
Структурное тестирование программного обеспечения
Всегда надо описывать цель тестирования, аппаратура, ПО и т.п. и только после этого следует приводить сами тесты.
Тестирование – это процесс выполнения программы с целью обнаружения ошибок. Тестирование считается успешным, если было найдено много ошибок.
Текст программы |
|
|
|
|
|
|
|
|
|
|
Результаты |
|
|
Ошибки |
|
|
Исправление |
|
тестирование |
оценивание |
|
отладка |
||||
|
тестов |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Исходные данные |
|
Ожидаемые |
Интенсивность |
|
|
|
||
|
ошибок |
|
|
|
||||
|
результаты |
|
|
|
||||
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Модель |
прогноз |
|
надежности
Что дает тестирование?
1.Обнаружение ошибок.
2.Демонстрация соответствия функций программы ее назначению.
3.Демонстрацию реализации требований (записанных в ТЗ) к характеристикам программы. Например, заявлено время реактивности – 3 секунды.
4.Отображение надежности как индикатор качества разработанного ПО.
Тестирование не может продемонстрировать отсутствие ошибок. Эксплуатируют неделю программу на полной нагрузке, вывелось 2 сбоя – вот и вероятность.
Цели:
1.Проверить, на сколько заявленные функции заявленным требованиям.
2.В режиме нагрузочного и предельного тестирования цель тестирования: определить реактивность системы. Напр., в ТЗ заявлена реактивность 3 секунды. Цель – определить,
так ли это. «Нагрузочные и предельное тестирование показало, что система укладывается в заданные временные рамки».
Программное и техническое кружение в режиме тестирования. Это ОС, библиотеки, технические платформы и т.п. –все, что используется при тестировании. Это обязательно, т.к. тестируется не только программа, но и оценивается возможность перехода из одной ОС в другую.
Способ тестирования базового пути.
Все это в рамках тестирования белого ящика. Мы говорим о структуре программы. Этот способ предложил Том МакКейб в 1976 году.
Способ тестирования базового пути дает возможность:
1.Получить комплексную оценку сложности программы
2.Использовать эту оценку для определения необходимого количества тестовых вариантов.
Романова Т.Н. – Технология программирования [2011]by Melvin |
Страница 46 |
Потоковый граф
В качестве узлов графа будем использовать один или несколько линейных операторов программы. Узел или вершина – это линейные участки программы.
Дуги отображают поток управления в программе. Дуги ориентированы.
Узлы бывают операторные. В качестве отдельного оператора используются скобки. Концы цикла (end loop) и конец условия (end if) нумеруются как отдельные операторы.
If a or b then X else Y end if |
|
|
|
|
|
НЕПРАВИЛЬНО: |
Правильно: |
|
|
|
|
A or B |
|
|
|
a |
|
Да |
Нет |
|
Л |
|
И |
|
|
|
|
||
|
|
|
|
R2 |
|
x |
y |
x |
|
|
y |
|
|
Л |
И |
|
|
|
|
|
|
|
|
End if |
Y |
R1 |
|
X |
R3 |
|
|
|
|
|
|
R1,R2,R3 – регионы. R3 – глобальный. |
End if |
|
|
||
|
|
|
|
||
Процедура сжатия файла: |
|
|
|
|
Потоковый |
|
|
|
|
|
граф G |
1. Выполнять пока нет OEF, читать запись из файла |
|
|
1 |
2.Если запись не пуста
3.То запись удалить
4.Иначе если поле а>поле b
5. |
То удалить поле b |
|
|
2 |
|
6. |
Иначе удалить поле a. |
|
|
|
|
7. |
|
|
4 |
|
3 |
|
a. End if, End if |
8 |
|
R1 |
|
|
b. Конец выполнить |
|
|
|
|
8. |
Конец сжатия |
5 |
R2 |
6 |
R3 |
|
|
||||
Потоковый граф для процедуры сжатия. |
|
|
|
|
|
|
|
R4 |
7a |
|
7b |
|
|
|
|
Цикломатическая сложность – количественная метрика, обеспечивающая логическую метрику сложности программы. Она определяет:
1.количество независимых путей в базовом множестве
2.Верхнюю оценку количества тестов, которая гарантирует однократное выполнение всех операторов. Критерий C0 – самый мощный критерий, когда каждый оператор выполним только один раз. Для мощных программ это недостижимо.
Независимые пути в потоковом графе G:
Путь1: 1—8
Путь2: 1—2—3—7а—7b—1—8
Путь3: 1—2—4—5—7а—7b—1—8
Романова Т.Н. – Технология программирования [2011]by Melvin |
Страница 47 |