ГОСТ Р МЭК 61508-7—2012
С.5.8 Структурное тестирование
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.2).
Цель. Применение тестов, анализирующих определенные подмножества структуры программы.
Описание. На основе анализа программы выбирается набор входных данных так, чтобы мог быть проана
лизирован достаточно большой (часто с заранее заданным значением) процент программных кодов. Меры охвата
программы, в зависимости от степени требуемой строгости, могут быть различными. В любом случав целью долж ны
быть 100 % выбранной метрики охвата: если невозможно достигнуть 100%-ного охвата, то причины, почему 100%-
ный охват не может быть достигнут, должны быть документально оформлены в отчете о тестировании (на пример если
возникает аппаратная проблема, то может быть введен только код защиты). Первые четыре метода в следующем
списке специально упомянуты в рекомендациях в таблице В.2 МЭК 61508-3 и широко поддержива ются
инструментами тестирования: оставшиеся методы могут быть также рассмотрены:
- охватточек входа (граф вызовов)— гарантирует, чтокаждая подпрограмма (стандартная подпрограмма или функ
ция) по крайней мере однажды должна быть вызвана (это — наименее строгое структурное измерение охвата).
П р и м е ч а н и е — В обьектно-ориентироеанных языках может быть несколько подпрограмм с одним
и тем же именем, которые применяются к различным вариантам полиморфизма (переопределяющие подпрограм
мы), которые могут вызываться динамической диспетчеризацией. В таких случаях должна быть протестирована
каждая такая переопределенная подпрограмма;
- операторы — гарантирует, что все операторы в коде были выполнены по крайней мере однажды:
- условные переходы — должны быть проверены обе ветви каждого условного перехода. Это может оказать
ся нецелесообразным для некоторых типов кодов защиты;
- составные условия — анализируется каждое условие в составном условном переходе (связанное операто
ром И/ИЛИ). См. MCDC (охват условного модифицированного решения, документ D0178B);
- LCSAJ — последовательность линейного кода и переходов представляет собой любую линейную последо
вательность закодированных утверждений, включая условные утверждения, заканчивающиеся переходом. Многие
потенциальные подпоследовательности могут оказаться невыполнимыми из-за ограничений, которые налагаются
на входные данные в результате выполнения предыдущего кода;
- поток данных — выполняющиеся последовательности выбираются на основе используемых данных; на
пример. последовательность, где одна и та же переменная и записывается, и считывается;
- базовая последовательность — одна из минимального набора конечных последовательностей от начала
до конца, когда все дуги охвачены (перекрывающиеся комбинации последовательностей в этом базовом наборе
могут сформировать любую последовательность через эту часть программы). Тесты всех базовых последователь
ностей показали свою эффективность при обнаружении ошибок.
Литература:
The Art of Software Testing, second edition. G. J. Myers. T. Badgett. T.M. Codd. C. Sandler. John Wiley and Sons.
2004. ISBN 0471469122. 9780471469124.
Software engineering: Update. Ian Sommerville. Addison-Wesley Longman. Amsterdam: 8lf ed.. 2006. ISBN
0321313798. 9780321313799.
Software Engineering. Ian Sommerville. Pearson Studium, 8. Auflage. 2007. ISBN 3827372577. 9783827372574.
RTCA. Inc. document DO-178B and EUROCAE document ED-12B. Software Considerations in Airborne Systems
and Equipment Certification, dated December 1. 1992.
C.5.9 Анализ потоков управления
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.8).
Цель. Обнаружение низкокачественных и потенциально некорректных структур программ.
Описание. Анализ потока управления представляет собой метод статического тестированиядля нахождения
подозреваемых областей программы, которые не соответствуют оправдавшей себя практике программирования.
Программа анализируется, формируя направленный граф, который может быть проанализирован на наличие:
- недоступных фрагментов программы, например, безусловных переходов, которые делают фрагменты про
граммы недостижимыми;
- запутанных кодов. Хорошо структурированный код имеет управляющий граф, допускающий сокращение
путем последовательного сокращения графа до одного узла. В отличие от этого плохо структурированный код мо
жет быть сокращен только до группы, состоящей из нескольких узлов.
Литература:
Software engineering: Update. Ian Sommerville. Addison-Wesley Longman, Amsterdam: 81’ ed.. 2006. ISBN
0321313798. 9780321313799.
Software Engineering. Ian Sommerville. Pearson Studium. 8. Auflage. 2007. ISBN 3827372577. 9783827372574.
C.5.10 Анализ потока данных
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.8).
Цель. Обнаружение низкокачественных и потенциально некорректных структур программ.
60