автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Методы и средства генерации данных для тестирования встроенного бортового программного обеспечения

кандидата технических наук
Батаев, Алексей Владимирович
город
Москва
год
2008
специальность ВАК РФ
05.13.11
Диссертация по информатике, вычислительной технике и управлению на тему «Методы и средства генерации данных для тестирования встроенного бортового программного обеспечения»

Автореферат диссертации по теме "Методы и средства генерации данных для тестирования встроенного бортового программного обеспечения"

На правах рукописи

ООЗ166339

Батаев Алексей Владимирович 4 -

МЕТОДЫ И СРЕДСТВА ГЕНЕРАЦИИ ДАННЫХ ДЛЯ ТЕСТИРОВАНИЯ ВСТРОЕННОГО БОРТОВОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

05 13 11 - математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук

Автор

0 3 ДПР 2СС8

Москва, 2008

003166339

Работа выполнена в Московском инженерно-физическом институте (государственном университете)

Научный руководитель: кандидат технических наук,

доцент Синицын Сергей Владимирович

Официальные оппоненты: доктор технических наук, профессор,

Лебедев Георгий Николаевич. Московский авиационный институт (государственный технический университет)

кандидат технических наук Шелястина Елена Владимировна Общество с Ограниченной Ответственностью «ЛЕТОГРАФ», г Москва.

Ведущая организация: Открытое Акционерное Общество

«Аэроприбор-Восход»

Защита диссертации состоится 23 апреля 2008 г в 14 часов 00 минут на заседании диссертационного совета Д 212 130 03 в Московском инженерно-физическом институте (государственном университете) по адресу 115409, г. Москва, Каширское шоссе, 31.

С диссертацией можно ознакомиться в библиотеке института.

Автореферат разослан " и " марта 2008 г.

Ученый секретарь диссертационного совета д.т.н., профессор

" Шумилов Ю.Ю.

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

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

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

Существует особый класс промышленных программных систем - критические системы, ошибки в которых могут привести к крупным материальным потерям или связаны с риском для жизни людей Данный аспект влияет на требования, предъявляемые к подобным программным системам, и трудоемкость и стоимость их разработки по сравнению с программными системами общего назначения возрастает

К такому классу систем относится встроенное бортовое программное обеспечение К этому классу программного обеспечения предъявляются повышенные требования по надежности, поскольку от данной программной системы зависят жизни людей или же большие материальные ценности

Ключом к решению этих проблем является организация и структуризация процесса создания программного обеспечения, реализация технологических принципов промышленной разработки программных систем Эти технологии и методы регламентируются рядом отечественных и международных стандартов, таких, как ISO 9001, IEC 61508 (CENELEC), RTCA/DO-178B, ED-12B, КТ-178В Согласно этим стандартам, необходимым условием обеспечения качества программной системы является обязательная верификация всех результатов работы на каждом из этапов жизненного цикла системы

Проблема верификации встроенного бортового программного обеспечения вызывает существенные трудности Это связано с тем, что существует масса факторов, которые не позволяют провести полную и корректную верификацию системы

• недостаток времени,

• большое количество входных параметров системы,

• трудности с определением ожидаемых выходов,

• проблемы неполноты и корректности требований,

• отсутствие подготовленных кадров и курсов их подготовки,

• неприспособленность существующего инструментария,

• недооценка процессов верификации со стороны менеджмента

Работы в данной области ведутся в течение нескольких десятков лет силами многих российских и зарубежных ученых Р Андерсон, Р Л Бейбер, Б Бей-

зер, Б Корел, В В Кулямин, В В Липаев, Г Майерс, А.Д Оффут и др Вместе с тем существует достаточно небольшое количество работ, связанных с автоматизацией процесса разработки тестов при тестировании на основе требований

Работа посвящена одному из аспектов верификации программного обеспечения — методам и средствам покомпонентного тестирования встроенного бортового программного обеспечения на основе требований и методам автоматической генерации тестовых данных на основе требований

Объект и предмет исследования Объектом исследования является процесс покомпонентного тестирования встроенного бортового программного обеспечения в соответствии со стандартом КТСАЛХ)-178В Предметом исследования данной диссертации являются методы и средства автоматизированной и автоматической генерации тестовых данных, используемые при структурном и динамическом тестировании программных систем, призванные помочь тести-ровщикам увеличить количество обнаруживаемых дефектов и степень покрытия исходного кода исследуемых программных систем Данные методы рассматриваются с точки зрения возможности их приложения к тестированию встроенного бортового обеспечения с применением метода тестирования на основе моделирования

Цель диссертационной работы состоит в разработке методов и средств генерации наборов входных данных для тестирования встроенного бортового программного обеспечения на основе требований для обнаружения дефектов Объектом анализа является исходный код тестируемой системы, а ограничения строятся либо автоматически, исходя из предположения, что программа должна в процессе выполнения достичь некоторой контрольной точки, либо вручную на основе функциональных требований к системе Данная цель предполагает решение нижеприведенных задач

• исследовать существующие методы и средства тестирования программ, подходы к доказательству корректности программ и генерации тестовых данных и их применимость к тестированию встроенного бортового программного обеспечения,

• разработать метод генерации тестовых данных, позволяющий выявить дефекты в коде программной системы, связанные с несоответствием кода функциональным требованиям, и недокументированные возможности,

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

• разработать прототип системы анализа встроенных бортовых программ и помощи при разработке тестов,

• экспериментально проверить разработанные методы и программные средства

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

построения трансляторов, математического программирования и оптимизации и методы объектно-ориентированного программирования Научная новизна работы заключается в следующем

• разработана классификация отказов и дефектов программного обеспечения, вызванных несоответствием между кодом и предъявляемым к нему функциональным требованиям,

• на основе метода выводы предусловий и постусловий разработан метод построения логических ограничений, описывающих области входных значений, приводящих к возникновению отказов в соответствии с разработанной классификацией отказов и дефектов на основе требований,

• разработан метод поиска решения логических уравнений вида Р(Х) = = True на основе метода внешних точек (внешних «штрафных» функций) для задачи математического программирования,

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

Реализация результатов. Результаты, полученные в работе, имели следующие научно-практические приложения

• на основе разработанного метода генерации тестовых данных был реализован и использовался в учебном процессе прототип системы поддержки тестирования и генерации тестов ADACS, что подтверждается актом об использовании результатов диссертации от 14 сентября 2007 года,

• на основе метода генерации тестовых данных был разработан метод тестирования логических схем, описанных в системе Matlab,

• метод тестирования логических схем был реализован в рамках проекта разработки ядра XMath для системы генерации тестов MatLaber и использовался в проектах по тестированию встроенного бортового программного обеспечения ООО «ДС БАРС», что подтверждается актом об использовании результатов диссертации от 21 сентября 2007 года Апробация работы. По теме диссертации опубликованы 13 работ и сделаны доклады на следующих семинарах и конференциях

• Научные сессии МИФИ, 2001 и 2003-2005 гг,

• XII, XIII, XV, XVI Международные научно-технические семинары «Современные технологии в задачах управления, автоматики и обработки информации», Алушта, 2003,2004,2006,2007 гг,

• The 9th International Workshop on Computer Science and Information Technologies (CSIT'2007), Уфа, 2007 r

На защиту выносятся:

• классификация отказов и дефектов встроенного бортового программного обеспечения, вызванные несоответствием кода требованиям,

• метод построения логических ограничений на основе разработанной классификации дефектов;

• метод решения логических уравнений на основе метода внешних точек для задачи математического программирования,

• метод генерации тестовых данных, при которых возникают отказы встроенного бортового программного обеспечения, вызванные несоответствием кода требованиям, на основе комбинации методов построения логических ограничений и решения логических уравнений,

• программные реализации прототипа системы поддержки тестирования и генерации тестов ADACS и ядра XMath для системы генерации тестов MatLaber, реализующие разработанные методы генерации данных Структура работы. Диссертация изложена на 143 стр основного текста

(с приложениями — 177 стр ), состоит из введения, четырех глав, заключения, списка литературы из 140 наименований и четырех приложений Содержит 37 рисунков, восемь таблиц Публикации.

Основные научные результаты диссертации опубликованы в 13 научных работах.

ОСНОВНОЕ СОДЕРЖАНИЕ РАБОТЫ

Во введении обосновывается актуальность работы, определяются цели и задачи работы

В первой главе рассматриваются существующие модели процесса разработки программного обеспечения общего назначения и критического программного обеспечения в частности Более подробно освещены вопросы разработки встроенного бортового программного обеспечения в соответствии со стандартом RTCA/DO-178B

Отмечено, что одним важнейших процессов разработки встроенного бортового программного обеспечения является процесс верификации В соответствии с документом RTCA/DO-178B данный процесс входит в группу интегральных процессов и должен поддерживаться на всех этапах жизненного цикла разработки системы

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

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

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

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

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

Выполнен обзор ряда существующих систем поддержки процесса тестирования Отмечено, что хотя данные системы позволяют выполнять автоматизированное тестирования программного обеспечения в соответствии со стандартом КТСА/БО-178В, но очень немногие системы позволяют генерировать тестовые данные для тестирования на основании требований

В главе формулируется задача генерации тестовых данных, позволяющих обнаруживать дефекты при компонентном тестировании встроенного бортового программного обеспечения, вызванные несоответствием системы предъявляемым к ней требованиям

При этом на тестируемую компоненту и требования к ней накладываются дополнительные ограничения компонента должна представлять собой статическую процедуру/функцию, а требования — быть корректными и внутренне не противоречивыми, образовывать иерархию и выражаться в терминах преобразования входных данных в выходные Необходимо разработать метод генерации тестовых данных, позволяющий выявлять несоответствие между кодом тестируемой компоненты и функциональными требованиями, предъявляемыми к данной компоненте

Для решения данной задачи сначала определяются понятия дефекта, отказа программного обеспечения, а также строится модель процесса тестирования

Пусть исследуемая программа О есть функция Я О —» К, где I) — область определения данной функции, а Я — область значений Корректность программы О определяется множеством ОН сОгх Кг, где Вг — область определения

