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

кандидата технических наук
Малинин, Сергей Николаевич
город
Нижний Новгород
год
2010
специальность ВАК РФ
05.13.01
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Тестирование объектно-ориентированного программного обеспечения на основе моделирования конечными автоматами»

Автореферат диссертации по теме "Тестирование объектно-ориентированного программного обеспечения на основе моделирования конечными автоматами"

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

□□34Э1583 МАЛИНИН СЕРГЕЙ НИКОЛАЕВИЧ

ТЕСТИРОВАНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ НА ОСНОВЕ МОДЕЛИРОВАНИЯ КОНЕЧНЫМИ АВТОМАТАМИ

Специальность 05.13.01. - «Системный анализ, управление и обработка информации (в науке и промышленности) по техническим наукам»

АВТОРЕФЕРАТ

диссертации на соискание ученой степени кандидата технических наук

Нижний Новгород, 2010 г.

1 1 ФЕБ 201П

003491583

Работа выполнена на кафедре «Вычислительные системы и технологии» Федерального государственного образовательного учреждения высшего профессионального образования Нижегородский государственный технический университет им. Р.Е.Алексеева.

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

Ломакина Любовь Сергеевна

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

Крылов Владимир Владимирович кандидат технических наук Аристархов Василий Юрьевич

Ведущая организация: Научно-исследовательский центр

контроля и диагностики, г. Н.Новгород

Защита диссертации состоится «4» марта 2010 года в 15 часов в ауд. 1258 на заседании диссертационного совета Д212.165.05 при Нижегородском государственном техническом университете им. P.E. Алексеева по адресу: 603950, г. Нижний Новгород, ул. Минина, 24.

С диссертацией можно ознакомиться в библиотеке Нижегородского государственного технического университета им. P.E. Алексеева.

Автореферат разослан «1» февраля 2010 года.

Ученый секретарь диссертационного совета кандидат технических наук

A.C. Суркова

Общая характеристика работы

Актуальность темы. Несмотря на сравнительно недавнее появление объектно-ориентированных (00) языков, таких как Smalltalk, Object Pascal, С++, Ada, объектно-ориентированное программирование (ООП) стало наиболее широко используемым стилем разработки программного обеспечения (ПО) в мире. ООП - методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. ООП подразумевает событийную управляемость. Бертран Мейер, один из основателей ООП, определял объекты как "нечто имеющее идентичность, состояние, поведение". С целью управления качеством 00 ПО необходимо решать задачи автоматизации тестирования, что требует разработки новых моделей, методов и алгоритмов, приспособленных к ОО ПО.

Фундаментальные теоретические и прикладные вопросы тестирования ПО изложены в работах В.В. Липаева, П.П. Пархоменко, В.И. Сагунова, G. Myers, В. Beizer, D. MacGregor, В. Boehm, C.V. Ramamoorthy и ряда других отечественных и зарубежных ученых. В качестве модели тестирования ПО в этих работах предлагается использовать управляющий граф программы. Однако, методы, разработанные для данной модели, хорошо зарекомендовали себя при тестировании традиционного (процедурного) ПО, но при непосредственном применении к ОО ПО имеют трудно решаемые проблемы.

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

3

Несмотря на то, что конечные автоматы используются уже давно для формального описания поведения систем, моделей, приспособленных к тестированию ОО ПО, нет. Классическая автоматная модель обладает рядом недостатков: отсутствие понятия параметров, в том числе и с бесконечной областью определения, отсутствие понятия времени, не определена семантика взаимодействия нескольких автоматов. Таким образом, разработка новых моделей и методов тестирования ОО ПО на основе теории конечных автоматов является актуальной задачей.

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

Для достижения поставленной цели решены следующие задачи:

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

- разработка тестов с учетом особенностей ОО парадигмы;

- обоснование целесообразности применения конечных автоматов для моделирования ОО ПО;

- оптимизация процедуры тестирования;

- формирование методики тестирования ОО ПО;

- программная реализация разработанных алгоритмов тестирования;

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

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

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

1. Обоснована целесообразность использования граф-модели переходов конечного автомата для разработки базовой (основной) модели объектно-ориентированного программного обеспечения, которая объединяет статические и динамические аспекты программы и тем самым является достаточной для проведения эффективного тестирования.

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

- на основе информационного критерия разработан метод выбора оптимального подмножества тестов из допустимого множества для локализации ошибок произвольной кратности;

- разработан алгоритм принятия решения о состоянии ОО ПО по критерию максимума апостериорной вероятности.

Практическая ценность и рекомендации по использованию результатов.

Разработаны средства автоматизации внедрения разработанной модели в программный проект с минимальной модификацией программного кода.

Полученные в диссертационной работе результаты могут использоваться для решения практических задач тестирования ОО ПО событийно-управляемых систем, в том числе телекоммуникационных, систем контроля и управления физическими устройствами, а также для тестирования функциональности ПО с точки зрения пользовательского интерфейса. Результаты настоящей работы были использованы при разработке программ в ЗАО "Интел А/О".

Результаты работы использованы в госбюджетной НИР (Отчет по НИР «Диагностика технических и программных систем с использованием современных информационных технологий». № государственной регистрации 01.2009.00405 от 28.01.09 - Н.Новгород: НГТУ), выполненной по целевой межвузовской программе «Диагностические и информационно- поисковые системы».

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

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

- X Международной конференции «Фундаментальные и прикладные проблемы приборостроения и информатики» (Москва, 2007);

- VII Международной конференции «НТИ-2007. Информационное общество. Интеллектуальная обработка информации. Информационные технологии» (Москва, 2007);

- VII Мехе дународной молодежной научно-технической конференции «Будущее технической науки» (Нижний Новгород, 2008);

