Глава 6. Тестирование и отладка
Как пользователь Windows вы, конечно же, сталкивались с множеством чужих ошибок в программах. Теперь пора и вам как разработчику программного обеспечения наделать массу ошибок.
Вот он, решающий момент: вы последний раз ударили по клавишам, и ваша, несомненно, выдающаяся программа, готова! Она принесет вам известность и славу, и, как маленькому ребенку, вам хочется закричать: „А теперь хвалите меня!“. Но первый восторг проходит вместе с первым запуском программы — похоже, она не делает того, чего вы хотели… Здесь явно неправильный вывод на экран, тут операционная система сообщает, что лучше бы вам заняться более спокойным и доходным, по сравнению с программированием, делом и не приводить ее в состояние недоумения… Что же делать?
Но вы — счастливчик: вы работаете с Delphi! Интегрированная среда разработки предоставляет не одну возможность упростить тестирование и отладку приложения. В этой главе вы познакомитесь с ними, так что пользователи вашей программы не будут расточать в ваш адрес не самые лестные предположения о вашей квалификации программиста.
Тестирование и отладка идут рука об руку, так что большинство программистов просто не воспринимают их как отдельные этапы разработки программ. Однако путь к успеху лежит через разделение процесса отладки и тестирования на два разных этапа работы над программой, и вам следует четко представлять себе, что цель тестирования — определить наличие (или отсутствие) ошибок, В то время как цель отладки — определить местоположение ошибок и устранить их. Поскольку цели этих двух этапов разработки программ различны, различны и используемые для этого методы и инструменты.
Создание надежного приложения
Лучший путь исключить ошибки в программе — защититься от них еще при написании кода. Надежное приложение — приложение, создаваемое с возможностью легко и просто отлаживать его. Вот основные советы, которые помогут вам уменьшить количество ошибок при разработке программ.
Ваше приложение должно быть хорошо организовано. Разделите программу на модули, каждый из которых выполняет определенные задачи. Например, если код, создающий отчет, разнесен по десяти модулям, время отладки такого кода увеличится даже более чем в десять раз (хотя бы за счет поиска нужной строки в десяти модулях). Конечно же, вы можете вызывать подпрограммы из других модулей, но они должны быть созданы для выполнения четко поставленной задачи. Глупо размещать одну половину выполняемой операции в процедуре в одном модуле, а вторую половину — в другой процедуре (тем более — в другом модуле). Пусть это примитивный совет, но он является одним из самых действенных! Порядок — прежде всего! Порядок в мыслях и в программе!
Защититесь от дурака. Если ваша процедура не может переварить некорректные данные и вызвать тем самым крах всей системы, проверьте целостность входных данных, прежде чем работать с ними. Однако помните: если системой сможет воспользоваться любой дурак, значит, только дурак и будет ею пользоваться. Не увлекайтесь чрезмерной защитой, которая неумолимо будет отбирать время и ресурсы, необходимые для выполнения более важных задач.
Используйте отладочный вариант вашей программы. В отладочной версии программы содержится дополнительный код, цель которого — отследить выполнение программы, убедиться в корректности ее работы и упростить отладку вашего приложения. Именно об этом и рассказывается в следующем подразделе.
Отладочная и коммерческая версии кода
Те, кто участвовали в „полевых испытаниях“ (известных как бета-бета-тестированиекоммерческих программ, наверняка обратили внимание, что такие версии программ более медлительны, гораздо более „разговорчивы“ и размером побольше окончательных версий программ. Может быть, разработчик спешил и выпустил „сырой“ продукт, который будет улучшать перед выпуском окончательного варианта? Так тоже бывает, но главная причина в другом: в бета-версии содержится тестовый и отладочный коды, используемые разработчиком для проверки корректности работы программы.
Delphi позволяет очень легко внести тестовый и отладочный коды в приложение. Например, вы хотите создать приложение работы с базой данных и использовать быстрый, но, возможно, несколько рискованный алгоритм сортировки данных. Как же убедиться в корректности его работы? Один из путей — использовать в приложении два алгоритма одновременно (быстрый, но рискованный, и медленный, но проверенный), затем сравнить результаты работы обоих алгоритмов. Конечно же, этот вариант используется только в бета-версии, и после всестороннего тестирования, если все работает отлично и без сбоев, в конечной версии продукта останется только быстрый (и после такого тестирования — уже не рискованный) метод сортировки.