данной функции на основании требований, а Яг — область значений на основании требований Множество ОЯ определяется требованиями к заданной программе <7, причем будем считать, что данные требования корректны и внутренне не противоречивы В этом случае для некоторого вектора входных значений «[ей значение программы б при заданных входных значениях й е Я будет считаться корректным, если с1 е Иг, Б(с1) е Кг, а пара (с?, е ОЯ При таких посылках программа <5 считается корректной, если условие \/с1 е /) ((с1 е Ог) л е Яг) л ((¿,£(¿0) е ОД) истинно В противоположность корректной программе некорректной называется программа, для которой 3с1 ((с?, 8(с1)) £ ОЯ) Такая ситуация говорит о том, что в программе существует по крайней мере один дефект Внешним проявлением наличия дефекта в программе является отказ программного обеспечения Отказ — переход программы в некорректное состояние или возврат некорректного выходного значения как результата наличия дефекта в программе

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

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

• Аварийное завершение программы в результате выработки неперехваты-ваемых исключений как результата неполного контроля допустимости входных/выходных значений, определенных в требованиях, но не определенных в коде программы

• Несоответствие между реальными значениями, возвращаемыми программой, и значениями, ожидаемыми на основании требований

• Выработка выходных значений при корректных входных значениях (таких значений, выработка которых не приводит к генерации исключений), но для которых отсутствуют требования

Используя введенные ранее определения, можем выразить классификацию дефектов следующим образом

1 3^ е £)/•(</ г £>), т е. не все входные значения, допустимые с точки зрения требований, являются допустимыми с точки зрения программы (класс 1)

2 Эй? е Бг Ц е О) л ((с?, 5(о)) 0 ОК), т е требования определяют преобразование, отличное от того, которое определено в программе (класс 2)

3 За* е £) (¿/ £ Иг), т е не все входные значения, допустимые с точки зрения программы, являются допустимыми с точки зрения требований, предъявляемых к ней (класс 3)

«

При этом область & - , где т — количество непересекающихся подобластей области Б (О, п = 0,у„ ф ]ь), а область Ог - , где п —

количество непересекающихся подобластей области Dr (Dr^ C\Drt = 0, ia ф ib)

i

При этом на пересечении этих двух областей существует область D'=\jD\,

*=i

где / — количество непересекающихся подобластей области D' {D'к глD'tb = = 0, ка Фкь), а каждая область D\ с (D, П Dr,) W е D\ ((d, S(d)) e OR), для всех i и j П — область входных переменных, в которой поведение программы соответствует требованиям Тогда можно говорить о том, что в программе существуют дефекты второго класса, если 3d е Dr {{d е D) Л (с/ £ D'))

Тестовым случаем будем называть любой вектор входных значений t е D В этом случае тест Т, являющийся множеством тестовых случаев t, есть конечное подмножество множества D Т а D Тестовый случай t считается пройденным, если значение S(t) является корректным (t, S(t)) е OR Тест Г считается пройденным, если все тестовые случаи t, составляющие тест Г, являются пройденными \ft е T((t, S(t)) е OR)

Основная цель тестирования состоит в том, чтобы вызвать отказ программы, и тем самым выявить наличие дефекта в ней Тест Т назовем идеальным, если хотя бы один тестовый случай, входящий в данный тест, является непрой-денным, т е Г идеален, если 31 е TS(t) — некорректно

Пусть заданы две функции S D —» R, задающая тестируемую программу G, и функция Sr Dr Rr, представляющая модель функциональных требований к программе G. При этом для множеств D и Dr существуют разбиения, т е

D = Qö , D^ гл Djh =0, jh и Dr = Q/>, Dria r\Dr:i =0, ia Ф i„ Множество

j-1 ij

OR, определяющее корректность программы G, в этом случае задается функцией Sr OR = {(dr, rr) | {dr e Dr) л (r, € Rr) л (rr = Sr(dr))) Необходимо сгенерировать тест T', включающий тестовые случаи t, для которых выполняются следующие условия

1) t е Dr, для каждого подмножества Dr„ для которого Dr, / D ^ 0 (класс 1),

2) t е Dr, n Dj для каждого подмножества Dr, и DJt для которых Dr, и (t, S(tj) £ OR (класс 2),

3) t е Dj для каждого подмножества Dp для которого D, / Dr Ф 0, (класс 3) Таким образом, задача состоит в том, чтобы найти такие входные значения, которые допускаются требованиями, но не допускаются кодом (условие 1), допускаются кодом, но не допускаются требованиями (условие 3), и входные значения, которые допускаются и кодом, и требованиями, но выходные значения, генерируемые кодом, отличаются от тех, которые должны быть получены в соответствии с требованиями (условие 2).

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

циональными требованиями При решении данной задачи не учитываются такие ограничения, как ограничения на время и стоимость решения задачи, на ее сложность и объем

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

Разработанный метод генерации тестовых данных включает два основных

этапа

1 Используя подход к тестированию на основании областей (или классов) эквивалентности и методы теории аксиоматического доказательства корректности программ, строятся логические ограничения, описывающие множества входных значений, вызывающие отказы 1,2 и 3-го класса, и их подмножества, образованные классами эквивалентности Предполагая, что требования корректны и внутренне не противоречивы, а тестируемые программы являются статическими функциями/процедурами, реализованными на императивных языках программирования, эти подмножества представляют собой разбиения соответствующих множеств (доменов) входных значений

2 Построенные логические ограничения преобразуются в уравнения вида Р{X) = True, и решается задача поиска хотя бы одного вектора входных значений Х(1, для которого Р(Х0) = True Для этого полученные уравнения преобразуются, исходя из особенностей их построения, для повышения эффективности процедур поиска обратных значений с использованием метода «штрафных» функций для задачи математического программирования

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

Но в данном случае области эквивалентности выделяются для обеих областей определения не только для области Dr, определяемой требованиями, но и для области £>, определяемой кодом программного обеспечения Для области Dr принцип эквивалентности выражается в виде единичного требования (или даже подгребования), применимого для всех входных значений, принадлежащих одной области эквивалентности Для области D принцип эквивалентности определяется следующим образом- все входные значения принадлежат одной области эквивалентности, если при данных входных значениях программа выполняется по одному и тому же пути (или подпути)

В случае если программа полностью соответствует требованиям, то области определения DviDr будут совпадать, а также будет совпадать с этими обла-

стями и область П В общем случае можно сказать, что каждая подобласть одной области является подобластью другой области, т е имеют смысл следующие соотношения У/)г, ((/>, с £>) => (От, с £>')) и V Д ((Д с £>г) => (Д с £>'))

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

1 На основе требований к программному обеспечению и переменных, определенных в программе, строится область Ьг Данная область разбивается на составляющие ее области эквивалентности, описывающие интервалы

и

входных переменных ТУг

1=1

2 На основе кода программы и тех ограничений, которые определены в ней, строится область определения программы Д разбитая на несколько обла-

т

стей эквивалентности О = иД Принципом эквивалентности для разбиения является «атомарный» путь в программе, т.е путь, у которого существует один единственный путь исполнения и не существует ветвлений

3 На основе анализа требований и кода программы выделяется область входных значений £>', при которых программа выполняет предъявленные к ней требования

4 Выделяются множества ОХ = П Д) (все входные переменные, пока-

1=1

т _

зывающие наличие дефектов 1-го класса), DЪ=\^{DJ П£>г) (все входные переменные, показывающие наличие дефектов 3-го класса) и 02 = = ии^ ^^ П/?') (все входные переменные, показывающие наличие дефектов 2-го класса)

