![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Меры по обнаружению ошибок можно разбить на две группы: пассивные методы обнаружения ошибок в процессе нормальной работы программного обеспечения и активные методы проверки программного обеспечения в поисках ошибок.
Пассивные методы могут быть приняты на различных структурных уровнях программного обеспечения при передаче управления от одного программного модуля другому. Пассивные методы базируются на следующих принципах:
· взаимном недоверии, т. е. каждый модуль должен предполагать, что все другие модули и входная информация содержат ошибки;
· немедленном обнаружении, т. е. ошибки должны обнаруживаться как можно раньше, поэтому все проверки необходимо производить сразу после получения данных;
· избыточности, т. е. если во входных данных имеется избыточность, она должна использоваться для проверки, если избыточности нет – необходимо ее ввести (например, контрольную сумму);
· регистрации ошибок;
· блокировке системы в защитном состоянии.
Пассивные методы могут обнаружить ошибку только в том случае, если она исказила данные заранее предусмотренным в средствах проверки способом. Однако это далеко не всегда возможно. Поэтому в высоко надежных системах пассивные методы применяются вместе с активными методами обнаружения ошибок.
Основным активным методом обнаружения ошибок программирования является их тестирование, в основе которого лежит тот факт, что программа любой сложности при строго фиксированных исходных данных и абсолютно надежной аппаратуре исполняется однозначно определенному алгоритму. Исполнение всех маршрутов программ является сложной комбинаторной задачей, объем которой определяется произведением:
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!