Тестирование и отладка программ. Надежность программного обеспечения

Страницы работы

Фрагмент текста работы

5.1. Тестированиеиотладкапрограмм. Надежность программногообеспечения

5.1.1.  Терминыиопределения

Выполнение программы с целью обнаружения ошибок (табл. 5.1) называется тестированием. Локализация и исправление ошибок называется отладкой [31.

Таблица 5.1. Виды программных ошибок и способы их обнаружения

Вилы программных ошибок

Способы их обнаружения

Синтаксические

Статический контроль и диагностика компиляторами и компоновщиком

Ошибки выполнения, выявляемые автоматически:

а)    переполнение, зашита памяти;

б)   несоответствие типов;

в)   зацикливание

Динамический контроль:

аппаратурой процессора run-time системы программирования операционной системой — по превышению лимига времени

Программа не соответствует спецификации

Целенаправленное тестирование

Спецификация не соответствует требованиям

Испытания, бета-тестирование

Эффективность контроля 1-го вида зависит и от языка, и от компилятора. Контроль 2-го вида осуществляется с помощью исключений —  Exceptions — и весьма полезен для проверки


126       Глава 5. Опиадка, тестирование, сопровождение программ

правдоподобности промежуточных результатов. Тест — это набор контрольных входных данных совместно с ожидаемыми результатами. В число входных данных времязависимых программ входят события и временные параметры. Ключевой вопрос — полнота тестирования: какое количество каких тестов гаранти-pyei возможно более полную проверку программы? Исчерпывающая проверка на всем множестве входных данных недостижима. Пример: программа, вычисляющая функцию двух переменных: Y=f(X, Z). Если А", )'. Zreal, то полное число тестов (233)2 = 2м * 10". Если на каждый тест тратить I мс, то 2    мс - 800 млн лет. Следовательно:

•  в любой нетривиальной программе на любой стадии ее готовности содержатся необнаруженные ошибки;

•  тестирование - технико-экономическая проблема, основанная на компромиссе время — полнота. Поэтому нужно стремиться к возможно меньшему количеству хороших тестов с желательными свойствами.

Детективность: тест должен с большой вероятностью обнаруживать возможные ошибки.

Покрывающая способность: один тест должен выявлять как можно больше ошибок.

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

Только на основании выбранного критерия можно определить гот момент времени, котла конечное множество тестов окажется достаточным для проверки программы с некоторой полнотой (степень полноты, впрочем, определяется экспериментально). Используются два вида критериев (табл. 5.2):

•  функциональные тесты составляются исходя из спецификации программы:

•  структурные тесты составляются исходя из текста программы.

На рис. 5.1, а видно отличие тестирования команд (достаточен один тест) от О (необходимы два теста, как минимум). Рис. 5.1, б иллюстрирует различие О (достаточно двух тестон. покрывающих пути 1, 4 или 2, 3) от С2 (необходимо четыре теста для всех четырех путей). С2 недостижим в реальных програм-


127

5.1. Тестирование и отладка программ...

Таблица 5.2. Виды критериев и их функциональность

Вид критерия

Функциональность тестов

i Функциональные

[Тестирование классов входных данных

Содержать представителей всех классов входных или выходных классов и точки на границах классов

Тестирование классов выходных данных

Тестирование функций

Каждая функция внешнего интерфейса должна быть проверена 1 раз и более

Структурные

Тестирование команд

Каждая команда (оператор) должна быть выполнена 1 раз и более

Критерий CI — тестирование ветвей

Каждая ветвь должна быть выполне на i раз и более

Критерий С2 — тестирование путей

Каждый путь в графе программы должен быть выполнен 1 раз и боле

Путь 1     Путь 2        Путь 3 Путь 4

Ветвь 2

Рис. 5.1. Траектории вычислений при структурном тестировании:

а — тестирование команд и ветвей; б — тестирование ветвей и путей

Похожие материалы

Информация о работе