Следует заметить, что области £>1, Ш и £>3 не являются непрерывными Они представляют собой совокупность областей, представленных интервалами значений входных переменных. Для простоты будем считать, что такие интервалы непрерывны* т е каждая переменная принимает значения в некотором диапазоне [а, Ь] Если для некоторой переменной диапазон не является непрерывным, то каждый непрерывный интервал, составляющий целый диапазон, рассматривается в отдельности

5 Из каждой из подобластей, входящих в области 1)1,1)2 и ВЪ, выбирается по одному значению Каждое такое значение фактически представляет собой тестовый случай, показывающий наличие дефектов соответствующе-

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

1. Строятся предикаты /С' и р'2, описывающие пред- и постусловия к программному обеспечению При этом предикат р"я представляет собой правило, описывающее множество Dr, и представляет собой выражение вида

v р'"', где каждое соотношение Р',7: описывает атомарную подобласть

Dr;, а т — общее количество таких подобластей

2 Граф программы анализируется в соответствии с методами вывода предусловий из постусловий, начиная с конечной вершины Положим, что программа завершается Тогда в качестве постусловия программы можно использовать следующее выражение р™ = True

Данный предикат можно ограничить, используя физические ограничения, накладываемые на переменные программы В этом случае образуется на-

я

чальный предикат вида р™ = л р'"', где п — общее количество переменных в программе Здесь каждое выражение РТ" есть True, если значение переменной х, принадлежит диапазону [dmm, dmax] (dmln и dmax - границы, определяемые типом переменной) и False в противном случае Дальнейший анализ выполняется с применением модифицированных правил вывода предусловий из постусловий Это связано с появлением дополнительной операции - операции расщепления систем ограничений Данная операция предназначена для упрощения выражений Для этого сложные составные операторы расщепляются на более простые конструкции под «охраной» логического условия Для каждого такого расщепленного оператора строится предусловие, совокупность которых образует систему ограничений, определяющих условия выполнения программы Таким образом, было сформировано соотношение р'Г, описывающее область определения D Причем это соотношение представляет собой дизъюнктивную форму рг™ = UU-P« ■ При этом каждое ограничение р„ опи-

I .1-1

сывает подобласть D, области D

3 Используя методы вывода предусловий из постусловий, строится соотношение, описывающее область D' Для этого в качестве постусловия выбирается выражение Р'2, на основе которого по коду строится выражение Р',7' Данное выражение и описывает область определения D\ в которой поведение кода совпадает с требованиями

4 На основе полученных соотношений выделим области D\, D2 и Z>3

^ = ¿¿0»» И £>2 = ¿¿¿(Д- лря л ¿Г)

5 Необходимо проанализировать каждое подвыражение ограничений, описывающих области Dl, D2 и D3, и определить хотя бы одно значение входных переменных, при котором рассматриваемое подвыражение становится истинным Если такое значение существует, то это значит, что в программе существует дефект, приводящий к отказу Значение входных переменных, при которых подусловие принимает истинное значение, берется в качестве тестового случая t, позволяющего обнаружить дефект в коде тестируемой программы

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

Задачу генерации тестовых данных можно рассматривать как задачу поиска решения для логического уравнения вида Р(Х) = True, где Р(Х) — анализируемое ограничение, описывающее входные значение, принадлежащие одной из областей Dl, D2 и D3, а Х- множество всех входных переменных

Рассмотрим данную задачу как задачу поиска минимума функции g(X) = 0 при ограничениях Р(Х) = True Для решения данной задачи подходят методы внешней точки (внешних «штрафных» функций) задачи математического программирования При этом строится вспомогательная функция вида G(X, a) = g(X) + Р'(Х, а), где g(X) — целевая функция оптимизации, Р\Х, a) — «штрафная» функция, и a > О

«Штрафная» функция Р'(Х, а) обычно имеет вид- Р'(X, а) = а х Р'(Х) Но функция G(X, а) = g(X) + Р'(Х, а) = 0 + а х Р(Х) = а х Р'(Х) Как видно, функция G(X, а) прямо пропорциональна функции «штрафа» Р'(Х) Поэтому задача оптимизации функции G(X, а) сводится к задаче оптимизации только «штрафной» функции Р'(Х) без учета коэффициента а

Для эффективного применения любых целенаправленных алгоритмов поиска экстремумов функций необходимо найти преобразование F функции Р(Х) в функцию Р'(Х), такую, что если существует хотя бы одна точка Х0, в которой выполняется равенство Р(Ха) = True, то

1 Р'(Хо) = О,

2 Р'(Х) > О для всех X, для которых Р(Х) = False,

3 = точка Хо является стационарной точкой функции Р'(Х), VP'(X) здесь представляет собой вектор такой, что

Если же уравнение Р(Х) = Тгие имеет решения не для одной точки Х0, а для некоторой области точек &>, то описанные выше ограничения должны выполняться для всех точек е £0

В качестве функции Р(Х) можно использовать модификацию оригинальной функции Р(Х), в которой все логические функции заменяются математическими операциями в соответствии с табл 1

Таблица 1

Преобразование F логических функций_

Оригинальная функция Преобразование

с = a reí Ъ, где reí — >, <, >=, <=, =, <> d Straight = if (a rel b) then 0 else distance(a, b) c'Jfot = if(a rel b) then distancefa, b) else 0

с = ОРа ,тде ОР — ы ' and или or d Straight = if(OPa ) then 0 else (¿]a\ Straight) c' Not = \f( OP a ) then (aNot) elseO 1=1

с = not(a) c' Straight = d Not c'Not = a' Straight

True d Straight = 0 d Not = 1

False c' Straight = 1 c' Not = 0

Результат решения содержится в итоговом поле Straight Смысл функции Р\Х) заключается в том, что она позволяет оценить «удаленность» текущего значения False функции Р(Х) от ближайшего значения True, а операция поиска минимума функции Р'(Х) сводится к попытке минимизировать это расстояние

Общий критерий останова процесса поиска минимума преобразованной функции Р'(Х) включает в себя два основных критерия останова

Первый критерий если найдены значения входных переменных, при которых функция Р'(Х) принимает значение 0, то процедура минимизации останавливается, а входные значения таковы, что выполняется условие Р(Х) - True

Если уравнение Р(Х) = True не имеет решения, то приходится использовать эмпирические оценки и ставить ограничения на процесс поиска минимума Первый критерий — ограничение по времени на каждую из функций так, чтобы общее время решений всех функций не превышало некоторого критического значения Второй критерий останова — ограничение на количество вы-

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

При использовании эмпирических методов оптимизации и критериев останова возникает проблема, что для некоторых функций может быть не найдено решение, хотя оно существует Но следует помнить, что согласно документу ВО-178В все результаты тестирования должны быть проверены Поэтому и результаты процесса генерации тестовых данных также подвергаются последующей верификации, что позволит выявить те случаи, в которых представленный метод не смог сгенерировать входные воздействия

В конце главы предложена модификация метода генерации тестовых данных для поиска входных значений, позволяющих обеспечивать покрытие исходного кода Также в конце рассмотрена связь разработанного метода генерации тестовых данных и «недоопределенной» математики

В третьей главе описывается разработанный прототип системы поддержки моделирования и тестирования встроенного бортового программного обеспечения АБАСБ Данная система предназначена для компонентного (функционального) тестирования систем, реализованных на подмножестве языка Ас1а-95 Основные функции системы

• трансляция исходного кода тестируемой системы в библиотеку проекта в виде кода внутреннего представления,

• хранение и статический анализ для сгенерированной библиотеки проекта,

• моделирование исполнения исходного кода тестируемой системы на основе внутреннего бинарного представления,

• автоматизированное исполнение тестов,

• сбор и анализ покрытий кода на основании критериев, описанных в стандарте ЯТСА/ЮО-178В,

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

• предоставление графической среды для навигации и отладки исходного кода тестируемой системы

Разработана структура системы моделирования и генерации тестовых данных, позволяющая унифицировать структуру подобных систем и сократить общее время их разработки

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

Подсистема хранения и анализа библиотеки проекта используется для хранения библиотеки проектов (семантической и операционной информации), организации и поддержки запросов к ней для навигации и статического анализа кода системы

Подсистема моделирования исполнения основана на подходе «виртуальной» машины и предназначена для исполнения внутреннего представления программы Используется для отладки, исполнения тестов, сбора степени покрытий кода, а также для вычислений в процессе решения логических ограничений Интерфейс взаимодействия пользователя с системой представляет собой графический интерфейс для навигации по коду системы и отладке Может использоваться в процессе статического тестирования при выполнении ревю и обзоров кода на соответствие стандартам и требованиям.

Подсистема сбора и анализа степени покрытий кода предназначена для сбора статистики о выполненных элементах тестируемой программы и последующего анализа и выдачи статистических данных о непокрытых участках кода в соответствии со стандартом RTCA/DO-178B.

