|
Процесс разработки - Тестирование поверхностной и глубинной структуры |
Страница 24 из 37
Тестирование поверхностной и глубинной структуры
Поверхностная структура — это видимая извне структура объектно-ориентированной системы. Она отражает взгляд пользователя, который видит не функции, а объекты для обработки. Тестирование поверхностной структуры основывается на задачах пользователя. Главное — выяснить задачи пользователя. Для разработчика это нетривиальная проблема, поскольку требует отказа от своей точки зрения. Глубинная структура отражает внутренние технические подробности объектно-ориентированной системы (на уровне проектных моделей и программного текста). Тесты глубинной структуры исследуют зависимости, поведение и механизмы взаимодействия, которые создаются в ходе проектирования подсистем и объектов. В качестве базиса для тестирования глубинной структуры используются модели анализа и проектирования. Например, разработчик исследует диаграмму взаимодействия (невидимую извне) и спрашивает: «Проверяет ли тест сотрудничество, отмеченное на диаграмме?» Диаграммы классов обеспечивают понимание структуры наследования, которая используется в тестах, основанных на ошибках. Рассмотрим операцию ОБРАБОТАТЬ (Ссылка_на_РодительскийКласс). Что произойдет, если в вызове этой операции указать ссылку на дочерний класс? Есть ли различия в поведении, которые должны отражаться в операции ОБРАБОТАТЬ? Эти вопросы инициируют создание конкретных тестов.
Способы тестирования содержания класса
Описываемые ниже способы ориентированы на отдельный класс и операции, которые инкапсулированы классом.
Стохастическое тестирование класса
При стохастическом тестировании исходные данные для тестовых вариантов генерируются случайным образом. Обсудим методику, предложенную С. Кирани и В.Тсай[43]. Рассмотрим класс Счет, который имеет следующие операции: Открыть, Установить, Положить, Снять, Остаток, Итог, ОграничитьКредит, Закрыть. Каждая из этих операций применяется при определенных ограничениях: q счет должен быть открыт перед применением других операций; q счет должен быть закрыт после завершения всех операций. Даже с этими ограничениями существует множество допустимых перестановок операций. Минимальная работа экземпляра Счета включает следующую последовательность операций: Открыть ? Установить ? Положить ? Снять ? Закрыть. Здесь стрелка обозначает операцию следования. Иначе говоря, здесь записано, что экземпляр Счета сначала выполняет операцию открытия, затем установки и т. д. Эта последовательность является минимальным тестовым вариантом для Счета. Впрочем, в эту последовательность можно встроить группировку, обеспечивающую создание других вариантов поведения: Открыть ? Установить ? Положить ? [Остаток?Снять?Итог?ОграничитьКредит?Положить]n ? Снять ? Закрыть. Здесь приняты дополнительные обозначения: точка означает операцию И/ИЛИ, пара квадратных скобок — группировку, а показатель степени — количество повторений группировки. Набор различных последовательностей может генерироваться случайным образом: Тестовый вариант N: Открыть ? Установить ? Положить ? Остаток ? Снять ?Итог ? Снять ? Закрыть. Тестовый вариант М: Открыть ? Установить ? Положить ? Итог ? ОграничитьКредит ? Снять ? Остаток ? Снять ? Закрыть. Эти и другие тесты случайных последовательностей проводятся для проверки различных вариантов жизни объектов.
|