- Международных научно-технических конференциях «Информационные системы и технологии (ИСТ-2008, ИСТ-2009)» (Нижний Новгород);

- Международном симпозиуме «Интеллектуальные системы INTELS'08» (Нижний Новгород, 2008);

- XIII Международной открытой научной конференции «Современные проблемы информатизации» (Воронеж, 2008);

- XII Международной научно-практической конференции «Системный анализ в проектировании и управлении» (Санкт-Петербург, 2008).

На конкурсе научных работ аспирантов X Международной конференции «Фундаментальные и прикладные проблемы приборостроения и информатики» (Москва, 2007) и VII Международной молодежной научно-технической конференции «Будущее технической науки» (Нижний Новгород, 2008) доклады автора были отмечены дипломами первой и третьей степени.

Публикации. По теме диссертации опубликовано 12 работ, в том числе 1 статья в журнале из перечня ВАК РФ, свидетельство о государственной регистрации программы для ЭВМ.

Структура и объем работы. Диссертация состоит из введения, четырех глав, заключения и списка литературы, включающего 128 наименований. Работа изложена на 118 страницах, содержит 11 таблиц и 15 иллюстраций.

Содержание работы

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

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

Во второй главе (Базовая модель объектно-ориентированного программного обеспечения)

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

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

- атрибуты объектов данного класса (представленные структурой данных);

- операции над атрибутами (методы).

Автоматная модель класса должна отражать функциональные требования к тестируемой программной системе и может быть получена на этапе

7

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

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

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

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

Источниками сообщений могут служить:

- устройства персонального компьютера (клавиатура, мышь, таймер);

- интерфейсный элемент приложения (команда меню, кнопка);

- результаты работы методов самого приложения.

Получение какого-нибудь сообщения является событием, при наступлении которого происходит переход к другому устойчивому состоянию (исполнение одной или нескольких операций в составе объекта и преобразование структуры данных). Исполнение операций приводит к генерации других сообщений. На рис. 2.1 показан пример потока сообщений между объектами двух классов List и Entry ОО протраммы записной книжки. Класс List имеет пять методов, три из

8

которых генерируют сообщения к методам класса Entry. Например, при обращении к методу чтения списка ReadList генерируется сообщение объекту Entry для вызова метода чтения отдельной записи ReadEntry.

Рисунок 2.1 - Пример потока сообщений между двумя классами List и Entry

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

Пусть исследуется программный модуль или комплекс программ, состоящий из классов. Каждый класс может быть представлен как автомат,

представляющий собой шестерку A={X,V,Y,qO,\j/,vd), где

- X— множество входных символов (входной алфавит);

- V— множество состояний автомата (внутренний алфавит);

- Y- множество выходных символов (выходной алфавит);

- <pç(X><V) х К- функция переходов;

- ц/ ç (X* V) *F- функция выходов при той же области определения, что (р, т.е. Domy/ = DomÇT;

- vgG V- начальное состояние.

Элементы множества Ср - называются переходами. Произвольный переход (x,v,v') е ф обозначается v——>v'

List

Entry

Автомат называется:

- конечным, если множества Л', V, У конечны;

- детерминированным, если функция переходов однозначна, т.е.

V(x,v) е Dom q> 3! v 'е V qp((x,v),v'), и тогда v - g^Qt.v).

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

