Нисходящее тестирование предполагает, что программа тестируется по частям, начиная с самого верхнего уровня иерархии модулей и постепенно спускаясь вниз. 1 Некоторые преимущества:
- большинство тестов готовится в форме, рассчитанной на пользователя; 35
- во многих случаях относительно небольшой объём отладочного программирования; 35
- отпадает необходимость тестирования сопряжения модулей. 35
Некоторые недостатки:
- модуль редко тестируется досконально сразу после его подключения; 13
- тестовое состояние информационной среды готовится косвенно, что затрудняет подготовку тестов и требует высокой квалификации разработчика; 35
- сложно проверять определённые логические условия, например ошибочные ситуации или защитные проверки. 3
Восходящее тестирование подразумевает, что сначала тестируются все программные модули, входящие в состав системы, и только затем они объединяются для интеграционного тестирования. 4 Некоторые преимущества:
- значительно упрощается локализация ошибок: если модули протестированы по отдельности, то ошибка при их совместной работе есть проблема их интерфейса; 4
- область поиска проблем у тестировщика достаточно узка, и поэтому гораздо выше вероятность правильно идентифицировать дефект. 4
Некоторые недостатки:
- необходимость в разработке драйвера и заглушек для модульного тестирования перед проведением интеграционного тестирования и при интеграционном тестировании части модулей системы; 4
- тестовые данные готовятся, как правило, не в той форме, которая рассчитана на пользователя; 5
- большой объём отладочного программирования. 5
У разных специалистов в области тестирования разные мнения по поводу того, какой из методов более удобен при реальном тестировании программных систем. 4