Вопросы отладки и тестирования программного изделияРефераты >> Программирование и компьютеры >> Вопросы отладки и тестирования программного изделия
· для цифровых данных очень большие, очень маленькие и нулевые значения;
· для нецифровых данных (символьных кодов) нулевые коды и некоторые типичные символы;
· для размерностей массивов нулевую (минимальную) размерность и размерность большую, чем объявлено в декларациях.
Для правильного назначения граничных значений нужно хорошо представлять работу алгоритма в программе. При этом нужно учесть, что выходные данные программы также желательно проверить в экстремальных условиях, для этого с помощью подбора входных данных нужно создать соответствующую ситуацию.
В результате проверки в экстремальных условиях подтверждается (или нет) тот факт, что поля данных для всех промежуточных данных имеют размеры, достаточные для реализации функций во всем диапазоне входных данных.
Проверка в исключительных ситуациях. Этот вид тестирования проводится с использованием входных данных, которые лежат за пределами допустимой для нормальной ситуации области. Он позволяет ответить на вопрос: "Что произойдет, если исходные данные выйдут за допустимые границы?" В принципе, программа может реагировать на исключительные ситуации тремя способами:
¾ неправильные данные воспринимаются как правильные; это наихудший случай, так как правдоподобный, но неверный результат будет преподнесен как правильный;
¾ программа осуществляет непредсказуемые, но явно необычные по внешним признакам действия (зависает, перестает реагировать на запросы и т.п.);
¾ программа сама анализирует и отвергает неверные данные, делая об этом соответствующие сообщения; это наилучший и идеальный случай, к которому следует стремиться, для чего в самой программе должны быть предусмотрены фильтры всех входных данных и средства реагирования на исключительные ситуации.
Для проверки в исключительных ситуациях полезно в качестве входных данных использовать что-либо необычное, например, вместо текстового файла подставить двоичный и наоборот, вместо требуемого внешнего устройства подключить другое (при условии согласования электрических входов), понажимать на клавиши случайным образом и т.п. Хороший эффект дает пробная эксплуатация не очень искушенным пользователем. Типичная картина – недоуменный новичок перед экраном зависшей программы, знакома всем. Начинающие пользователи часто умудряются нажимать такие сочетания клавиш, которые искушенному пользователю не придут и в голову. Никогда не стоит пренебрегать такой возможностью. Она ничего не стоит, но крайне эффективна.
6.4 Многократная разработка
Более важным является то, что работа над сложной программой состоит в многократном прохождении цикла разработки, так как в процессе тестирования могут быть обнаружены такие ошибки, для исправления которых придется вернуться не только к кодированию или алгоритмизации, но и к проектированию, а в особых случаях – пересмотреть и постановку задачи.
7. КЛАССИФИКАЦИЯ ОШИБОК
Ошибки можно объединить в следующие группы:
· ошибки обращения к данным - использование переменных с неустановленными значениями, ошибки индексации, несоответствие структур данных;
· ошибки описания данных - отсутствие явного описания или неполное описание данных, отсутствие или неправильное присвоение начальных значений, несогласованность инициализации переменной с ее описанием;
· ошибки вычислений - наличие в последовательных вычислениях данных недопустимых типов, несогласованность масштабов, приводящая к переполнению или потере точности, возможность деления на нуль;
· ошибки при сравнениях - использование при операциях сравнения величин несовместимых типов, искажение смысла операций отношения (>, =, <) и логических операций (NOT, AND, OR), сравнение чисел с фиксированной и плавающей запятой;
· ошибки в передачах управления - ошибки организации циклов, приводящие к возможности зацикливания или неправильного выполнения цикла, наличие неполного числа выходов в операторах-переключателях;
· ошибки программного интерфейса - несоответствие количества, типов или размерности фактических и формальных параметров подпрограмм при их вызове, несоответствие описаний переменных требованиям на выходе модуля, несогласованность описаний глобальных переменных и их интерпретации операторами программы (модуль - это замкнутая программа, которую можно вызвать из любого другого модуля в программе и можно отдельно компилировать). Напомним, что программный интерфейс определяет совокупность допустимых процедур или операций и их параметров, список общих переменных, областей памяти или других объектов;
· ошибки ввода-вывода - неполное или неправильное описание атрибутов файлов или оператора обращения к файлу, несогласованность размера записи и выделенной памяти, неполный контроль и регистрация операций с файлами;
· помехозащита - отсутствие контроля входных данных, отсутствие сохранения исходных данных и возможности повторного запуска модуля при сбоях;
· никогда не считайте, что Вы точно знаете причину ошибочного выполнения программы; очень часто в этом виновна ошибка, встретившаяся гораздо раньше (иногда ее называют отложенной ошибкой);
· и, наконец, ошибки могут быть также следствием неверной работы оборудования - это так называемые аппаратные ошибки. Если в регистр памяти компьютера на одном из этапов работы программы занесено число 12, а при чтении из этого же регистра оно прочиталось как 11, то и дальнейшие результаты, разумеется, будут неверными. Возможен случай, когда из-за такой ошибки результат вовсе не будет получен (процесс решения задачи аварийно прекратится).
Разработаны надежные методы борьбы с аппаратными ошибками и их последствиями - повторные вычисления с последующим сравнением результатов, хранение нескольких экземпляров данных с целью их защиты от искажения и т.д. Поэтому среди встречающихся на практике случаев выдачи компьютерами неверных результатов или невыдачи их вообще доля ошибок, порожденных аппаратными средствами, составляет ничтожный процент.
Так, согласно одному из определений компьютер - это вычислительная машина с надежностью военной аппаратуры и ценой изделия бытовой электроники.
Приведенная классификация полезна тем, что для каждой из перечисленных групп ошибок и для каждого типа ошибки в группе можно выделить операторы каждого конкретного языка программирования, потенциально допускающие данный тип ошибок.
ЗАКЛЮЧЕНИЕ
Рассмотренные выше методы предотвращения и обнаружения ошибок, а также технологии отладки могут значительно повысить качество программного обеспечения прикладных программ и уменьшить затрачиваемые на проведение отладки материальные и временные ресурсы. Вышеупомянутые методы без особого труда могут быть использованы в разработке самых разных проектов программного обеспечения, причем накопленный опыт полностью сохраняет свою ценность и при реализации различных проектов и целевых технологий. Кроме того, они позволяют гарантировать простоту сопровождения, модификации и портации созданных программ в устройства новых типов. И говоря коротко, рассматриваемые методы дают возможность не только совершенствовать существующие встроенные приложения и процессы разработки, но и гарантировать, что с распространением новых встраиваемых устройств у вас уже будет накоплен опыт, необходимый для разработки высокоэффективных приложений для этих технологий причем вовремя и в соответствии с выделенным бюджетом.