Для исследования такого автомата строится ориентированный граф состояний (граф переходов) в=( где V, Е - соответственно множества

вершин и дуг, а А, р — функции инцидентности, определяющие для каждой дуги, соответственно, её начальную и конечную вершины.

Функции инцидентности Я и р определяют отношение Q смежности дуг:

На рис. 2.2 в качестве примера показана диаграмма переходов для устройства управления цифровых часов, имеющих две кнопки: "Переключение между режимами часы/минуты/секунды" и "Увеличить значение". В состоянии 1 (установка часов) поступление входного символа а (нажатие кнопки переключения режима) вызывает переход к состоянию 2 (установка минут), тогда как событие Ь увеличивает текущее время (число часов), причем это происходит без изменения состояния.

X-.E-+V и p:E—>V.

Vel,e2eE elQel = p(el)=X(e2).

Рисунок 2.2 - Диаграмма переходов автомата

Проведено исследование других особенностей 00 ПО:

- Иикапсуляг/ия, сама по себе, не является источником ошибок, однако представляет препятствие для проведения тестирования, так как многие из атрибутов класса могут быть объявлены как "невидимые" извне.

- Наследование ставит вопрос о повторном тестировании наследуемых методов, так как новый контекст атрибутов, новые аспекты поведения могут добавить новые ошибки. Для решения этого вопроса в работе строится модель иерархии наследования.

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

Для автоматизации процесса построения графа применяется метод автотрассировки, основанный на возможности перегрузки (overloading) операций. Новый класс, с одной стороны, обеспечивает те же операции, что и старый, а с другой стороны, одновременно в фоновом режиме строит вершины и дуги графа, соответствующие этим операциям.

В третьей главе (Диагностическая модель. Методы и алгоритмы тестирования объектно-ориентированного программного обеспечения) представлены соответствующие методы и алгоритмы тестирования 00 ПО, разработанные на основе описанной в предыдущей главе базовой граф-модели.

Пусть G=(V,E,X,p) - о риентированный граф состояний (граф переходов). Путем (маршрутом) Р из вершины v0 в v, называется последовательность смежных дуг графа (еа ..., ej такая, что Q е, при l<i<t. Множество путей {Pi, ...,Pr}, соединяющих вход и выход графа Gen вершинами назовем покрытием этого графа, если любая дуга лежит хотя бы на одном из путей данного множества. Покрытие с минимальным числом путей назовем минимальным покрытием графа.

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

11

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

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

Если заданный тест не прошел, то на наличие ошибок подозреваются все вершины графа, которые были активизированы, при этом результат тестирования обозначим через 1. Результаты проверок по набору тестов образуют вектор z¡eZ.

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

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

к = 1,2", которые могут быть реализованы с вероятностями где п -

количество вершин графа.

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

между вектором состояний автомата к = 1,2" и результатом тестирования Zj описывается преобразованием (рис.3.1):

тестирования и подмножествами векторов состояний автомата

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

где Н(Б) - количество информации, необходимое для однозначного определения вектора состояний автомата. Реально вектор г, доставляет в среднем количество информации, равное взаимной информации:

Поскольку неопределенность (энтропия) Н^/Б) появления Zj при заданном равна 0, то

При этом коэффициент К, определяемый по формуле

К=Ш±

Я(Б)»

показывает, какую часть составляет доставляемое в среднем вектором г^

количество информации от количества информации Н(Б).

13

Решены следующие задачи оптимизации:

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

- определение глубины локализации при заданном множестве тестов.

Для решения указанных выше задач необходимо упорядочить тесты по количеству информации, которое они доставляют. Располагая упорядоченной последовательностью тестов, можно определить • их минимальное подмножество, которое обеспечивает заданную глубину локализации, или максимизировать ее при заданном количестве тестов. Например, если необходимо обеспечить глубину локализации состояния с коэффициентом, равным А=0,94, то из диаграммы (рис.3.2) следует, что в качестве минимального множества тестов необходимо выбрать тесты с номерами 5,4,2,3. Аналогично решается обратная задача. Если из допустимого множества тестов имеется возможность использования только теста 3, то для обеспечения максимальной глубины локализации необходимо выбрать тесты с номерами 5,4,2,3, при этом коэффициент К примет максимальное значение, равное К=0,94.

0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1

0 , , . .......----Г-' ■ - г . . , --

5 4 2 3 6 1

Рисунок 3.2 — Диаграмма зависимости коэффициента К от номера очередного вводимого теста

Алгоритм определения минимального количества тестов и локализации ошибок состоит из следующих этапов:

1. Нумерация всех состояний автомата.

2. Построение матрицы проверок В на допустимом множестве тестов.

3. Выбор оптимального множества тестов по информационному критерию.

4. Построение матрицы проверок В на оптимальном множестве тестов.

5. Проверка результатов тестирования и построение вектора г/

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

Разработка стратегии определения вектора состояний автомата производится с учетом следующих основных принципов (рис. 3.1):

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

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

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

Решение о векторе состояний автомата принимается по критерию максимума апостериорной вероятности:

где Р{ у ) - апостериорная вероятность. / г)

Определение вектора ик состояний автомата, при котором апостериорная вероятность Р(?у ) максимальна, методом перебора всех векторов состояний

автомата практически невозможно из-за большого объема вычислений. Поэтому задачу предлагается решать в два этапа. На первом этапе по результатам тестирования гу- определяется подмножество подозреваемых на экстремум векторов состояний автомата, на втором этапе из этого подмножества выбирается наиболее вероятный вектор состояний автомата (рис 4.1).

В четвертой главе (Практические аспекты тестирования объектно-ориентированного программного обеспечения) приведен пример практического применения предложенных методов и алгоритмов. Рассматривается программный комплекс, реализующий определение множества тестов и локализацию ошибок, успешно применяемый при тестировании класса видео декодера в ЗАО Интел А/О".

I Поиск ошибки

• Результаты тестировав.-;;

Т1 II 1 I

1 1 0 0 0 1 1 10 0 11 1 110 0 0 1 110 10 0 0 0 1 0 0

-Наиболее &еог.£тнь1' зектср состоя-кй автомата

ГПТГ1 г , 10 0 0 0 0 1

I I

1 -Разпеэ^осгл—----*-------

• ; Число

| верилтн |б 41010 Г5

■ графа: — тестоз: ' —1'

3

Рисунок 4.1 - Интерфейс пользователя для определения наиболее вероятного вектора состояний автомата

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

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

Основные результаты работы

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

1. Разработана базовая (основная) модель объектно-ориентированного программного обеспечения как результат изучения и отображения его поведения, как в исправном состоянии, так и при всевозможных неисправностях (ошибках) в фоновом режиме на основе построения граф-модели переходов конечного автомата.

2. Разработана диагностическая модель объектно-ориентированного программного обеспечения, включающая методы и алгоритмы решения задач тестирования с учетом особенностей ОО парадигмы, а именно:

- алгоритм определения минимального количества тестов по информационному критерию для обеспечения заданной глубины состояния ОО ПО;

- алгоритм определения глубины локализации состояния ОО ПО при заданном множестве тестов.

3. Разработана стратегия определения состояния ОО ПО по критерию максимума апостериорной вероятности.

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

Список опубликованных работ по теме диссертации

Публикации в рекомендованных ВАК изданиях

[1] Малинин, С.Н. Тестирование объектно-ориентированных программ моделированием конечными автоматами [Текст] / Малинин С.Н. // Журнал «Известия высших учебных заведений. Поволжский регион. Технические науки» (индекс - 36966). - Пенза: ПТУ - 2009. - №2. - С. 63-70.

Публикации в других изданиях

[2] Малинин, С.Н. Развитие методов тестирования объектно-ориентированного программного обеспечения [Текст] / С.Н. Малинин, J1. С. Ломакина // Материалы 10-й Международной конференции «Фундаментальные и прикладные проблемы приборостроения и информатики. Книга «Информатика», 1-5 октября 2007 г. - Москва: МГУПИ, 2007. - С. 122-126.