Подсистема решения логических ограничений реализует метод решения логических уравнений вида Р(Х) = True, описанный во второй главе, и используется для генерации тестовых случаев, приводящих к возникновению отказов тестируемой системы

Подобная структура системы позволяет использовать ранее разработанные компоненты для систем моделирования и тестирования и для других языков без существенной переработки При таком подходе уникальной "является только система трансляции исходного кода

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

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

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

Для оценки корректности метода генерации тестовых данных использовалась его разновидность, позволяющая генерировать тестовые данные для покрытия кода Достигнутая степень покрытия сравнивалась с эталонной, достигнутой с помощью методов генерации DDR (Dynamic Domain Reduction) и CBT

(Constraint Based Testing) Было показано, что разработанный метод генерации данных не уступает методу DDR и обеспечивает большую эффективность по сравнению с методом СВТ

Система ADACS использовалась в процессе обучения студентов по курсу «Верификация и сертификация ПО» Для этого студентам было выдано задание протестировать одну из функций встроенной бортовой программной системы на предмет соответствия требованиям

Тестирование проводилось в ручном и автоматизированном режимах с использованием метода генерации тестовых данных для обнаружения дефектов Было выдано несколько фрагментов программ, заведомо содержавших дефекты Обучающиеся разбивались на группы и каждая группа выполняла и ручное, и автоматизированное тестирование, и их результаты сравнивались и анализировались В конце работы был сделан вывод о том, что в автоматизированном режиме тестирования обнаруживались все дефекты, которые были найдены в ручном режиме При этом в тестируемых фрагментах программ обнаруживались дополнительные дефекты, которые не были выявлены при ручном тестировании, несмотря на внимание студентов к проблеме поиска дефектов

Еще одна модификация метода генерации тестовых данных использовалась в ряде проектов по тестированию встроенного бортового программного обеспечения в соответствии со стандартом RTCA/DO-178B в ООО «ДС БАРС» В данных проектах требования представляют собой схемы, описанные в терминах языка системы Matlab Тестовые случаи должны обеспечивать покрытие схем и показывать, что код системы реализует логику, описанную в схемах

На основе разработанного метода генерации тестовых данных была предложена его модификация, позволяющая генерировать тестовые случаи для проверки Matlab-схем Для ранее разработанной системы генерации тестовых данных MatLaber автором было разработано ядро генерации XMath, реализующее метод генерации тестовых данных

Проведенные эксперименты показали, что использование данной системы повышает скорость генерации тестовых случаев по сравнению с ручным тестированием от 5 до 50 раз (табл. 2) Это позволяет сократить общее время тестирования на 20 — 60%

Таблица 2

Статистика применения ядра XMath _

Схема Блоки, ед Логические блоки,ед Целевые ф-ции, ед Найденные решения, % Время, мин

Ручн Авт

hudb, message 425 13 10 71 100 -30 0,5

condw, message007 30 22 127 92 -60 6,4

Продолжение табл 2

Схема Блоки, Логические Целевые Найденные Время, мин

ед блоки, ед ф-ции, ед. решения, % Ручн Авт

bleed, 6 6 24 100 -40 0,2

message412

оху, 32 15 74 54 -60 6,1

message244

aice, 16 7 43 100 -30 4,5

message 162

aice, 30 5 30 93 -90 1,6

tmin_valuelnt

В заключении отражены основные результаты, полученные в данной работе

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

ОСНОВНЫЕ РЕЗУЛЬТАТЫ РАБОТЫ

Основные результаты, полученные автором диссертационного исследования, состоят в следующем

• Предложена классификация дефектов программного обеспечения на основе классификации отказов, вызванных несоответствием поведения программы предъявленным к ней требованиям.

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

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

• Разработан прототип системы моделирования и помощи разработки тестов АОАС8, позволяющий проводить компонентное тестирование в соответствии со стандартом ИТСАЛХ)-178В, который использовался в учебном процессе

• На основе метода генерации тестовых данных разработано ядро XMath системы генерации тестов MatLaber Данная система используется в проектах тестирования встроенного бортового программного обеспечения в ООО «ДС БАРС».

Результаты работы показывают, что поставленные цели разработки метода и средств генерации тестовых данных можно считать достигнутыми

ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ

Основные положения диссертационной работы опубликованы в следующих печатных работах

1 Батаев, А В Комбинированный метод верификации программ / А В Батаев // Научная сессия МИФИ-2002 сб научных труд • в 14 т - М МИФИ, 2002 - Т 2 - С. 55-56

2 Батаев, А В. Автоматизированная генерация тестовых данных / А В Батаев, С В Синицын // Научная сессия МИФИ-2003 сб научных трудов в 14 т -М,- МИФИ, 2003 - Т 2 - С. 53-54

3 Батаев, А В Автоматическая генерация тестов методами динамического сокращения области определения / А.В Батаев, С В Синицын // Современные технологии в задачах управления, автоматики и обработки информации . труды XII Международного научно-технического семинара, сентябрь 2003 г, Алушта - М Издат МЭИ, 2003 - С 34-36

4 Батаев, А В Применение технологии Extended Use Case при тестировании программного обеспечения / А В Батаев, С В Синицын // Современные технологии в задачах управления, автоматики и обработки информации труды XIII Международного научно-технического семинара, сентябрь 2004 г, Алушта в3т —М Издат МЭИ,2004 - Т 1 -С 60-62

5 Батаев, А В Система символического моделирования АДА-программ / А В Батаев, С В Синицын II Современные технологии в задачах управления, автоматики и обработки информации труды XIII Международного научно-технического семинара, сентябрь 2004 г, Алушта в 3 т - М Издат МЭИ, 2004 - Т 1 - С 62-64

6. Батаев, А В Система символического моделирования АДА-программ / А В Батаев, С В Синицын // Научная сессия МИФИ-2004 сб научных трудов в 15 т - М . МИФИ, 2004 - Т 2. - С. 72-73

7 Батаев, А В Тестирование вариантов использования / А В Батаев, С В Синицын // Научная сессия МИФИ-2005 сб научных трудов в 16 т - М МИФИ, 2005 - Т 2 - С 57-58

8 Батаев, А В Автоматизированная система моделирования программ / А В Батаев, С В Синицын // Научная сессия МИФИ-2005 . сб научных трудов в 16 т - М МИФИ, 2005 - Т 2 - С 59-60

9 Батаев, А В Тестирование на основе моделирования / А В Батаев // Научная сессия МИФИ-2006 сб научных трудов в 16 т -М МИФИ, 2006 -Т 2 -С 102-103

Ю.Батаев, А.В Приложение методов недоопределенной математики к проблеме генерации тестовых данных / А В Батаев // Современные технологии в задачах управления, автоматики и обработки информации труды XV Международного научно-технического семинара, сентябрь 2006 г, Алушта - М МИФИ, 2006 - С 60-61 11.Батаев, А В Генерация тестовых данных для поиска дефектов в бортовом программном обеспечении / А В Батаев // Современные технологии в задачах управления, автоматики и обработки информации труды XVI Международного научно-технического семинара, сентябрь 2007 г, Алушта - Т . Изд-во ТулГу, 2007 - С 35-36 12 Батаев, А В Моделирование программного обеспечения на основе метапрограммирования / А В Батаев // Современные технологии в задачах управления, автоматики и обработки информации труды XVI Международного научно-технического семинара, сентябрь 2007 г, Алушта -Т Изд-во ТулГу, 2007 - С 36-37 13.Батаев, А В Математические методы доказательства правильности встроенного бортового программного обеспечения / А В Батаев, С В Синицын // Безопасность информационных технологий - 2007 - № 2 - С 57-60

Подписано в печать 19 03 2008 г Печать трафаретная

Заказ № 174 Тираж 100 экз

Типография «11-й ФОРМАТ» ИНН 7726330900 115230, Москва, Варшавское ш, 36 (495) 975-78-56, (499) 788-78-56 www autoreferat ru

Оглавление автор диссертации — кандидата технических наук Батаев, Алексей Владимирович

ВВЕДЕНИЕ.

ГЛАВА 1. МЕТОДЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. МЕТОДЫ И СРЕДСТВА ВЕРИФИКАЦИИ.

1.1. Модели процесса создания программного обеспечения.

1.2. Критические системы.

1.2.1. Жизненный цикл разработки встроенного бортового программного обеспечения.

1.3. Методы и средства автоматического доказательства корректности программ.

1.3.1. Метод индуктивных утверждений.

1.3.2. Аксиоматический метод доказательства частичной корректности программ.

1.4. Методы автоматической генерации тестовых данных.

1.4.1. Проблемы систем генерации тестовых данных.

1.4.2. Применение методов генерации тестовых данных для тестирования встроенного бортового программного обеспечения.

1.5. Методы и средства тестирования программного обеспечения.-.

1.5.1. Статическое тестирование.

1.5.2. Динамическое тестирование.

1.5.3. Методы тестирования программного обеспечения.

