|
Как правило, тестирование программы выполняется поэтапно, начиная с проверки каждого модуля (которую иногда относят к отладке) и кончая заключительной проверкой всей системы. Если при этом не придерживаться какой-либо четкой последовательности действий, то вряд ли можно надеяться на создание надежного программного обеспечения. Стратегия тестирования обычно создается на основе одного из двух методов: либо традиционного метода тестирования снизу вверх, либо более современного подхода — тестирования сверху вниз.
5.9.1. ТЕСТИРОВАНИЕ СНИЗУ ВВЕРХ
Этот широко распространенный метод предполагает первоначальное написание и проверку модулей самого нижнего уровня. Затем программируются и тестируются элементы более высокого уровня и так далее до тех пор, пока не будет завершено написание всей программы.
Тестирование по методу снизу вверх в настоящее время не находит поддержки со стороны приверженцев проектирования и программирования по методу сверху вниз. При этом основная критика связана с тем обстоятельством, что метод снизу вверх не дает возможности, выявлять серьезные ошибки в алгоритме и интерфейсах почти до момента окончания разработки проекта. А это приводит к тому, что программу может лихорадить . от многочисленных переделок.
Второй недостаток указанного метода тестирования заключается в том, что при каждом новом тестировании элементов различного уровня требуются новые тестовые средства, драйверы и тестовые данные. Этот процесс сам по себе требует большого объема работы по программированию.
5.9.2. ТЕСТИРОВАНИЕ СВЕРХУ ВНИЗ
Этот метод тестирования является дополнительным этапом процесса проектирования сверху вниз, сквозного контроля и кодирования сверху вниз. При таком методе разработки программного обеспечения вначале пишется основная программа, а не-запрограммированные модули более низкого уровня заменяются имитирующими их подыгрывающими программами. Такая "скелетная" программа тем не менее может быть испытана в отсутствие вызываемых подпрограмм и даже без каких-либо данных. Эта проверка должна выявить неточности языка управления заданиями, который часто бывает далеко не тривиальным. Следующий шаг должен состоять в добавлении модуля, генерирующего входные данные, — это может быть либо модуль ввода, либо некоторый вспомогательный модуль, заменяющий его до момента окончания программирования последнего. Вслед за этим испытания проводятся с использованием каких-либо простых входных данных.
5.9.3. ПРЕИМУЩЕСТВА ТЕСТИРОВАНИЯ СВЕРХУ ВНИЗ
По мере того как "скелет" программы "обрастает" новыми модулями, должны добавляться и новые тестовые данные, объем которых увеличивается постепенно, одновременно с разрастанием программы. В результате появляется возможность накапливать тестовые данные вместо раздельного их формирования для каждого модуля.
Еще одним плюсом тестирования но методу сверху вниз является то, что стержневая логика программы тестируется на раннем этапе, и эта проверка повторяется многократно с добавлением новых модулей. При тестировании же снизу вверх стержневая логика программы испытывается в последнюю очередь; в этом случае при обнаружении в ней ошибки могут быть неверными прошедшие предыдущие проверки элементы более низких уровней, и огромная работа может оказаться выполненной напрасно.
Обычным делом в разработке систем является такая ситуация, когда две группы программистов разрабатывают две различные подсистемы, которые должны взаимодействовать друг с другом или сходиться в верхнем узле. При использовании метода снизу вверх место связи подсистем испытывается в последнюю очередь. Метод сверху вниз позволяет проверить взаимодействие подсистем еще до того, как будут готовы модули нижних уровней.
Немаловажным преимуществом метода сверху вниз является распределенное тестирование, проводимое фактически на протяжении всей разработки проекта, когда модули тестируются по мере их добавления. Наоборот, при использовании метода снизу вверх вся работа по тестированию скапливается к моменту окончания проектирования. Очень часто в этот момент бывает настолько сильным внешнее давление на разработчиков с требованием быстрейшего завершения проекта, что тестирование делается кое-как, а это, как правило, приводит к катастрофическим последствиям, когда неиспытанная система выходит из строя.
Старайтесь применять тестирование по методу сверху вниз.
Кроме всего прочего, тестирование сверху вниз дает возможность получать результаты раньше, чем при использовании другого метода, причем программа может их выдавать, даже не будучи завершенной. С этими результатами можно ознакомить пользователя, который убедится не только в достижении прогресса в работе, но и в том, правильно ли поняты программистами выдвинутые требования. Любые обнаруженные при этом неточности или упущения могут быть устранены до того, как начнется интенсивное программирование, а не после его завершения.
5.9.4. КАКОЙ МЕТОД ЛУЧШЕ? .
Ответ на этот вопрос зависит от конкретного проекта. Для небольших программ между двумя рассмотренными методами практически нет различий. В ряде случаев подыгрывающие модули, необходимые при тестировании сверху вниз, могут оказаться столь же сложными, сколь и настоящие модули, что исключает возможность извлечения каких-либо выгод. При использовании метода сверху вниз возможна и такая ситуация, когда проектируемый модуль нижнего уровня невозможно реализовать; если этот факт не обнаружить своевременно, могут возникнуть серьезные затруднения. На практике часто приходится останавливаться на комбинированной стратегии, при которой часть программирования и тестирования осуществляется по методу сверху вниз, а часть — по методу снизу вверх.
⇐5.8. Проверка правильности проектных решений || Оглавление || 5.10. Тестовые данные⇒
|