[3] Малинин, С.Н. Тестирование объектно-ориентированного программного обеспечения [Текст] / С.Н. Малинин // Материалы 7-й Международной Конференции «НТИ-2007». Информационное общество. Интеллектуальная обработка информации. Информационные технологии, 24-26 октября 2007 г. - Москва: ВИНИТИ РАН, 2007. - С. 190-192.

[4] Малинин, С.Н. Построение граф-модели потока сообщений объектно-ориентированной программы методом автотрассировки [Текст] / Малинин С.Н. // Материалы 13-й Международной открытой научной конференции «Современные проблемы информатизации». - Воронеж: ВГТУ, 2008. - С. 244-247.

[5] Малинин, С.Н. Методы синтеза графовой модели программной системы [Текст] / С.Н. Малинин // Материалы Международного симпозиума «Интеллектуальные системы 2008 INTELS'08», 30 июня-4 июля 2008 г. -Москва: МГТУ им. Н.Э.Баумана - Н.Новгород: НГТУ им. P.E. Алексеева, 2008.-С. 171-174.

[6] Малинин, С.Н. Об одном методе тестирования объектно-ориентированного программного обеспечения [Текст] / С.Н. Малинин, JI. С. Ломакина // Материалы VII Международной научно-технической конференции «Будущее технической науки», 16 мая 2008 г. -Н.Новгород: НГТУ, 2008. - С.349.

[7] Малинин, С.Н. Разработка системы автоматизации диагностики объектно-ориентированного программного обеспечения [Текст] / С.Н. Малинин, JI. С. Ломакина // Материалы Международной научно-технической конференции «Информационные системы и технологии (ИСТ-2008)», 18 апреля 2008 г. - Н.Новгород: НГТУ, 2008. - С.241-242.

[8] Малинин, С.Н. Системный • подход при тестировании объектно-ориентированного программного обеспечения [Текст] / С.Н. Малинин // Труды XII Международной научно-практической конференции «Системный анализ в проектировании и управлении», 24-26 июня 2008 г. - Санкт-Петербург: СПб. ПУ, 2008. - С. 10-11.

[9] Малинин, С.Н. Автоматная модель для определения входных данных при тестировании классов объектно-ориентированного программного обеспечения [Текст] / С.Н. Малинин // Труды НГТУ. Серия «Системы обработки информации и управления» - Т. 74. — Вып. 15. - Н.Новгород: НГТУ.-2008.-С. 26-30.

[10] Малинин, С.Н. Применение теории конечных автоматов для диагностики классов объектно-ориентированного программного обеспечения [Текст] / С.Н. Малинин // Материалы Международной научно-технической конференции «Информационные системы и технологии (ИСТ-2009)», 17 апреля 2009 г. - Н.Новгород: НГТУ, 2009. -С.271.

[11] Малинин, С.Н. Диагностика технических и программных систем с использованием современных информационных технологий [Текст] / С.Н. Малинин, Л. С. Ломакина, A.C. Базин, А.Н. Вигура, В.П. Губернаторов, A.B. Киселев // Отчет по НИР № государственной регистрации 01.2009.00405 от 28.01.09 - Н.Новгород: НГТУ. - 127 с.

[12] Малинин, С.Н. Визуализация тестирования объектно-ориентированного программного обеспечения / С.Н. Малинин, Л. С. Ломакина, A.B. Киселев // Свидетельство об официальной регистрации программ для ЭВМ № 2009617238. Зарегистрировано в реестре программ для ЭВМ Федеральной службы по интеллектуальной собственности, патентам и товарным знакам РФ от 18.11.09.

Подписано в печать 26.01.10. Формат 60 х 84 '/16. Бумага офсетная. Печать офсетная. Уч.-изд. л. 1,0. Тираж 100 экз. Заказ 63.

Нижегородский государственный технический университет им. Р. Е. Алексеева. Типография НГТУ. 603950, Нижний Новгород, ул. Минина, 24.

Оглавление автор диссертации — кандидата технических наук Малинин, Сергей Николаевич

1.1 Жизненный цикл ПО.

1.2 Качество ПО.

1.3 Структурная сложность.

1.4 Тестирование.

1.5 Классификация ошибок.

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

ГЛАВА 2. БАЗОВАЯ МОДЕЛЬ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

2.1 Особенности ОО ПО по сравнению с традицинным ПО.

2.2 Автоматная модель объектно-ориентированного программного обеспечения.

2.3 Автотрассировка.

2.4 Выводы по главе 2.

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

3.1 Модель и стратегия определения состояния объектно-ориентированного программного обеспечения

3.2 Оптимизация выбора тестов по информационному критерию.

3.3 Принятие решения о векторе состоянии автомата но критерию максимума апостериорной вероятности

3.4 Выводы по главе 3.

ГЛАВА 4. ПРАКТИЧЕСКИЕ АСПЕКТЫ ТЕСТИРОВАНИЯ ОО ПО.

Введение 2010 год, диссертация по информатике, вычислительной технике и управлению, Малинин, Сергей Николаевич

Актуальность темы. Несмотря на сравнительно недавнее появление объектно-ориентированных (ОО) языков, таких как Smalltalk, Object Pascal, С++, Ada, объектно-ориентированное программирование (ООП) стало наиболее широко используемым стилем разработки программного обеспечения (ПО) в мире. ООП — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. ООП подразумевает событийную управляемость. Бертран Мейер, один из основателей ООП, определял объекты как "нечто имеющее идентичность, состояние, поведение". С целью управления качеством ОО ПО необходимо решать задачи автоматизации тестирования, что требует разработки новых моделей, методов и алгоритмов, приспособленных к ОО ПО.

Фундаментальные теоретические и прикладные вопросы тестирования ПО изложены в работах В.В. Липаева, П.П. Пархоменко, В.И. Сагунова, G. Myers, В. Beizer, D. MacGregor, В. Boehm, C.V. Ramamoorthy и ряда других отечественных и зарубежных ученых. В качестве модели тестирования ПО в этих работах предлагается использовать управляющий граф программы. Однако, методы, разработанные для данной модели, хорошо зарекомендовали себя при тестировании традиционного (процедурного) ПО, но при непосредственном применении к ОО ПО имеют трудно решаемые проблемы.

Удобным средством описания ОО ПО является модель, построенная на основе теории конечных автоматов: она обладает ясностью семантики (трактовки элементов модели), наглядностью и выразительностью, и в то же время достаточно строга и формальна. Среди отечественных ученых множество работ по проблеме проектирования и реализации ПО с помощью конечных автоматов принадлежит Шалыто А.А. Представление программы с использованием элементов автоматной модели: состояний, событий, действий, переходов позволяет повысить эффективность тестирования ПО за счет проверки не только возвращаемых кодов, но и содержащихся в объекте данных. 4

Несмотря на то, что конечные автоматы используются уже давно для формального описания поведения систем, моделей, приспособленных к тестированию 00 ПО, нет. Классическая автоматная модель обладает рядом недостатков: отсутствие понятия параметров, в том числе и с бесконечной областью определения, отсутствие понятия времени, не определена семантика взаимодействия нескольких автоматов. Таким образом, разработка новых моделей и методов тестирования ОО ПО на основе теории конечных автоматов является актуальной задачей.

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

Задачи работы. Достижение намеченной цели требует решения следующих задач:

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

• разработка тестов с учетом особенностей ОО парадигмы;

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

• оптимизация процедуры тестирования;

• формирование методики тестирования ОО ПО;

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

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

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

Научная новизна работы.

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

2. В рамках предложенной модели сформулированы и решены следующие задачи оптимизации: выбор множества тестов по информационному критерию для локализации ошибок произвольной кратности;

- принятие решения о состоянии объектно-ориентированного программного обеспечения по критерию максимума апостериорной вероятности.

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

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

Полученные в диссертационной работе результаты могут использоваться для решения практических задач тестирования ОО ПО событийно-управляемых систем, в том числе телекоммуникационных, систем контроля и управления физическими устройствами, а также для тестирования функциональности ПО с точки зрения пользовательского интерфейса. Результаты настоящей работы были использованы при разработке программ в ЗАО "Интел А/О".

Результаты работы использованы в госбюджетной НИР (Отчет по НИР «Диагностика технических и программных систем с использованием современных информационных технологий». № государственной регистрации 01.2009.00405 от 28.01.09 - Н.Новгород: НГТУ), выполненной по целевой межвузовской программе «Диагностические и информационно-поисковые системы».

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

X Международной конференции «Фундаментальные и прикладные проблемы приборостроения и информатики» (Москва, 2007);

VII Международной конференции «НТИ-2007. Информационное общество. Интеллектуальная обработка информации. Информационные технологии» (Москва, 2007);

VII Международной молодежной научно-технической конференции «Будущее технической науки» (Нижний Новгород, 2008);

Международных научно-технических конференциях «Информационные системы и технологии (ИСТ-2008, ИСТ-2009)» (Нижний Новгород);

Международном симпозиуме «Интеллектуальные системы INTELS'08» (Нижний Новгород, 2008);

XIII Международной открытой научной конференции «Современные проблемы информатизации» (Воронеж, 2008);

XII Международной научно-практической конференции «Системный анализ в проектировании и управлении» (Санкт-Петербург, 2008).

На конкурсе научных работ аспирантов X Международной конференции «Фундаментальные и прикладные проблемы приборостроения и информатики» (Москва, 2007) и VII Международной молодежной научно-технической конференции «Будущее технической науки» (Нижний Новгород, 2008) доклады автора были отмечены дипломами первой и третьей степени.

Публикации. По теме диссертации опубликовано 12 работ, в том числе 1 статья в журнале из перечня ВАК РФ, свидетельство о государственной регистрации программы для ЭВМ.

Структура работы. Диссертация состоит из введения, четырех глав, заключения и списка литературы, включающего 128 наименований. Работа изложена на 118 страницах, содержит 11 таблиц и 15 иллюстраций.

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

3.4 Выводы по главе 3

1. Разработана базовая (основная) модель объектно-ориентированного программного обеспечения как результат изучения и отображения его поведения, как в исправном состоянии, так и при всевозможных неисправностях (ошибках) в фоновом режиме на основе построения граф-модели переходов конечного автомата.

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

Алгоритм определения минимального количества тестов и локализации ошибок состоит из следующих этапов:

1. Нумерация всех состояний автомата.

2. Построение матрицы проверок В на допустимом множестве тестов.

3. Выбор оптимального множества тестов по информационному критерию.

4. Построение матрицы проверок В на оптимальном множестве тестов.

5. Проверка результатов тестирования и построение вектора Zj.

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

ГЛАВА 4. ПРАКТИЧЕСКИЕ АСПЕКТЫ ТЕСТИРОВАНИЯ ОО ПО

4.1.1 Описание тестируемой системы

Результаты настоящей работы были использованы при разработке программ в ЗАО "Интел А/О". В качестве примера рассмотрим приложение Video Studio, предназначенное для декодирования и транскодирования аудио и видео файлов (рис.4.1.1).

Рисунок 4.1.1 - Интерфейс приложения Video Studio

Интерфейс приложения содержит 7 кнопок и окно вывода диагностической информации.

4.1.2 Описание методики построения схемы, описывающей функционирование приложения

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

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

ЗАКЛЮЧЕНИЕ

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

1. Разработана базовая (основная) модель объектно-ориентированного программного обеспечения как результат изучения и отображения его поведения, как в исправном состоянии, так и при всевозможных неисправностях (ошибках) в фоновом режиме на основе построения граф-модели переходов конечного автомата.

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