1.5.3.1. Функциональное тестирование.

1.5.3.2. Тестирование встроенного бортового программного обеспечения.

1.6. Обзор существующих систем тестирования.

1.6.1. VectorCAST.

1.6.2. AdaTEST 95.

1.6.3. LDRA Testbed.

1.6.4. Telelogic TAU Generation2.

1.6.5. SOFTWARE TESTWORKS.

1.6.6. UniTesK.

1.7. Средства разработки системы генерации тестов.

1.8. Проблемы тестирования встроенного бортового программного обеспечения.

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

1.10. Выводы.

ГЛАВА 2. МЕТОД ГЕНЕРАЦИИ ТЕСТОВЫХ ДАННЫХ НА ОСНОВЕ ФУНКЦИОНАЛЬНЫХ ТРЕБОВАНИЙ.

2.1. Описание метода генерации тестовых данных.

2.1.1. Суть подхода.

2.1.2. Выделение областей эквивалентностей.

2.1.3. Метод решения логических ограничений.

2.2. Модификация метода генерации тестовых данных для определения достижимости заданной точки в программе.

2.3. Автоматизация процесса тестирования встроенного бортового программного обеспечения.

2.4. Метод генерации тестовых данных и «недоопределенная» математика.

2.5. Выводы.

ГЛАВА 3. ПРОТОТИП СИСТЕМЫ ПОДДЕРЖКИ МОДЕЛИРОВАНИЯ И ТЕСТИРОВАНИЯ ВСТРОЕННОГО БОРТОВОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ADACS.

3.1. Проект системы моделирования и помощи разработки.

3.1.1. Подсистема разбора исходного кода 1{елевого языка.

3.1.2. Подсистема хранения и анализа семантической информации.

3.1.3. Подсистема моделирования исполнения исходного кода.103'

3.1.4. Интерфейс взаимодействия пользователя с системой.

3.1.5. Подсистема сбора и анализа степени покрытия кода.

3.1.6. Подсистема решения логических уравнений.

3.2. Тестирование на основе моделирования.

3.3. Выводы.

ГЛАВА 4. ПРИМЕНЕНИЕ ПРОТОТИПА СИСТЕМЫ МОДЕЛИРОВАНИЯ И ТЕСТИРОВАНИЯ АИАС8 И МЕТОДА ГЕНЕРАЦИИ

ТЕСТОВЫХ ДАННЫХ.

4.1. Анализ и практика применения разработанных методов генерации тестовых данных.

4.2. Использование метода генерации тестовых данных в системе генерации тестов

MatLaber.

4.3. Выводы.

Введение 2008 год, диссертация по информатике, вычислительной технике и управлению, Батаев, Алексей Владимирович

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

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

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

К такому классу систем относится встроенное бортовое программное обеспечение. К этому классу программного обеспечения предъявляются повышенные требования по надёжности, поскольку от данной программной системы зависят жизни людей или же большие материальные ценности.

Ключом к решению этих проблем является организация и структуризация процесса создания ПО, реализация технологических принципов промышленной разработки программных систем. Эти технологии и методы регламентируются рядом отечественных и международных стандартов, таких как: ISO 9001 (общий стандарт, регламентирующий требования к системе управления качества), IEC 61508 (CENELEC) [103] (общеевропейский стандарт для всех критичных систем), RTCA/DO-178B [75; 122; 123] (международный стандарт, обеспечивающий требования к безопасности и пригодности ПО для использования на борту самолета), ED-12B (европейский стандарт, аналог RTCA/DO-178В), КТ-178А (отечественный стандарт, аналог RTCA/DO-178B). Согласно этим стандартам, необходимым условием обеспечения качества программной системы является обязательная верификация всех результатов работы на каждом из этапов жизненного цикла программной системы.

Проблема верификации встроенного бортового программного обеспечения вызывает существенные трудности. Это связано с тем, что существует масса факторов, которые не позволяют провести полную и корректную верификацию системы:

• недостаток времени;

• большое количество входных параметров системы;

• трудности с определением ожидаемых выходов;

• проблемы неполноты и корректности требований;

• отсутствие подготовленных кадров и курсов их подготовки;

• неприспособленность существующего инструментария;

• недооценка процессов верификации со стороны менеджмента.

Работы в данной области ведутся в течение нескольких десятков лет силами многих российских и зарубежных ученых: Р. Андерсон [4], P.JI. Бейбер [18], Б. Бейзер [19; 81], Б. Корел [108], В.В. Кулямин [54; 57; 136], В.В. Липаев [41; 42; 43; 44], Г. Майерс [45; 46], А.Д. Оффут [91; 113; 114; 98] и др. Вместе с тем существует достаточно небольшое количество работ, связанных с автоматизацией процесса разработки тестов при тестировании на основе требований.

Работа посвящена одному из аспектов верификации программного обеспечения - методам и средствам покомпонентного тестирования встроенного бортового программного обеспечения на основе требований и методам автоматической генерации тестовых данных на основе требований.

Объект и предмет исследования. Объектом исследования является процесс покомпонентного тестирования встроенного бортового программного обеспечения в соответствии со стандартом КТСАЯ)0-178В. Предметом исследования данной диссертации являются методы и средства автоматизированной и автоматической генерации тестовых данных, используемые при структурном и динамическом тестировании программных систем, призванные помочь тести-ровщикам увеличить количество обнаруживаемых дефектов и степень покрытия исходного кода исследуемых программных систем. Данные методы рассматриваются с точки зрения возможности их приложения к тестированию встроенного бортового обеспечения с применением метода тестирования на основе моделирования.

Цель диссертационной работы состоит в разработке методов и средств генерации наборов входных данных для тестирования встроенного бортового программного обеспечения-на основе требований для обнаружения дефектов. Объектом анализа является исходный код тестируемой системы, а ограничения строятся либо автоматически, исходя из предположения, что программа должна в процессе выполнения достичь некоторой контрольной точки, либо вручную на основе функциональных требований-к системе. Данная цель предполагает решение нижеприведенных задач:

• ■> исследовать существующие методы» и средства тестирования программ, подходы,к доказательству корректности программ и генерации тестовых данных и их применимость к тестированию встроенного бортового программного обеспечения;

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

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

• разработать прототип системы анализа встроенных бортовых программ и помощи при разработке тестов;

• экспериментально проверить разработанные методы и программные средства.

Методы исследования. При разработке математического и программного обеспечения в диссертационной работе используются методы теории доказательства корректности программ, методы генерации тестовых данных, теории построения трансляторов, математического программирования и оптимизации и методы объектно-ориентированного, программирования.

Научная новизна работы заключается в следующем:

• разработана классификация отказов и дефектов программного обеспечения, вызванных несоответствием между кодом и предъявляемым к нему функциональным требованиям;

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

• i разработан метод поиска решения логических уравнений вида Р(Х) = I f = True на основе метода внешних точек (внешних «штрафных» функций) i

Чг к для задачи математического программирования;

• на основе комбинации'методов'построения логических ограничений и решения логических уравнений разработаны методы генерации тестовых данных, при которых возникают отказы встроенного бортового программного обеспечения, вызванные несоответствием кода требованиям.

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

Реализация результатов. Результаты, полученные в работе, имели следующие научно-практические приложения: 1

• на основе разработанного метода генерации тестовых данных был реализован и использовался в учебном процессе прототип системы поддержки тестирования и генерации тестов ADACS, что подтверждается актом об использовании результатов диссертации от 14 сентября 2007 года;

• на основе метода генерации тестовых данных был разработан метод тестирования логических схем, описанных в системе Matlab;

• метод тестирования логических схем был реализован в рамках проекта разработки ядра XMath для системы генерации тестов MatLaber и использовался в проектах по тестированию встроенного бортового программного обеспечения ООО «ДС БАРС», что подтверждается актом об использовании результатов диссертации от 21 сентября 2007 года.

Апробация работы. По теме диссертации опубликованы 13 работ и сделаны доклады на следующих семинарах и конференциях:

• Научные сессии МИФИ, 2001 и 2003-2005 гг.;

• XII, XIII, XV, XVI Международные научно-технические семинары «Современные технологии в задачах управления, автоматики и обработки информации», Алушта, 2003, 2004, 2006, 2007 гг.;

