ГОСТР 53195.5—2010
Тестовые примеры выбираются с учетом охвата всех предварительно специфицированных разбиений. Из
каждого класса эквивалентности выбирается по меньшей мере один тестовый пример.
Существуют следующие основные возможности разбиения входных данных:
- классы эквивалентности, образованные из спецификации (интерпретация спецификации может быть
ориентирована либо на вход, например, когда выбранные значения считаются одинаковыми, либо на выход,
например, когда набор значений приводит к одному и тому же функциональному результату);
- классы эквивалентности, образованные в соответствии с внутренней структурой программы (результаты
класса эквивалентности определяются из статического анализа программ, например, набор значений обрабаты
вается одним и тем же способом).
Более подробное описание данного метода/средства приведено в [190—194].
В.5.8Структурноетестирование
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в ГОСТ Р 53195.4 (таблица Б.2).
Цель: применение тестов, анализирующих определенные подмножества структуры программы.
Описание: на основе анализа программы определяется набор входных данных так. чтобы мог быть проана
лизирован достаточно большой (часто с заранее заданным назначением) процент программных кодов. Средства
охвата программы, в зависимости от степени требуемой строгости могут быть различными:
- утверждение — это наименее строгий тест, поскольку можно выполнить все закодированные утверждения
без анализа обеих ветвей условного утверждения.
- ветвление — следует проверять обе стороны каждой ветви (это может оказаться непрактичным для
некоторых типов кодов защиты);
- составные условия — анализируется каждое условие в составной ветви (связанное оператором И/ИЛИ)
(см., например, охват решения модифицированными условиями MCDC, который означает, что каждая точка вхо
да и выхода в программе была задействована по меньшей мере один раз. что любое решение в
программе получило все возможные результаты по крайней мере один раз и чтодля каждого условия в решении
был показан независимый результат, влияющий на результирующее решение). Для каждого набора переменных
(внутри логи ческого выражения), как истинных, так и ложных, должны быть разработаны Булевы таблицы
истинности;
- LCSAJ — последовательность линейного кода и переходов представляет собой любую линейную после
довательность закодированных утверждений, включая условные утверждения, заканчивающиеся переходом.
Многие потенциальные подпоследовательности могут оказаться невыполнимыми из-за ограничений, которые
налагаются на входные данные в результате выполнения предыдущего кода;
- поток данных — выполняющиеся последовательности выбираются на основе используемых данных;
например, последовательность, где одна и та же переменная и записывается, и считывается;
- граф вызовов — программа, состоящая из подпрограмм, которые могут быть вызваны из других
подпрограмм. Этот граф вызовов представляет собой дерево вызовов подпрограмм в программе. Тесты
должны охватывать все вызовы в дереве;
- базовая последовательность — одна из минимального набора конечных последовательностей от начала
до конца, когда охвачены все дуги (перекрывающиеся комбинации последовательностей в этом базовом
наборе могут сформировать любую последовательность через эту часть программы). Тесты всех базовых после
довательностей показали свою эффективность при обнаружении ошибок.
Более подробное описание данного метода/средства приведено в [195—200].
В.5.9Анализ потоков управления
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в ГОСТ Р 53195.4 (таблица Б.8).
Цель: обнаружение низкокачественных и потенциально некорректных структур программ.
Описание, анализ потока управления представляет собой метод статического тестирования для нахожде
ния подозреваемых областей программы, которые не соответствуют оправдавшей себя практике программиро
вания. Программа анализируется, формируя направленный граф, который может быть проанализирован на
наличие:
- недоступных фрагментов программы, например безусловных переходов, хоторые делают фрагменты
программы недостижимыми:
- запутанных кодов. Хорошо структурированный код имеет управляющий граф, допускающий сокращение
путем последовательного сокращения графа до одного узла. В отличие от этого плохо структурированный код
может быть сокращен только до группы, состоящей из нескольких узлов.
Более подробное описание данного метода/средства приведено в [201. 202].
В.5.10 Анализ потоковданных
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в ГОСТ Р 53195.4 (таблица Б.8).
Цель: обнаружение низкокачественных и потенциально некорректных структур программ.
Описание: анализ потока данных представляет собой метод статического тестирования, объединяющий
информацию, полученную из анализа потока управления, с информацией о том. какие переменные считываются
или записываются в различных частях кода. Данный метод может проверять:
- переменные, которые могут быть считаны до присвоения им значений. Такую ситуацию можно исключить,
если всегда присваивать значение при объявлении новой переменной;
59