3. Разработана стратегия определения состояния ОО ПО по критерию максимума апостериорной вероятности.

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

Библиография Малинин, Сергей Николаевич, диссертация по теме Системный анализ, управление и обработка информации (по отраслям)

1. Андерсон Р. Доказательство правильности программ: Пер. с англ. М.: Мир, 1982.

2. Балыков Е., Царев В. Тестирование программных средств // RSDN Magazine. 2006. №4.

3. Бейзер Б. Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем. СПб.: Питер, 2004.

4. Безбородов Ю.М. Индивидуальная отладка программ.-М.:Наука, 1982,-192с.

5. Бичевский Я.Я., Борзов Ю.В. Развитие методов символического тестирования программ // Автоматика и телемеханика.-1982.-№2.-С.93-102.

6. Блау С.А., Липаев В.В., Позин Б.А. Эффективность тестирования структуры программных модулей // АиТ, 1984 №4. С. 139 — 148.

7. Блау С.А., Позин Б.А. Анализ планов тестирования программных модулей с учетом нереализуемых маршрутов //Программирование.- 1988.-№4.-С. 26-34.

8. Боэм Б., Браун Дж., Каспар X. Характеристики качества программного обеспечения: Пер. с англ. М.: Мир, 1981.

9. Борзов Ю.В. Тестирование программ с использованием символического исполнения //Программирование.-1980.-№1.-С.51-59.

10. Борзов Ю.В., Дишлерс Г.Э., Медведис И.Э., Уртанс Г.Б. Система символического тестировании ПЛ/1 -программ //УСиМ ,-1986.-№6.-С.75-79.

11. Буч Г. Объектно-ориентированное проектирование с примерами применения / Г. Буч. М.: Конкорд, 1992.

12. Буч Г., Рамбо Дж., Якобсон И. UML. 2-е издание. СПб.: Питер,2005.

13. Верзаков Г. Ф. и др. Введение в техническую диагностику. Под ред. К. Б. Карандеева. М.: Энергия, 1968.

14. Воеводин В.В. Вычислительная математика и структура алгоритмов. М.: Изд-во МГУ, 2006.

15. Веденеев В.В. Автоматизация тестирования использования программных интерфейсов приложений на основе моделирования конечными автоматами, http://is.ifino.ru/testing/vedeneev/

16. Гаганов П.Г., Липаев В.В., Просвирин В.Н. Динамика процесса отладки больших управляющих систем // Управляющие системы и машины, №1, С. 19-28, 1975.

17. Гаганов П.Г., Липаев В.В. Характеристики ошибок в процессе разработки комплексов программ.//Программирование, №2, С.36-41, 1975.

18. Гаганов П.Г., Липаев В.В., Просвирин В.Н., Волков В.Н. Анализ ошибок в сложных программах систем управления объектами. // Управляющие системы и мшины, №3, С.31-38, 1973.

19. Дал У., Дейкстра Э., Хоор К. Структурное программирование // «Мир», 1975.

20. Дейкстра Э. Взаимодействие последовательных процессов / Языки программирования. М.: Мир, 1972.

21. Дробушевич Л.Ф. Оценка структурной сложности программ //Программирование.-1987.-№1.- С.81-90.

22. Дробушевич Л.Ф. Метод оценки топологической сложности программ//УСиМ.-1988.-№4.-С.69-74.

23. Долбак Л.В. Методика отладки и испытаний управляющих алгоритмов и программ АСУ //Программирование.- 1984.-ЖЗ.-С.62-69.

24. Ермаков Г.В. Тестирование MIXAL программ с помощью символического исполнения //Программирование.- 1988.-№5.-С.12-18.

25. Ершов A.M. Средства, расширяющие возможности отладки программ на языке КОБОЛ ОС ЕС//УСиМ.-1988.-№2.-С.45-48.

26. Ершов Н.М. Построение графов вычислительных алгоритмов методом автотрассировки // Программирование. 2000. №6. С.8-16.

27. Е.А. Жоголев. Введение в технологию программирования (конспект лекций). -М.: "ДИАЛОГ-МГУ", 1994.

28. Зелковец М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения. М.: Мир, 1982. - С. 11.

29. Зиглер К. Методы проектирования программных систем. М.: Мир, 1985.-С. 15-23.

30. Иванова Г.С, Ничушкина Т.Н., Пугачев Е.К. Объектно-ориентированное программирование. М.: Издательство МГТУ имени Н.Э.Баумана, 2000.

31. Иыуду К.А.,Арипов Н.М. Тестирование программы на основе минимального покрытия ее графа /УСиМ.//985.-М.-С.69-71.

32. Иыуду К.А., Арипов Н.М. Автоматизация генерации путей для тестирования программ, записанных на Фортране //Программирование.--1986.-№2.-С.24-31.

33. Йордан Э., Аргила С. Структурные модели в объектно-ориентированном анализе и проектировании. 1999. 288 с.

34. Карпов Ю.Г. Теория автоматов. СПб.: Питер, 2003.

35. Касьянов В. Н., Евстигнеев В. А. Графы в программировании: обработка, визуализация и применение. СПб.: БХВ-Петербург, 2003.

36. Катков В.Л., ШимаровВ.А. Средства поддержки структурного тестирования программ //УСиМ.-1986.-№2.-С.54-59.

37. Катков В.Л., Ермаков Г.В. Система автоматизации тестирования MIXAL -программ //Программирование.- 1985.-№3.-С.50-58.

38. Коган Б.И., Шалфеева Е.А. Оценка качества и исследование программных продуктов: языково-ориентированный подход. Модели и метрики объектно-ориентированных проектов и программ: Препринт 26-2000, Владивосток: ИАПУ ДВО РАН, 2000, 50 с.