• The 9th International Workshop on Computer Science and Information Technologies (CSIT'2007), Уфа, 2007 г.

На защиту выносятся:

• классификация отказов и дефектов встроенного бортового программного обеспечения, вызванные несоответствием кода требованиям;

• метод построения логических ограничений на основе разработанной классификации дефектов;

• метод решения логических уравнений на основе метода внешних точек для задачи математического программирования;

• метод генерации тестовых данных, при которых возникают отказы встроенного бортового программного обеспечения, вызванные несоответствием кода требованиям, на основе комбинации методов построения логических ограничений и решения логических уравнений;

• программные реализации прототипа системы поддержки тестирования и генерации тестов ADACS и ядра XMath для системы генерации тестов MatLaber, реализующие разработанные методы генерации данных.

Структура работы. Диссертация изложена на 143 стр. основного текста (с приложениями — 177 стр.), состоит из введения, четырех глав, заключения, списка литературы из 140 наименований и четырех приложений. Содержит 37 рисунков, восемь таблиц.

Заключение диссертация на тему "Методы и средства генерации данных для тестирования встроенного бортового программного обеспечения"

Результаты работы показывают, что поставленные цели разработки метода и средств генерации тестовых данных можно считать достигнутыми.

ЗАКЛЮЧЕНИЕ

В диссертационной работе были рассмотрены существующие подходы к верификации компонент встроенного бортового программного обеспечения в соответствии со стандартом 11ТСАЛЮ-178В, а также рассматривались методы и средства увеличения производительности труда тестировщиков и повышения количества обнаруживаемых дефектов программного обеспечения, вызванных несоответствием кода требованиям. При выполнении данной работы были получены следующие результаты.

1. Предложена классификация дефектов программного обеспечения на основе классификации отказов, вызванных несоответствием поведения программы предъявленным к ней требованиям.

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

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

4. Разработан прототип системы моделирования и помощи разработки тестов АБАСЗ, позволяющая проводить компонентное тестирование в соответствии со стандартом 11ТСА/ЕЮ-178В, который использовался в учебном процессе, что подтверждается актом о внедрении.

5. На основе разработанного метода генерации тестовых данных, разработано ядро ХМаЙг системы генерации тестов Ма^аЬег. Данная система используется в проектах тестирования встроенного бортового программного обеспечения в ООО «ДС БАРС», что подтверждается актом о внедрении.

6. Проведенное исследование существующих методов и средств тестирования программного обеспечения показало, что на сегодняшний день отсутствуют удобные средства для выполнения работ по верификации программного обеспечения. Большинство существующих САБЕ-средств, присутствующих на рынке, направлены на поддержку процесса проектирования и кодирования систем, но не обеспечивают поддержки процессов верификации. Отдельные системы тестирования предоставляют лишь относительно небольшой набор инструментов для анализа систем и их верификации, и при этом требуют достаточно больших материальных затрат.

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

Библиография Батаев, Алексей Владимирович, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. Александреску, А. Современное проектирование на С++ / А. Александреску ; пер. с англ. И.В. Красикова. М.: Издат. дом «Вильяме», 2002. - 336 с.

2. Аммерааль, Л. STL для программистов на С++ / Л. Аммерааль ; пер. с англ. Ю.А. Баранова, под ред. И.М. Захарова. М.: ДМК, 1999. - 240 с.

3. Андерсон, Р. Доказательство правильности программ / Р. Андерсон ; пер. с англ. Б.Н. Зобниной, под ред. Д. Б. Подшивалова. М.: Мир, 1982. - 168 с.

4. Батаев, A.B. Комбинированный метод верификации программ / A.B. Батаев // Научная сессия МИФИ-2002 : сб. научных труд. : в 14 т. М.: МИФИ, 2002. -Т. 2. - С. 55-56.

5. Батаев, A.B. Автоматизированная генерация тестовых данных / A.B. Батаев, C.B. Синицын // Научная сессия МИФИ-2003 : сб. научных трудов : в 14 т. -М.: МИФИ, 2003. Т. 2. - С. 53-54.

6. Батаев, A.B. Система символического моделирования АДА-программ / A.B.

7. Батаев, C.B. Синицын // Современные технологии в задачах управления, автоматики и обработки информации : труды XIII Международного научно-технического семинара, сентябрь 2004 г., Алушта : в 3 т. М.: Издат. МЭИ, 2004. — Т. 1.-С. 62-64.

8. Батаев, A.B. Система символического моделирования АДА-программ / A.B. Батаев, C.B. Синицын // Научная сессия МИФИ-2004 : сб. научных трудов : в15 т. М.: МИФИ, 2004. - Т. 2. - С. 72-73.

9. Батаев, A.B. Тестирование вариантов использования / A.B. Батаев, C.B. Синицын // Научная сессия МИФИ-2005 : сб. научных трудов : в 16 т. М.: МИФИ, 2005. - Т. 2. - С. 57-58.

10. Батаев, A.B. Автоматизированная система моделирования программ / A.B. Батаев, C.B. Синицын // Научная сессия МИФИ-2005 : сб. научных трудов : в16 т. М.: МИФИ, 2005. - Т. 2. - С. 59-60.

11. Батаев, A.B. Тестирование на оснбве моделирования / A.B. Батаев // Научная сессия МИФИ-2006 : сб. научных трудов : в 16 т. М.: МИФИ, 2006. - Т. 2. -С. 102-103.

12. Батаев, A.B. Математические методы доказательства правильности встроенного бортового программного обеспечения / A.B. Батаев, C.B. Синицын // Безопасность информационных технологий. 2007. - № 2. - С.57-60.

13. Бейбер, P.JI. Программное обеспечение без ошибок / P.JI. Бейбер ; пер. с англ., под ред. Д.И.Правикова. М.: Джон Уайли энд Санз, Радио и связь, 1996.- 176 с.

14. Бейзер, Б. Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем / Б. Бейзер ; пер. с англ. Раздо-барин А. СПб.: Издат. дом «Питер», 2004. - 318 с.

15. Бек, К. Экстремальное программирование / К. Бек ; пер. с англ. СПб.: Издат. дом «Питер», 2002. - 224 с.

16. Брауде, Э.Д. Технология разработки программного обеспечения / Э.Д. Брау-де ; пер. с англ. СПб.: Издат. дом «Питер», 2004. - 656 с.

17. Браун, С. Операционная система UNIX / С. Браун ; пер. с англ. М.: Мир, 1986.-463 с.

18. Вендров, A.M. Проектирование программного обеспечения экономических информационных систем: учебник / A.M. Вендров. — 2-е изд., перераб. и доп. -М.: Финансы и статистика, 2000. 352 с.

19. Гласс, Р. Руководство по надежному программированию / Р. Гласс ; пер. с англ. М.: Финансы и статистика, 1982. - 256 с.

20. Грешилов, A.A. Прикладные задачи математического программирования: учебное пособие / Грешилов A.A. 2-е изд, доп. - М.: Логос, 2006. - 288с.

21. Гриффите, A. GCC. Полное руководство / А. Гриффите ; пер. с англ. К.: Издательство «ДиаСофт», 2004. - 624 с.

22. Дастин, Э. Автоматизированное тестирование программного обеспечения: внедрение, управление и эксплуатация / Э. Дастин, Д. Рэшка, Д. Пол ; пер. с англ. М.: Изд. «Лори», 2003. - 568 с.

23. Дунаев, С. UNIX System V. Release 4.2: Общее руководство / С. Дунаев. -М.: Диалог-МИФИ, 1995. 287 с.

24. Епифанов, H.A. Методы реализации регрессионного тестирования по расширенным тестовым наборам: дис. . канд. техн. наук: 05.13.11 : защищена 26.02.2004 / H.A. Епифанов; С-Петерб. гос. политехи, ун-т. СПб, 2003. - 149 с.

25. Ершов, А.П. Смешанные вычисления // А.П. Ершов. В мире науки, 1984. -№ 6. - С. 28-42.

26. Калбертсон, Р. Быстрое тестирование / Р. Калбертсон, К. Браун, Г. Кобб ; пер. с англ. М.: Издат. дом «Вильяме», 2002. - 384 с.

27. Калянов, Г.Н. CASE-технологии. Консалтинг при автоматизации бизнес-процессов / Г.Н. Калянов. 2-е изд., перераб. и доп. - М.: Горячая линия -Телеком, 2000. - 320 с.

28. Калянов, Г.Н. Методы и средства системного структурного анализа и проектирования / Г.Н. Калянов. М.: НИВЦ МГУ, 1995. - 59 с.

29. Кознов, Д.В. Апробация технологии тестирования UniTESK / Д.В. Кознов, H.A. Арчак// Системное программирование: сб. ст. СПб.: Изд. С.-Петерб. гос. ун-т, 2004. - С. 335-347.

30. Коллинз, Г. Структурные методы разработки систем: от стратегического планирования до тестирования / Г. Коллинз, Д. Блей ; пер. с англ. М.: Финансы и статистика, 1986. - 264 с.

31. Лавров, С.С. Программирование. Математические основы, средства, теория / С.С. Лавров. СПб.: БХВ-Петербург, 2001. - 320 с.

32. Леффингуэлл, Д. Принципы работы с требованиями к программному обеспечению. Унифицированный подход / Д. Леффингуэлл, Д. Уидриг ; пер. с англ., ред. Ореховой H.A. М.: Издат. дом «Вильяме», 2002. - 448 с. 6

33. Липаев, В.В. Методы обеспечения качества крупномасштабных программных средств / В.В. Липаев. М.: СИНТЕГ, 2003. - 520 с.

34. Липаев, В.В. Отладка сложных программ: Методы, средства, технология / В.В. Липаев. М.: Энергоатомиздат, 1993. - 384 с.

35. Липаев, В.В. Системное проектирование сложных программных средств для информационных систем / В.В. Липаев. М.: СИНТЕГ, 1999. - 224 с.

36. Липаев, В.В. Тестирование программ / В.В. Липаев. М.: Радио и связь, 1986.-296 с.

37. Майерс, Г.Д. Искусство тестирования программ / Г.Д. Майерс ; пер. с англ. М.: Финансы и статистика, 1982. - 176 с.

38. Майерс, Г.Д. Надежность программного обеспечения / Г.Д. Майерс ; пер. с англ. М.: Мир, 1980. - 360 с.

39. Марка, Д.А. Методология структурного анализа и проектирования (SADT) / Д.А. Марка, К. Мак-Гоуэн ; пер. с англ. М.: МетаТехнология, 1993. - 240 с.

40. Макгрегор, Д. Тестирование объектно-ориентированного программного обеспечения. Практическое пособие / Д. Макгрегор, Д. Сайке ; пер. с англ. К.: ООО «ТИД «ДС», 2002. - 432 с.

41. Нариньяни, A.C. Введение в недоопределенность / A.C. Нариньяни. -М.:Российский НИИ Искусственного Интеллекта, 2005. 36 с.

42. Нариньяни, A.C. Модель или алгоритм: новая парадигма информационной технологии / A.C. Нариньяни // «Информационные технологии», 1997. № 4. -С. 11-16.

43. Орлов, С.А. Технологии разработки программного обеспечения. Разработка сложных программных систем: Учебное пособие / С.А. Орлов. — 2-е изд. — СПб.: Издат. дом «Питер», 2003. 480 с.

44. Петренко, А.К. Тестирование на основе формальных спецификаций в процессах разработки программных комплексов: автореф. дис. . д-ра физ.-мат. наук: 05.13.11: защищена 21.02.2003 / А.К. Петренко; Ин-т сист. прогр. РАН. -М., 2003.-36 с.

45. Подход UniTesK к разработке тестов / В.В. Кулямин, А.К. Петренко, A.C. Косачев, И.Б. Бурдонов // Программирование, 2003. — № 29(6). С. 25-43.

46. Поляк, Б.Т. Введение в оптимизацию / Б.Т. Поляк. М.: Наука, 1983. - 384 с.

47. Программирование в ограничениях и недоопределенные модели / A.C. Нариньяни, В.В. Телерман, Д.М. Ушаков, И.Е. Швецов // «Информационные технологии», 1998. № 5. - С. 13-22.

48. Саттер, Г. Решение сложных задач на С++ / Г. Саттер ; пер. с англ. И.В. Красикова. М.: Издат: дом «Вильяме», 2002. - 400 с.

49. Соммервилл, И. Инженерия программного обеспечения / И. Соммервил ; пер. с англ. 6-е изд. — М.: Издат. дом «Вильяме», 2002. - 624 с.

50. Страуструп, Б. Язык программирования С++, 3-е изд. / Б. Страуструп ; пер. с англ. 3-е изд. - СПб.; М.: «Невский Диалект» - «Издательство БИНОМ», 1999.-991 с.

51. Хоар, Ч. Взаимодействующие последовательные процессы / Ч. Хоар ; пер. с англ. М.: Мир, 1989. - 264 с.

52. Чарнецки, К. Порождающее программирование: методы, инструменты, применение. Для профессионалов / К. Чарнецки, У. Айзенекер ; пер. с англ. -СПб.: Питер, 2005.-731 с.

53. Черноножкин, С.К. Задача автоматического построения тестов и статический анализ / С.К. Черноножкин // Программирование, 2001. № 2. - С. 47-59.

54. Шаллоуей, А. Шаблоны проектирования. Новый подход к объектно-ориентированной разработке / А. Шаллоуей, Дж.Р. Тротг ; пер. с англ. М.: Издат. дом «Вильяме», 2002. - 288 с.

55. Шафер, Д. Управление программными проектами: достижение оптимального качества при минимуме затрат / Д. Шафер, Р. Фатрелл, JI. Шафер ; Пер. с англ. М.: Издат. дом «Вильяме», 2003. - 1136 с.

56. Шлее, М. Qt. Профессиональное программирование на С++ / М. Шлее ; пер.с англ. СПб.: БХВ-Петербург, 2005. - 544 с.

57. Штойер, Р. Многокритериальная оптимизация. Теория вычисления и приложения / Р. Штойер ; пер. с англ. М.: Радио и Связь, 1992. - 504 с.

58. Элджер, Дж. С++: библиотека программиста / Дж. Элджер ; пер. с англ. Е. Матвеева. СПб.: Издат. дом «Питер», 2000. - 320 с.

59. Элиенс, А. Принципы объектно-ориентированной разработки программ, 2-е изд. / А. Элиенс ; пер. с англ. М.: Издат. дом «Вильяме», 2002. - 496 с.

60. Юртаев, А.В. Недоопределенные модели нетрадиционный подход к математическим исследованиям экономики / А.В. Юртаев // «Информационные технологии», 1999. - № 4. - С. 36-41.

61. Якобсон, А. Унифицированный процесс разработки программного обеспечения / А. Якобсон, Г. Буч, Дж. Рамбо ; пер. с англ. В. Горбункова. СПб.: Издат. дом «Питер», 2002. - 496 с.

62. A practical tutorial on Modified Condition / Decision Coverage: Technical Memorandum / K.J. Hayhurst, D.S. Veerhusen, J.J. Chilenski, L.K. Rierson. -NASA, 2001.-85 p.

63. Ada Semantic Interface Specification Electronic resource. / ASIS Working Group. Electronic data. - ASIS Workgroup (ASISWG), 2005- . - Режим доступа: http://www.sigada.org/wg/asiswg/, свободный. - Загл. с домашней страницы Интернета.

64. Aspect Oriented Programming / К. Mens, С. Lopes, В. Tekinerdogan, G. Kiczales // Proceedings of the ECOOP'97 Workshop on Aspect-Oriented Programming, 1997.-P. 220-242.

65. Bauer, R.J. Genetic Algorithms and Investment Strategies / R.J. Bauer. Wiley Finance, 1994.-318 p.

66. Basili, V. The Experience Factory / V. Basili, G. Caldiera, D. Rombach // Encyclopedia of Software Engeeniring. John Wiley & Sons, Inc., NY, 1994. - Vol. 2. -P. 469-476.

67. Beizer, B. Software Testing Techniques / B. Beizer. 2nd edition. - Van Nos-trand Reinhold Company, Inc., 1990. - 503 p.

68. Binder, R.V. Testing Object-Oriented Systems: Models, Patterns and Tools / R.V. Binder. Addison-Wesley, 1999. - 1248 p.

69. Blanchette, J. C++ GUI Programming with Qt 3 / J. Blanchette, M. Summerfield. Prentice Hall PTR, 2004. - 464 p.

70. Boehm, B.W. A spiral model of software development and enhancement / B.W. Boehm // IEEE Computer, 1988. -№ 21(5). P. 61-133.

71. Chiba, S. A Metaobject Protocol for C++ / S. Chiba // Proceedings of the 10th Annual Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'95), ACM SIGPLAN Notices, 1995. № 30(10). - P. 285-299.

72. Chilenski, J.J. An investigation of three forms of the Modified Condition Decision Coverage (MCDC) Criterion: Final Report / J.J Chilenski. -DOT/FAA/AR-Ol/18,2001. 214 p. .

73. Cleanroom Software Engineering: Technology and Process / S.J. Prowell, C.J. Trammel, R.C. Linger, J.H. Poore. Reading, MA: Addison-Wesley Longman, 1999.-416 p.

74. Cordy, J. Practical Metaprogramming / J. Cordy, M. Shukla // Proceedings of CASCON'92, IBM Center for Advanced Studies Conference, 1992. Vol. 1. - P. 215-224.

75. Clarke, L.A. J. Applications of symbolic evaluations / L.A. Clarke, D. Richardson // The Journal of Systems and Software, 1985. № 5(1). - P. 15-35.

76. DeMillo, R.A. Constraint-based automatic test data generation / R.A. DeMillo, A.J. Offut // IEEE Transactions on Software Engineering, 1991. № 17(9). - P. 900-910.

77. Domain-specific software architectures for guidance, navigation and control / P. Binns, M. Englehart, M. Jackson, S. Vestal // International Journal of Software Engineering and Knowledge Engineering, 1996. № 6(2). - P. 201-227.

78. Donnelly, C. Bison. The YACC-compatible Parser Generator / C. Donnelly, R. Stallman. Free Software Foundation, Cambridge, 1992. - 132 p.

79. El-Far, I.K. A. Model-Based Software Testing / I.K. El-Far, J.A. Whittaker // Encyclopedia of Software Engineering. Wiley, 2001. - Vol. 1. - P. 825-837.

80. Ferguson, R. The chaining approach for software test data generation / R. Ferguson, B. Korel // IEEE Transactions on Software Engineering, 1996. № 5(1). - P. 63-86.

81. Frankl, P.G. ASSET: A system to select and evaluate tests / P.G. Frankl, S.N. Weiss, E.J. Weyuker // Proceedings of the Conference on Software Tools, 1985. P. 72-79.

82. Fröhlich, P. Automated Test Case Generation from Dynamic Models / P. Fröhlich, J. Link // Proceedings of the 14th European Conference on Object-Oriented Programming, 2000. P. 472-492.

83. Generating Test Data From State-based Specifications / J. Offutt, S. Liu, A. Ab-durazik, P. Ammann // The Journal of Software Testing, Verification and Reliability, 2003.-Vol. 13(1).-P. 25-53.

84. Generative Programming and Active Libraries / K. Czarnecki, U.W. Eisenecker, R. Gluck, D. Vandervoorde, T. Veldhuizen // Proceedings of the Dagstul Seminar 98171 on Generic Programming, 1998.-P. 17-24.

85. Hagar, J. D. Testing Critical Software: Practical Experiences / J.D. Hagar, G. Green // Safety and Reliability in Emerging Control Technologies, 1996. P.134.142.

86. Hoare, C.H.R. An axiomatic basis for computer programming / C.H.R. Hoare // Comm. ACM, 1969. № 12(10). - P. 576-583.

87. Horgan, J.R. ATAC: A data flow coverage testing tool for С / J.R. Horgan, S. London // Proceedings of the Symposium of Quality Development Tools, 1992. P. 2-10.

88. IEC 61508. Functional safety of electrical/electronic/programmable electronic safety-related systems. International Electrotechnical Commission: Draft Standard. -Geneva, 1998. 143 p.

89. Information Processing Ltd. AdaTEST 95 2.0 Electronic resource.: Technical Brief / IPL Software Products Group. Electronic text data. - IPL, 2007. - 2 p. -Режим доступа: http://www.ipl.com/pdf/p00Q7.uk.pdf, свободный. — Загл. с экрана.

90. Ingber, L. Genetic Algorithms and Very Fast Simulated Reannealing: A Comparison / L. Ingber, B. Rosen // Mathematical and Computer Modelling, 1992. № 16(11).-P. 87-100.

91. Ingber, L. Adaptive Simulated Annealing: Lessons learned / L. Ingber // Control and Cybernetics, 1996. № 25(1). - P. 33-54.

92. Korel, B. Automated software test data generation / B. Korel // IEEE Transactions on Software Engineering, 1990. № 16(8). - P. 870-879.

93. Korel, B. Assertion-oriented automated test data generation / B. Korel, A.M. Al-Yami // IEEE Transactions on Software Engineering, 1996. № 16(8). - P. 71-80.

94. LDRA Technical Description Electronic resource. / LDRA Ltd. Electronic data. - LDRA Group of companies, 2008- . - Режим доступа: http://www.ldra.co.uk/downloadsliterature.asp, свободный. - Загл. с домашней страницы Интернета.

95. Model-Based Testing in Practice / S.R. Dalai, A. Jain, N. Karunanithi, J.M. Leaton, C.M. Lott, G.C. Patton, B.M. Horowitz // Proceedings of the 21st international conference on Software engineering, 1999. P. 285-294.

96. Multiplatform ANSI С++ Standard Library implementation STLport Electronic resource. / STLport Electronic data. - STLport Consulting, 2005- . -Режим доступа: http://stlport.com/doc/index.html, свободный. - Загл. с домашней страницы Интернета.

97. Sy, N.T. Automatic Test Data Generation for Programs with Integer and Float Variables / N.T. Sy, Y. Deville // Proceedings of the 16th IEEE international conference on Automated software engineering, 2001. P. 13.

98. Offut, A. J. A semantic model of program faults / A.J. Offut, J. Hayes // International Symposium on Software Testing and Analysis (ISSTA 96), ACM Press, 1996.-P. 195-200.

99. Offut, A.J. The dynamic domain reduction procedure for test data generation / A.J Offtit, Z. Jin, J. Pan // Software Practice and Experience, 1997. № 29(2). - P. 167-193.

100. Paradkar, A. A New Solution to Test Generation for Boolean Expression / A. Paradkar // Proceedings of the conference of the Centre for Advanced Studies on Collaborative research, 1995. P. 48.

101. Petkovic, M. Complex Interval Arithmetic and Its Applications / M. Petkovic, L. Petkovic. Wiley and Sons, 1998. - 284 p.

102. Pritchett, W. A Static Analysis Tool for High-Integrity Systems: Phase 1 Final Report / W. Pritchett, J. Riley. DCS Corporation, 1998. - 53 p.

103. Ramamoorthy, С. V. On the automated generation of program test data / C.V. Ramamoorthy, S.F. Ho, W.T. Chen // IEEE Transactions on Software Engineering, 1976. № SE-2(4). - P. 293 - 300.

104. Redmill, F. IEC 61508: Principles and use in the management of safety / F. Redmill // IEE Computing and Control Engineering Journal, 1998. № 9(10). - P. 205-218.

105. Royce, W.W. Managing the development of large software systems: conceptsand techniques / W.W. Royce // Proceedings of the 9th international conference on Software Engineering, 1987. P. 328-338.

106. RTCA/DO-178B. Software considerations in airborne systems and equipment certification. RTCA, Inc., Washington, DC, 1992. - 112 p.

107. RTCA/DO-248B. Final report for clarification of DO-178B "Software considerations in airborne systems and equipment certification". RTCA, Inc., Washington, DC, 2001.- 154 p.

108. Smart, J. Cross-Platform GUI Programming with wxWidgets / J. Smart, K. Hock, S. Csomor. Prentice Hall, 2005. - 744 p.

109. Springl, М. Software Testing / М. Springl. SENG 621, Software Process Management, 2001. - 1 Op.

110. Sthamer, H.-H. The Automatic Generation of Software Test Data Using Genetic Algorithms / H.-H. Sthamer. University of Glamorgan, 1995 - 205 p.

111. Steindl, C. Program Slicing for Large Systems / C. Steindl // ReTIS'97, 1997. -P. 131-143.

112. Tel Developer Xchange. Tcl/Tk graphical user interface toolkit. Practical Programming in Tel and Tk / Tel Developer Xchange. — Prentice Hall, 2003. — 960 p.

113. Telelogic AB. Telelogic TAU Generation2 Electronic document. / Telelogic AB. Electronic data. - Telelogic AB, 2005. - Режим доступа: http:// www.telelogi с. com/ corp/products/tau/g2/o verview. cfm. - Загл. с домашней страницы Интернета.

114. Telelogic AB. Telelogic TAU SDL Suite Electronic document. / Telelogic AB.- Electronic data. Telelogic AB, 2005. — Режим доступа: http://www.telelogic.-сот/соф/products/tau/sdl/overview.cfin. — Загл. с домашней страницы Интернета.

115. The С++ Standard Template Library / P.J. Plauger, A.A. Stepanov, L. Meng, D.R. Musser. Prentice Hall PTR, 2001. - 485 p.

116. The management of software engineering / H.D. Mills, D. O'Neill, R.C. Linger, M. Dyer, R.E. Quinnan // IBM System Journal, 1980. № 24(2). - P. 414 - 477.

117. Tip, F. A survey of program slicing techniques: Technical report CS-R-9438 / F. Tip. Computer Science/Department of Software Technology, 1994. - 68 p.

118. UniTesK: Model Based Testing in Industrial Practice / V.V. Kuliamin, A.K. Petrenko, A.S. Kossatchev, I.B. Bourdonov // Proc. of the 1st European Conference on Model-Driven Software Engineering, 2003. P. 55-63.

119. Vector Software, Inc. VectorCAST Product Overview Electronic resource. / Vector Software. Electronic data. - Vector Software Inc., 2004- . - Режим доступа: http://www.vectors.com/downloadlit.htm. — Загл. с домашней страницы Интернета.

120. Watson, А.Н. Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric / A.H. Watson, T.J. McCabe, D.R. Wallace National Institute of Standards and Technology, 1996. - 123 p.

121. Leow, W.K. Automated Generation of Test Programs From Closed Specifications of Classes and Test Cases / W.K. Leow, S.C. Khoo, Y. Sun // Proceedings of the 26th International Conference on Software Engineering, 2004. P. 96-105.

122. Weyuker, E. J. Automatically Generating Test Data from a Boolean Specification / E.J. Weyuker, T. Goradia, A. Singh // IEEE Transactions on Software Engineering, 1994. Vol. 20(5). - P. 353-363.