Реклама:

Но как может кто-либо гарантировать, что отброшенные условия никогда не появятся? К тому же следует понимать, что этот пример очень прост. А что, если мы его слегка усложним, сделав каждую цифру десятичной, т.е. способной принимать любые целые значения от 0 до 9?

Даже при введенных выше ограничениях время тестирования подскочит теперь до 3.16 миллиардов лет!

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

10.4. Тестирование «джексоновских» программ

Читателю известно, что все программы, сконструированные по методике Джексона, легко понимаются при простом «чтении» схем структур и структурированных изложений, которые создаются в процессе конструирования. Всякая джексоновская программа включает последовательности, выборы, повторения и некоторые переходы при весьма строгих условиях управления. Можно воспользоваться этой явной структурой программ как основой для тестирования.

Рассмотрим последовательно каждый из этих типов конструкций.

Последовательности

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

Выборы

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

Повторения

Каждое повторение в программе нужно проверить с тестовыми данными, побуждающими эту конструкцию проработать минимальное и максимальное допустимое число раз. Например, если повторение предназначено для выполнения определенного процесса от нуля до ста раз, то тестовые данные должны вызвать выполнение этого процесса нуль раз при одном тестовом просчете и сто раз при другом просчете. Кроме того, нужно стимулировать некоторое промежуточное число выполнений процесса, например 50 раз, и следует удостовериться в том, что не возникнет возможности для «незаконного» числа выполнений, например 200 раз, или для отрицательного числа выполнений.

Переходы или ветвления

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


⇐ Предыдущая страница| |Следующая страница ⇒