Чтение онлайн

на главную - закладки

Жанры

Технологии программирования

Костерин В В

Шрифт:

6. Что отображают кооперативные диаграммы?

7. Что отображают диаграммы классов?

8. Что отображают диаграммы состояний?

9. Что отображают диаграммы компонент?

10. Что отображают диаграммы размещения?

11. В чем состоит суть модели разработки программного обеспечения "водопад", ее особенности и недостатки?

12. Изложите шаги методики разработки приложений с использованием Rational Rose.

Глава 11

ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

11.1. ОСНОВНЫЕ СВЕДЕНИЯ

Любой

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

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

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

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

Тестирование осуществляется путем исполнения тестов. Смысл теста программ показан на рис. 11.1.

Аксиомы тестирования, выдвинутые ведущими программистами:

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

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

— невозможно тестировать свою собственную программу;

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

— избегайте невоспроизводимых тестов;

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

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

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

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

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

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

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

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

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

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

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

{$IFDEF DEBUG THEN}

{$ELSE}

{$ENDIF}

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

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

var

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

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

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

if DebugLevel >= 3 then

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

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

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

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

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

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

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

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

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

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

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

Поделиться:
Популярные книги

Эпоха Опустошителя. Том I

Павлов Вел
1. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том I

Проблема майора Багирова

Майер Кристина
1. Спецназ
Любовные романы:
современные любовные романы
6.60
рейтинг книги
Проблема майора Багирова

Законы Рода. Том 13

Андрей Мельник
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 13

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Прометей: каменный век

Рави Ивар
1. Прометей
Фантастика:
альтернативная история
6.82
рейтинг книги
Прометей: каменный век

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Цвет сверхдержавы - красный. Трилогия

Симонов Сергей
Цвет сверхдержавы - красный
Фантастика:
попаданцы
альтернативная история
8.06
рейтинг книги
Цвет сверхдержавы - красный. Трилогия

Болтливый мертвец

Фрай Макс
7. Лабиринты Ехо
Фантастика:
фэнтези
9.41
рейтинг книги
Болтливый мертвец

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь