![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Преимущества и недостатки комбинирования нисходящего и восходящего тестирования
Метод комбинирования нисходящего и восходящего тестирования называют также методом сандвича.. Тестирование методом сандвича - это компромисс между восходящим и нисходящим подходами; попытка воспользоваться достоинствами обоих методов, избежав их недостатков. При использовании этого метода одновременно начинают восходящее и нисходящее тестирование, собирая программу как снизу, так и сверху и встречаясь, где-то в середине. Точка встречи зависит от конкретной тестируемой программы и должна быть заранее определена при изучении ее структуры. Например, если разработчик может представить свою систему в виде уровня прикладных модулей, затем уровня модулей обработки запросов, затем уровня примитивных функций, то он может решить применять нисходящий метод на уровне прикладных модулей (программируя заглушки вместо модулей обработки запросов), а на остальных уровнях применить восходящий метод. Применение метода сандвича - это разумный подход к интеграции больших программ, таких, как операционная система или пакет прикладных программ. Достоинства: Метод сандвича сохраняет такое достоинство нисходящего и восходящего подходов, как начало интеграции системы на самом раннем этапе. Поскольку вершина программы вступает в строй рано, как в нисходящем методе, уже на раннем этапе получается работающий каркас программы. Поскольку нижние уровни программы создаются восходящим методом, то снимаются те проблемы нисходящего метода, которые были связаны с невозможностью тестировать некоторые условия в глубине программы. Недостатки: При тестировании методом сандвича возникает та же проблема, что и при нисходящем подходе. Проблема эта заключается в том, что невозможно досконально тестировать отдельные модули. Восходящий этап тестирования по методу сандвича решает эту проблему для модулей нижних уровней, но она может по-прежнему оставаться открытой для нижней половины верхней части программы. Поэтому существует модифицированный метод сандвича, в котором нижние уровни также тестируются строго снизу вверх. А модули верхних уровней сначала тестируются изолированно, а затем собираются нисходящим методом. Модифицированный метод сандвича тоже представляет собой компромисс между восходящим и нисходящим подходами.
25. Понятие тестовых дублёров (TestDoubles). Виды тестовых дублёров. ДжерардМесзарос предложил термин «тестовый дублер» - TestDouble - (по аналогии с дублером в кино), как общее имя для объектов, используемых для замены настоящих серверов компонентов в целях тестирования. Тестовый дублер – общий термин, для конкретных же реализаций используются специальные имена, для каждого вида тестовых дублеров. Существуют 2 категории тестовых дублеров: 1) Заглушки (stubs). Их основная задача - возврат в тестируемый модуль некоторого детерминированного значения. Используется для того, чтобы тестировался сам метод тестируемого класса. 2) Имитация (mock) - используется для имитации работы некоторого класса или модуля. Виды заглушек: - Фиктивный модуль (DummyObject) - простейший, самый примитивный тип тестового дублера, не выполняет никаких функций, а просто реализует некоторый интерфейс. Фиктивные модули не содержат реализации и в основном используются, когда необходимы только значения параметров, в остальном же бесполезны. Пустые значения могут считаться фиктивными модулями, но фиктивные модули как таковые являются производными от интерфейсов и базовых классов, не отягощенными реализацией. - Заглушка (Stub) - ступенька вверх от фиктивного модуля, представляет из себя функцию отображения входных параметров в выходных. Заглушки являются минимальными реализациями интерфейсов и базовых классов. Методы, возвращающие пустоту, обычно не содержат реализации вообще, тогда как методы, возвращающие значения, обычно возвращают жестко определенные значения. - Макет (FakeObject) - имитация поведения некоторого объекта. Макет динамически создается библиотекой макетов (прочие типы обычно требуют работы с кодом от разработчика теста). Разработчик теста не видит реального кода, реализующего интерфейс, или базовый класс, но может настроить макет на предоставление возвращаемых данных, ожидание вызова определенных элементов и так далее. В зависимости от своей настройки макет может вести себя как фиктивный модуль, заглушка или шпион. Виды имитаций: - Тестовый шпион (TestSpy). Тестовый шпион подобен заглушке, но помимо выдачи клиенту экземпляра, для вызова элементов, шпион также записывает, какие элементы вызывались, так что модульные тесты могут удостоверяться, что элементы вызывались в соответствии с ожиданиями. - Имитация (Mock). Имитация содержит более сложные реализации, обычно осуществляя взаимодействия между различными членами унаследованного ею типа. Она проверяет корректность передаваемых параметров, порядок вызовов и возвращает результаты некоторым интеллектуальным образом. Имитация не является рабочим решением, но может напоминать таковое, хотя и с некоторыми упрощениями.
![]() |