39. Косяченко С.А., Дульба В.В., Мамиконов Л.Г., Соколова Е.Б. Использование сетей Петри для локализации ошибок в процессе системнойотладки комплексов программ //Автоматика и телемеханика,- 1988.-№5.-С. 165-177.

40. Коростиль Ю.М., Гуляев В.А. Комплекс программ для диагностирования программных модулей микропроцессорных систем //УСиМ.-1988.-№3.-С.55-58.

41. Колякин Ю.Д. Отладка программного обеспечения в диалоговой многотерминальной системе// УСиМ.-1983.-№2.-С.56-60.

42. Котляров В.П. Основы тестирования программного обеспечения, Интернет-университет информационных технологий ИНТУИТ.ру, 2006.

43. Кузьмин Е.В., Соколов В.А. Структурированные системы переходов. М.: ФИЗМАТЛИТ, 2006. - 176 с.

44. Кузьмин Е. В., Соколов В. А. Моделирование спецификация и верификация «автоматных» программ // Программирование. 2008, № 1. http://is.ifmo.ru/download/2008-03-12verification.pdf

45. Кристофидес Н. Теория графов. Алгоритмический подход. — М.:Мир, 1978.-432 с.

46. Липаев В.В., Гаганов П.Г., Просвирин В.Н. Прогнозирование рациональной длительности отладки больших управляющих систем // Управляющие системы и машины, №4, С.8-14, 1975.

47. Липаев В.В. Проектирование математического обеспечения АСУ. М.:Сов. радио, 1977.

48. Липаев В.В. Обеспечение качества программных средств. Методы и стандарты. М.:СИНТЕГ,2001.

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

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

51. Липаев В.В. Качество программного обеспечения. М.: Финансы и статистика, 1983. - С. 18-30.

52. Липаев В.В. Надежность программных средств. М.: СИНТЕГ, 1998.

53. Липаев Б.Н. Отладка систем управляющих алгоритмов ЦВМ реального времени // Сов. радио, 1974.

54. Майерс Г. Надежность программного обеспечения. М.: Мир, 1980. С. 32 - 48.

55. Майерс Г. Искусство тестирования лрограмм.-М.:Финансы и статистика ,1982.-178с.

56. Макгрегор Джон, Сайке Девид. Тестирование объектно-ориентированного программного обеспечения. Практическое пособие: Пер. с англ. / Джон Макгрегор, Девид Сайке. К.: ООО "ТИД "ДС", 2002.

57. Мейер Б. Объектно-ориентированное конструирование программных систем. М.: Русская Редакция, 2005.

58. Месарович М., Мако Д., Такахара И. Теория иерархических систем: Пер. с англ. М.: Мир, 1973.

59. Оре О. Теория графов. Главная редакция физико-математической литературы издательства "Наука", 1968.

60. Отладка систем управляющих алгоритмов ЦВМ реального времени /Под редакцией В.В.Липаева.-М.: -Сов.радио, 1974, 326 с.

61. Пархоменко П.П. Теория вопросников (обзор) // АиТ, 1970 №4. С. 140- 152.

62. Пархоменко П.П., Правильщиков П.А. Диагностирование программного обеспечения //Автоматика и телемеханика.-1980.-C.II7-I4I.63. Полигамияhttp://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%B3%D0 %В 0%D0%B C%D0%B 8%D 1 %8F

63. Поликарпова Н.И., Шалыто А.А. Автоматное программирование. — Спб.: Питер, 2010.-176 с.

64. Правильщиков П.А. Построение тестов для программ.// АиТ. , №5, С.147-161, 1977.

65. Правильщиков П.А. Построение тестов для программ //Автоматика и телемеханика. -1977. -№5. -С. I47-I6I.

66. Просвирин В.Н. Статистическая процедура определения продолжительности тестовых испытаний управляющих программ // Управляющие системы и машины, №5, С.54-57, 1977.

67. Рамбо Дж., Якобсон А., Буч Г. Унифицированный процесс разработки программного обеспечения. СПб.: Питер, 2002.

68. Риндфлайт Д. Отладка программ в системах 360/370 на основе дампов памяти ОС.-М.: Машиностроение,1982.-144 с.

69. Средства отладки программ в ОС ЕС ЭВМ / В.И.Ерофеев и др.-М.: Статистика, 1979.- 245 с.

70. Сагунов В.И. Диагностирование кратных ошибок в программных модулях //Программирование.- 1988,-№4.-С.34-38.

71. Тамре Л. Введение в тестирование программного обеспечения. Вильяме, 2003. — 368 с.

72. Торопов Д.И. 0 построении тестирующих маршрутов программы, //УСиМ. -1987. -№6.-С. 74-77.

73. Туккель Н. И., Шалыто А. А. Система управления танком для игры Robocode. Объектно-ориентированное программирование с явным выделением состояний. СПбГУ ИТМО. 2001. http://is.ifmo.ru/projects/tanks/

74. Уртанс Г.Б. Функции путей программы //Программирование.-1987.-№4.-С.69-78.

75. Фокс Дж. Программное обеспечение и его разработка. М.: Мир, 1985.-С. 53-67, 125-130.

76. Хорев П.Б. Технологии объектно-ориентированного программирования / Павел Борисович Хорев. М.: Издательский центр "Академия", 2004.-448 с.

77. Шварц Дж.Т. Обзор ошибок. В кн. «Средства отладки больших систем», под ред. Р.Растина, С. 17-27, «Статистика», 1977.

78. Шимаров В.А. Об одном методе тестирования программы на основе минимального покрытия ее графа//УСиМ .-1988.-№5.-С.51-53.

