Реклама:

Здесь уместен важный вопрос: каков достаточный объем тестирования?

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

Предположим, что мы имеем дело с программой с двумя входными файлами А и В (см. рис. 10.1). В - это основной файл, состоящий из записей, каждая из которых содержит 25 двоичных цифр. Как известно, двоичные цифры могут принимать только значения «1» или «О». А - это файл транзакций, состоящий из записей, в каждой из которых только по 10 двоичных цифр. Эти записи служат для обновления записей из файла В. Нужно читать оба файла совместно, выполнять надлежащие обновления записей из файла В и создать в качестве выходного новый обновленный файл. Очевидно, что требуемая программа сводится к упорядочению. (Полное описание таких программ см. в гл. 6.)

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

При десяти двоичных цифрах в каждой записи А это означает, что для всякой записи в файле А возможны 210, т.е. 1024 значения. Аналогично любая запись в файле В может принимать 2 , т.е. 33 554 432 различных значения. Нужно тестировать все эти ситуации. Что еще хуже надлежит рассмотреть все возможные комбинации записей из файлов А и В. Эти комбинации создают 235, или 34 359 738 048 различных ситуаций!

Кинг Д. Создание эффективного программного обеспечения

Рис. 10.1. Простая дилемма тестирования.

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

Однако читатель может подумать: «Что за чушь! Мы знаем, что не все эти условия возможны, и достаточно проверить немногие из них, чтобы иметь гарантию...» Это суждение вполне может оказаться справедливым, но кто возьмется принять роковое решение о том, какие условия надлежит отбросить? Насмешник потирал бы руки в радостном предвкушении потехи.

Ну допустим, что некий весьма мудрый и надежный человек решил, что нужно принимать во внимание только 7 цифр в А-записях и только 10 в В-записях. В таком случае потребовалось бы только 36 часов непрерывного тестирования, если выдерживается намеченный выше режим работы.


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