Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Обнаружение программных ошибок



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

Пассивные методы могут быть приняты на различных структурных уровнях программного обеспечения при передаче управления от одного программного модуля другому. Пассивные методы базируются на следующих принципах:

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

· немедленном обнаружении, т. е. ошибки должны обнаруживаться как можно раньше, поэтому все проверки необходимо производить сразу после получения данных;

· избыточности, т. е. если во входных данных имеется избыточность, она должна использоваться для проверки, если избыточности нет – необходимо ее ввести (например, контрольную сумму);

· регистрации ошибок;

· блокировке системы в защитном состоянии.

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

Основным активным методом обнаружения ошибок программирования является их тестирование, в основе которого лежит тот факт, что программа любой сложности при строго фиксированных исходных данных и абсолютно надежной аппаратуре исполняется однозначно определенному алгоритму. Исполнение всех маршрутов программ является сложной комбинаторной задачей, объем которой определяется произведением:

Nt = Nvh Ns, (5.1)

где Nt – число тестов;

Nvh – число всех возможных входных ситуаций;

Ns – число состояний вычислений.

Для уменьшения времени тестирования необходимо использовать методы упорядочивания и систематизации процесса, а также методы тестирования по различным стратегиям и параметрам [1, 7, 8].

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

На уровне модулей проверяют логику программы. Контроль сопряжений обнаруживает ошибки в межмодульном интерфейсе. Тестирование внешних функций определяет соответствие внешних спецификаций и функций программы. Комплексное тестирование является завершающим этапом проверки системы.

При составлении тестов используются два подхода: функциональный и структурный. В первом случае внутренняя структура программы не учитывается. Тесты составляются на основании функциональных спецификаций. Критериями оценки полноты функционального теста являются проверки:

1) всех классов входных данных, когда тест должен содержать по одному представителю из каждого класса;

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

3) всех функций, когда каждая реализуемая программой функция должна быть проверена хотя бы 1 раз;

4) всех ограничений и правил и т. п.

Структурные тесты строятся с использованием информации о внутренней структуре программы. Критериями оценки полноты тестирования являются проверки:

1) каждой команды – не менее 1 раза;

2) каждой ветви программы – не менее 1 раза;

3) каждого пути (последовательности команд) программы – не менее 1 раза.

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

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

Преимуществами тестирования являются увеличение глубины контроля и упрощение процесса создания программ технологических алгоритмов, т. к. процесс создания тестового программного обеспечения может рассматриваться как процесс независимый, ограниченный только параметрами управляемого технологического процесса. Недостатки тестирования: не обнаруживаются аппаратные сбои, во время тестирования состояние объекта управления не контролируется. Кроме того, даже для несложных программ тестирование не может доказать отсутствие в них ошибок, а может только обнаружить некоторую их часть. Поэтому тестирование используется как дополнительное средство контроля совместно с другими методами.





Дата публикования: 2014-11-02; Прочитано: 1990 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...