ГОСТ Р МЭК 61508-7—2007
Описание: некоторые известные типы ошибок вводятся (подсеиваются) в программу, и программа выпол
няется с тестовыми примерами в режиме тестирования. При обнаружении только некоторых подсеянных ошибок
тестовый пример становится неадекватным. Отношение числа найденных подсеянных ошибок к общему числу
подсеянных ошибок оценивается как отношение числа найденных реальных ошибок к общему числу реальных
ошибок. Это дает возможность оценить число остаточных ошибок и. тем самым, остальную работу по тестирова
нию.
Найденные подсеянные ошибки
Найденные реальные ошибки
Общее число подсеянных ошибок
Общее число реальных ошибок
Обнаружение всех подсеянных ошибок может указывать либо на адекватность тестового примера, либо на
то. что подсеянные ошибки было слишком легко найти. Ограничениями данного метода являются: порядок полу
чения любых полезных результатов, типы ошибок. Также необходимо, чтобы позиции подсеивания
отражали статистическое распределение реальных ошибок.
Литература:
Software Fault Injection, J. M. Voas и G. McGraw. Wiley 1998.
C.5.7 Разделение входных данных на классы эквивалентности
П р и м е ч а н и е — Ссылка на данный метод’средство приведена в МЭК 61508-3 (таблицы В.2 и В.З).
Цель: адекватное тестирование программных средств с использованием минимума тестируемых данных.
Тестируемые данные образуются путем выбора частей входных данных предметной области, требующихся для
анализа программных средств.
Описание: данный метод тестирования основывается на отношении эквивалентности входных данных, оп
ределяющем разбиение входных данных предметно! области.
Тестовые примеры выбираются с целью охвата всех предварительно специфицированных разбиений. Из
каждого класса эквивалентности выбирается, по меньшей мере, один тестовый пример.
Существуют следующие основные возможности разбиения входных данных:
- классы эквивалентности, образованные из спецификации, — интерпретация спецификации может быть
ориентирована либо на вход, например выбранные значения считаются одинаковыми, либо ориентирована на
выход, например, набор значений приводит к одному и тому же функциональному результату:
- классы эквивалентности, образованные в соответствии с внутренней структурой программы, — результаты
класса эквивалентности определяются из статического анализа программ, например, набор значений обрабаты
вается одним и тем же способом.
Литература:
The Art of Software Testing. G. Myers, Wiley & Sons. New York. 1979.
C.5.8 Структурное тестирование
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.2).
Цель: применение тестов, анализирующих определенные подмножества структуры программы.
Описание: на основе анализа программы выбирается набор входных данных так. чтобы мог быть проана
лизирован достаточно большой (часто с заранее заданным назначением) процент программных кодов. Средства
охвата программы, в зависимости от степени требуемой строгости, могут быть различными:
- утверждения — это наименее строгий тест, поскольку можно выполнить все закодированные утверждения
без анализа обеих ветвей условного утверждения;
- ветвления — обе стороны каждой ветви следует проверять. Это может оказаться непрактичным для неко
торых типов кодов защиты;
- составные условия — анализируется каждое условие в составной условной ветви (связанное оператором
И/ИЛИ). См. MCDC (охват условного модифицированного решения, документ D0178B);
- LCSAJ — последовательность линейного кода и переходов представляет собой любую линейную последо
вательность закодированных утверждений, включая условные утверждения, заканчивающиеся переходом. Мно
гие потенциальные подпоследовательности могут оказаться невыполнимыми благодаря ограничениям, которые
налагаются на входные данные в результате выполнения предыдущего кода;
- поток данных — выполняющиеся последовательности выбираются на основе используемых данных: на
пример последовательность, где одна и та же переменная и записывается, и считывается:
- граф вызовов — программа, состоящая из подпрограмм, которые могут быть вызваны из других подпрог
рамм. Этот граф вызовов представляет собой дерево вызовов подпрограмм в программе. Тесты должны охваты
вать все вызовы в дереве;
- базовая последовательность — одна из минимального набора конечных последовательностей от начала
до конца, когда все дуги охвачены (перекрывающиеся комбинации последовательностей в этом базовом наборе
могут сформировать любую последовательность через этучасть программы). Тесты всех базовых последователь
ностей показали свою эффективность при обнаружении ошибок.
53