Реклама:

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

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

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

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

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

10.3. Различие между тестированием программ и систем

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

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

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


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