Читаем Технологии программирования полностью

— готовьте тесты как для правильных, так и для неправильных данных;

— не тестируйте "с лету";

— детально изучайте результаты каждого теста;

— по мере обнаружения все большего числа ошибок в некотором модуле или программе, растет вероятность обнаружения в ней еще большего числа ошибок;

— тестируют программы лучшие умы;

— считают тестируемость главной задачей разработчиков программы;

— не изменяй программу, чтобы облегчить тестирование;

— тестирование должно начинаться с постановки целей.

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

Среди приемов тестирования стоит выделить также так называемую отладочную печать. Если отладочные печати изымаются из текста, то утяжеляется сопровождение. Вывод: никогда не изымай отладочные печати даже с использованием препроцессора:

{$IFDEF DEBUG THEN}

{$ELSE}

{$ENDIF}

Рис. 11.1. Смысл теста программ

Лучше опишите глобальную переменную DebugLevel и программируйте условные отладочные печати:

var

DebugLevel: word; {0-нет ни одной отладочной печати, чем больше значение, тем подробнее отладочная печать}

DebugFile: text; {файл отладочной печати}

DebugLevel:= 4; {задание уровня отладки}

if DebugLevel >= 3 then

WriteLn(DebugFile, 'Модуль:', 'MyModule, 'результат:');

<p>11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ</p>

Следует выделить следующие свойства программного обеспечения.

Корректность программного обеспечения — свойство безошибочной реализации требуемого алгоритма при отсутствии таких мешающих факторов, как ошибки входных данных, ошибки операторов ЭВМ (людей), сбои и отказы ЭВМ.

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

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

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

Надежность можно представить совокупностью следующих характеристик:

— целостностью программного средства (способностью его к защите от отказов);

— живучестью (способностью к входному контролю данных и их проверки в ходе работы);

— завершенностью (бездефектностью готового программного средства, характеристикой качества его тестирования);

— работоспособностью (способностью программного средства к восстановлению своих возможностей после сбоев).

Отличие понятия корректности и надежности программ состоит в следующем:

— надежность характеризует как программу, так и ее "окружение" (качество аппаратуры, квалификацию пользователя и т. п.);

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

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

С учетом специфики появления ошибок в программах можно выделить две стороны понятия корректности:

— корректность как точное соответствие целям разработки программы (которые отражены в спецификации) при условии ее завершения или частичная корректность;

— завершение программы, т. е. достижение программой в процессе ее выполнения своей конечной точки.

В зависимости от выполнения или невыполнения каждого из двух названных свойств программы различают шесть задач анализа корректности:

1) доказательство частичной корректности;

2) доказательство частичной некорректности;

3) доказательство завершения программы;

4) доказательство не завершения программы;

5) доказательство тотальной (полной) корректности (т. е. одновременное решение 1-й и 3-й задач);

6) доказательство некорректности (решение 2-й или 4-й задачи). Методы доказательства частичной корректности программ, как

Перейти на страницу:

Похожие книги

Все жанры