ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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