logo search
Диплом_Лёша

2.2.7.3 Методы тестирования

Существует два основных вида тестирования: функциональное и структурное.

  1. Функциональное тестирование.

При функциональном тестировании программа рассматривается как “черный ящик” (то есть ее текст не используется). Под «чёрным ящиком» понимается объект исследования, внутреннее устройство которого неизвестно. Происходит проверка соответствия поведения программы ее внешней спецификации.

Поскольку исчерпывающее функциональное тестирование невозможно, речь может идти о разработки методов, позволяющих подбирать тесты не “вслепую”, а с большой вероятностью обнаружения ошибок в программе.

  1. Структурное тестирование.

При структурном тестировании программа рассматривается как “белый ящик” (т.е. ее текст открыт для пользования). "Белый ящик" - тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка, на котором она писалась.

Стратегия тестирования по принципу Белого ящика - также называемая стратегией тестирования управляемая логикой программы позволяет проверить внутреннюю структуру программы.

Полным тестированием в этом случае будет такое, которое приведет к перебору всех возможных действий и переходов. Даже для средних по сложности программ числом таких путей может достигать десятков тысяч. Если ограничиться перебором только линейных не зависимых путей, то и в этом случае исчерпывающее структурное тестирование практически невозможно, т. к. неясно, как разработать тесты, чтобы обеспечить “покрытие” всех таких путей.

Поэтому при структурном тестировании необходимо использовать другие критерии его полноты, позволяющие достаточно просто контролировать их выполнение, но не дающие гарантии полной проверки логики программы.

3. Метод большого скачка.

Вероятно, самый распространенный подход к интеграции модулей — метод “большого скачка”. В соответствии с этим методом каждый модуль тестируется автономно. По окончании тестирования модулей они интегрируются в систему все сразу.

Метод большого скачка по сравнению с другими подходами имеет много недостатков и мало достоинств. Заглушки и драйверы необходимы для каждого модуля. Заглушки, это часть программы, они отделяют каждый модуль от другого, позволяют протестировать его автономно.

Модули не интегрируются до самого последнего момента, а это означает, что в течение долгого времени серьезные ошибки в сопряжениях могут остаться необнаруженными.

И все же большой скачок не всегда нежелателен. Если программа мала и хорошо спроектирована, он может оказаться приемлемым. Однако для крупных программ метод большого скачка обычно губителен.

4. Восходящее тестирование.

При восходящем тестировании программа собирается и тестируется снизу вверх. Модули самого нижнего уровня тестируются изолированно. Затем тес­тируются модули, непосредственно вызывающие уже проверенные. Модули более высокого уровня тестируются вместе с уже проверенными модулями более низкого уровня. Про­цесс повторяется до тех пор, пока не будет достигнута вершина.

При восходящем тестировании для каждого модуля необходим драйвер: нужно подавать тесты в соответствии с сопряжением тестируемого модуля. Одно из возможных решений — написать для каждого модуля небольшую ведущую программу. Тестовые данные представляются как “встроенные” непосредственно в эту программу переменные и структуры данных, и она многократно вызывает тестируемый модуль, с каждым вызовом передавая ему новые тестовые данные.

В лучше случае можно воспользоваться программой тестирования модулей — это инструмент тестирования, позволяющий описывать тесты на специальном языке и избавляющий от необходимости писать драйверы.

5. Нисходящее тестирование.

При нисходящем подходе программа собирается и тестируется сверху вниз. Изолировано тестируется только головной модуль. После того как тестирование этого модуля завершено, с ним соеди­няются один за другим модули, непосредственно вызываемые им, и тестируется полученная комби­нация.

6. Метод «сандвича».

Этот метод представляет собой компромисс между восходящим и нисходящим подходами. При использовании этого метода одновременно начинают вос­ходящее и нисходящее тестирование, собирая программу как снизу, так и сверху, и встречаясь в середине. Метод «сандвича» сохраняет, таким образом, достоинства нисходящего и восходящего подходов.

Применение метода сандвича - это подход к интеграции больших программ, таких, как операционная система или пакет прикладных программ.