Теория и практика защиты программ

Постановка задачи


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

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

Сущность вероятностного тестирования заключается в следующем. Исследуемая программа реализуется на наборах входных данных, представляющих собой случайные величины, распределенные по некоторому законуF(x). Для некоторого множества контрольных точек определяются вероятностные характеристики (ВХ) случайных величин, являющихся для этих точек выходными данными. Полученные ВХ сравниваются с эталонными ВХ, рассчитанными для данного закона распределения входных величин по заданному в спецификациях программы алгоритму, который данная программа реализует. В зависимости от степени совпадения экспериментально определенных ВХ с эталонными делается вывод об отсутствии в программе дефектов, преднамеренно внесенных на этапе ее создания. Необходимо отметить, что данный метод позволяет выявлять любые дефекты программы, в том числе и случайные ошибки. Однако использование стохастического тестирования наиболее целесообразно для тех участков сложных программных комплексов, для которых детерминированные методы требуют существенных по объему затрат на подготовку тестовых наборов данных.


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

Область применения метода вероятностного тестирования программ определяется в основном границами применимости математического аппарата, используемого для расчета эталонных вероятностных характеристик. Для программ, реализующих вычислительные функции, задача расчета вероятности наличия в программе РПС формулируется следующим образом [ЕУ].

Дано: алгоритм А, подлежащий реализации программой П, и требуемая достоверность результатов тестирования Р0

(вероятность наличия РПС в нетестируемых ветвях программы при заданном числе испытаний).

Требуется определить.

·          последовательность законов распределения F1(x),...,Fn(x), j=1,...,g входных величин Х={xj}, при которой с вероятностью Рпр гарантируется отсутствие в тестируемой программе РПС; при этом с вероятностью Р0 такие дефекты могут иметь место в нетестированных участках программы;

·          множество контрольных точек (КТi), i=1,...,k, в которых определяется экспериментальное распределение выходных величин;

·          множество Gi

вероятностных характеристик, снимаемых с заданного множества КТ;

·          множество величин Li

таких, что если существует i, что

(½Giэкс-Giэт½>Li), то программа содержит дефекты с вероятностью Р0

или не содержит их с вероятностью Рпр.

Для решения данной задачи необходимо использовать методику, основанную на модификации метода вероятностного тестирования и позволяющую последовательно решить следующие частные задачи: определить множество информативных характеристик Gi случайных величин, снимаемых с некоторого множества КТi

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


Содержание раздела