79. Шимаров В.А. Средства поддержки структурного тестирования программ //УСиМ,- 1988. -№2. -С. 54-59.

80. Шлеер С., Мейлор С. Объектно-ориентироваяный анализ: моделирование мира в состояниях. Киев: Диалектика, 1993.

81. Б. Шнейдерман. Психология программирования. М.: Радио и связь, 1984.-С. 99-103.

82. ГОСТ 28195-89. Оценка качества программных средств. Общие положения.

83. ГОСТ Р ИСО/МЭК 9126-93. Информационная технология. Оценка программной продукции — характеристики качества и руководства по их применению.

84. ИСО 8402-94. Управление качеством и обеспечение качества. Словарь.

85. ГОСТ 15467-79. Управление качеством продукции. Основные понятия. Термины и определения.

86. ГОСТ Р ИСО/МЭК 12007-99. Информационная технология. Процессы жизненного цикла программных средств.

87. ГОСТ 19.102-77 Стадии разработки программ и программной документации.

88. ISO 9126, 1991 ИТ Оценка программного продукта. Характеристики качества и руководство по их применению.

89. Akiyama F. An Example of Software System Debugging.// IFIP Conference Proceeding, pp.31-42, Ljubljana TA-3, Yugoslavia, August 1971.

90. Alfotd M.W. A requirements engineering methodology for real-time processing requirements.// IEEE Trans. Software Engng, v.3, №1, pp.60-69, 1977.

91. Binder R.V. Testing Object-Oriented Systems: Models, Patterns, and Tools, Addison-Wesley, 2000.

92. Boehm B.W. McClean R.K., Urfrig D.B. Some experience with automated aids to the design of larg-scale reliable software.// IEEE Trans. Software Engng, v.l, №2, pp.125-153, 1975.

93. De Millo R.A. Hints on test data selection: help for the practicing programmer.// Computer, №4, pp.34-41, Apr.1978.

94. Endres A. An analysis of errors and their causes in system programs. // Proc. Int. Conf. Reliable Software, Los Angeles, Calif., pp.327-336, 1975.

95. Gallagher L., Offutt J. Integration Testing of Object-oriented Components Using FSMS: Theory and Experimental Details // GMU Technical Report ISE-TR-04-04, July 2004.

96. Gerhart S.L., Yelowitz L. Observations of Fallibility in Applications of Modern Programming Methodologies.// IEEE Trans. Software Engng, v.SE-2, №3, pp. 195-207, 1976.

97. Harel D., Pnueli A. On the development of reactive systems /Logic and model of computer systems. Ed. K.R. Apt. NY: Springer-Varlag, 1985.

98. Harel D., Polity M. Modeling Reactive Systems with Statechart. The Statemate Approach. NY: McGraw-Hill, 1998.

99. HISSA. http://hissa.ncsl.nist.gov.

100. Hoffman D., Strooper P. ClassBench: a Framework for Automated Class Testing. Software Maintenance: Practice and Experience, Vol. 27, No. 5, May 1997, pp. 573-579.

101. Howden W.E. Reliability of the path analysis testing strategy.// IEEE Trans. Software Engng, v.SE-2, №3, pp.208-215, 1976.

102. Howden W.E. Symbolic Testing and the DISSECT Symbolic Evolution System.// IEEE Trans. Software Engng, v.SE-2, №3, pp.266-279, 1977.

103. Ibramsha M. Rairman V. Detection off logical errors in detection table programs // CACM. 1978. Vol. 21. № 12. P. 1016-1024.

104. Meyer B. Design by Contract, Technical Report TR-EI-12/CO. Interactive Software Engineering Inc., 1986.

105. Miller G. The Psychological review. 1956.

106. Miller W., Spooner D.L. Automatic Generation of floating-point test data.// IEEE Trans. Software Engng, v.SE-2, №3, pp.208-215, 1976.

107. Panzl D.J. Automatic software test drivers.// Computer, №4, p.44-50, apr.1978.

108. Parasoft Homepage, http://www.parasoft.com/isp/home.isp.

109. Rubey R.J., Dana J.A., Biche P.W. A equatitative aspect of software validation.// IEEE Trans. Software Engng, v.SE-1, №2, pp.150-155, June 1975.

110. Rumbaugh J., Blaha M., Premerlani W., Eddy F., and Lorensen W., Object Oriented Modeling and Design, Prentice Hall, 1991.

111. Schneidewind N.F. Analysis of error processis in computer software. // Proc. Int. Conf. Reliable Software, Los Angeles, Calif., pp.337-376, 1975.

112. Shoomon M.L., Bolsky M.I. Types, distribution end test end correction times for programming errors. // Proc. Int. Conf. Reliable Software, Los Angeles, Calif., pp.347-357, 1975.

113. Thayer R.H., Hinton E.S. Software reliability — a method that works. // AFIPS Conf. Proc., v.44, Montvale, N.Y., pp.877-883, 1975.

114. Turner C.D., Robson D.J. The State-based Testing of Object-Oriented Programs. Proc. IEEE Conf. Software Maintenance, 1993, pp. 302-310.

115. Walden K., Nerson J.-M. Seamless Object-Oriented Software Architecture: Analysis and Design of Reliable Systems. Prentice Hall, Hemel Hempstead (U.K.), 1995.

116. Youngs E.A. Human errors in programming.// Int. J. Man-Mach. Stud., v.6, №3, pp.361-376, 1974.

117. Малинин, С.Н. Об одном методе тестирования объектно-ориентированного программного обеспечения Текст. / С.Н. Малинин, JI. С. Ломакина // Материалы VII Международной НТК «Будущее технической науки», 16 мая 2008 г. Н.Новгород: НГТУ, 2008. - С.349.