Модели и алгоритмы структурного тестирования взаимодействия классов в объектно-ориентированном программном обеспечении тема диссертации и автореферата по ВАК РФ 05.13.01, кандидат наук Киселев, Алексей Викторович

  • Киселев, Алексей Викторович
  • кандидат науккандидат наук
  • 2013, Нижний Новгород
  • Специальность ВАК РФ05.13.01
  • Количество страниц 120
Киселев, Алексей Викторович. Модели и алгоритмы структурного тестирования взаимодействия классов в объектно-ориентированном программном обеспечении: дис. кандидат наук: 05.13.01 - Системный анализ, управление и обработка информации (по отраслям). Нижний Новгород. 2013. 120 с.

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ГЛАВА 1. ОБЗОР СУЩЕСТВУЮЩИХ МЕТОДОВ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ПОСТАНОВКА ЗАДАЧИ ИССЛЕДОВАНИЯ

1.1 Тестирование программного обеспечения. Основные задачи и проблемы тестирования

1.2 Методы тестирования

1.3 Методы построения тестов

1.4 Метрики тестирования

1.5 Автоматизация тестирования

1.6 Техника тестирования объектно-ориентированного программного обеспечения

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

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

2.1 Особенности объектно-ориентированного программирования

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

2.3 Построение графа потока управления между классами

2.3.1 Синтаксический анализ программы

2.3.2 Семантический анализ программы

2.3.3 Алгоритм построения управляющего графа класса

2.3.4 Инструмент построения модели 00 ПО

2.4 Выводы

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

3.1 Основная идея разработанного алгоритма тестирования

3.2 Ранжирование классов

3.3 Анализ потока данных между классами

3.4 Межклассовое символьное выполнение

3.5 Дедуктивный процесс построения тестовых сценариев

3.6 Критерий полноты тестирования

3.7 Применимость разработанной техники тестирования

3.8 Выводы

ГЛАВА 4. ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРИМЕНТ. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ

4.1 Автоматизированная система генерации тестовых сценариев

4.2 Вычислительный эксперимент №1: класс Stream

4.3 Вычислительный эксперимент №2: NATGateway

4.3.1 Описание программного комплекса NATGateway

4.3.2 Экспериментальная проверка разработанного алгоритма тестирования

4.4 Анализ результатов

Заключение

Библиографический список

ПРИЛОЖЕНИЯ

Рекомендованный список диссертаций по специальности «Системный анализ, управление и обработка информации (по отраслям)», 05.13.01 шифр ВАК

Введение диссертации (часть автореферата) на тему «Модели и алгоритмы структурного тестирования взаимодействия классов в объектно-ориентированном программном обеспечении»

ВВЕДЕНИЕ

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

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

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

Существующие техники тестирования классов привязывают генерацию тестовых сценариев к существующей спецификации класса. Среди исследователей в этой области можно выделить В.В. Липаева, П.П. Пархоменко, В.И. Сагунова, А.А. Шалыто, О. Масвге§ог, О. Кш^, Р. Топе11а и другие. Данные техники применимы к тестированию класса изолированно, не учитывают взаимодействие объектов классов в программе и требуют дополнительной модификации исходного кода программы для получения информации о текущем состоянии объекта класса.

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

основываться на вызове его методов в различных состояниях объекта тестируемого класса.

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

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

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

- анализ существующих моделей, методов и алгоритмов тестирования 00 ПО;

- обоснование целесообразности применения граф-модели для моделирования ОО ПО;

- разработка метода анализа потока данных на основе граф-модели;

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

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

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

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

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

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

Практическая ценность работы

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

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

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

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

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

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

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

Реализация результатов работы

Практические результаты, полученные в ходе выполнения диссертационной работы, используются в производственном процессе одного из проектов компании «МЕРА НН», что подтверждается актом о внедрении. Они также используются в учебном процессе подготовки магистрантов направления «Информатика и вычислительная техника» по программе «Диагностические и информационно-поисковые системы» в Нижегородском государственном техническом университете им. Р.Е. Алексеева. Разработанный программный комплекс зарегистрирован в Реестре программ для ЭВМ Федеральной службы по интеллектуальной собственности, патентам и товарным знакам РФ.

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

Апробация работы

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

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

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

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

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

Публикации

По теме диссертации опубликовано 10 работ, в том числе 3 статьи в рецензируемых изданиях из перечня ВАК РФ, свидетельство о государственной регистрации программы для ЭВМ № 2010611279 от 15 февраля 2010 г.

Структура и объем работы

Диссертация состоит из введения, четырех глав, заключения и списка литературы, включающего 97 наименований. Работа изложена на 117 страницах, содержит 7 таблиц и 27 иллюстраций.

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

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

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

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

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

В четвертой главе (Вычислительный эксперимент. Практическая реализация) приведен пример практического применения предложенного метода тестирования ОО ПО. Проводится вычислительный эксперимент над классом Stream, реализующим буфер ввода/вывода, и над программным комплексом NATGateway, который выполняет адаптацию между системами OSS {Operations Support System) и NAT-SCP {Number Address Translation - Service Control Point), использующими разные сетевые протоколы передачи данных.

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

Приложение содержит:

• акт о внедрении разработанной автоматизированной системы генерации тестовых сценариев в производственный процесс компании «МЕРА НН»;

• акт о внедрении результатов диссертационной работы в учебный процесс подготовки магистрантов направления «Информатика и вычислительная техника» по программе «Диагностические и информационно-поисковые системы» в Нижегородском государственном техническом университете им. P.E. Алексеева;

• свидетельство о государственной регистрации программы для ЭВМ №2010611279 от 15 февраля 2010 г.

ГЛАВА 1. ОБЗОР СУЩЕСТВУЮЩИХ МЕТОДОВ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ПОСТАНОВКА ЗАДАЧИ

ИССЛЕДОВАНИЯ

1.1 Тестирование программного обеспечения. Основные задачи и проблемы тестирования

Тестирование программного обеспечения - процесс исследования, испытания программного обеспечения (ПО) с целью получения информации о качестве продукта.

Сегодня тестирование является основным способом проверки правильности программного обеспечения. Как один из основных этапов процесса разработки ПО, тестирование характеризуется достаточно большим вкладом в суммарную трудоемкость разработки продукта. На тестирование, как правило, приходится от 30% до 50% от стоимости разработки программного обеспечения [1]. Тем не менее, программные сбои происходят довольно часто и их стоимость для мировой экономики измеряется в нескольких миллиардах долларов [2].

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

Важными составляющими вычислительного (управляющего) процесса являются надежность аппаратуры ЭВМ и надежность их ПО [9]. Однако надежность ПО существенно отличается от надежности аппаратуры ЭВМ.

Программы не изнашиваются, поломка программы не возможна. Надежность ПО - следствие исключительно ошибок проектирования, т.е. ошибок, внесенных в процессе разработки. Следует отметить, что если теория надежности аппаратуры ЭВМ уже достаточно хорошо развита [10], то теория надежности вычислительных процессов и теория надежности ПО еще не разработаны в достаточной степени [11].

Исследования последних десятилетий в области разработки ПО [12,13] сформировали набор методов, моделей, процессов и технологий, использование которых позволяет достичь заданных характеристик надежности и качества ПО. Постепенно из отдельных исследований сформировалась единая дисциплина, которая и легла в основу инженерии программного обеспечения [14, 15].

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

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

Тестирование необходимо проводить на протяжении всего процесса

разработки и сопровождения ПО. И в зависимости от метода разработки программного продукта применяются две стратегии тестирования нисходящая и восходящая [16]. При классической восходящей стратегии сначала разрабатываются и тестируются отдельные модули. Затем модули объединяются в подсистемы и проверяются связи между модулями.

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

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

Зачастую на практике применяется комбинаторная стратегия разработки, при которой модули тестируются отдельно, но система разрабатывается «сверху - вниз» [9].

Правильно организованный процесс тестирования позволяет достаточно

эффективно устранять основную массу ошибок в ПО. С другой стороны,

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

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

содержит ошибок. По словам Дейкстры, это означает, что «тестирование

12

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

Основными классическими задачами при тестировании ПО являются [19,20]:

1. Тестирование функциональности: проверка функциональности системы на соответствие требованиям;

2. Тестирование производительности: определение характеристик производительности, поиск «узких мест»;

3. Стрессовое тестирование системы при предельной нагрузке на различные ресурсы;

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

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

6. Анализ исходных текстов: просмотр экспертом и автоматический анализ;

7. Оценка удобства использования системы;

8. Тестирование способности модулей системы к взаимодействию, в том числе перераспределение нагрузки;

9. Тестирование надежности: проверка поведения при длительной непрерывной эксплуатации, при большой нагрузке.

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

При тестировании программного обеспечения могут использоваться два основных подхода: функциональный (метод «черного ящика») и структурный (метод «белого ящика») [21].

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

1.2 Методы тестирования

Тестируемая система (черкын ящек)

Сравнение н анализ

Ожидаемы результат

Рис. 1.1— Тестирование методом «черного ящика»

Метод «черного ящика» используется для проведения функционального тестирования на этапе тестирования системы в целом. Тестирование выполнятся в нескольких этапах:

• изучается спецификация программы или ее функциональное описание;

• выделяются основные последовательности действий пользователя при работе с системой;

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

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

• подготовленные данные и последовательности действий пользователя используются для тестирования программы;

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

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

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

гС

Тестовые данные

Тесты

I

Информация о тестируемой системе

Тестируемая система (белый ящик)

Ожидаемый результат

[ЫН >.

Сравнение и анализ

Результата выполиени

Рис. 1.2- Тестирование методом «белого ящика»

Чаще всего этот метод применяется на этапе разработки программного обеспечения. В этом случае реализуется следующая последовательность действий:

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

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

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

• исполнение всех написанных тестов, анализ результатов;

• изменение и дополнение тестов при каждом изменении исходного кода.

Запуск написанных тестов может осуществляться как вручную, так и

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

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

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

Так же, как и для структурного тестирования, для функционального тестирования существует понятие покрытия системы тестами. Однако, в случае функционального тестирования этот критерий трудно оценить количественно. Одним из вариантов оценки является, как и в модульном тестировании, процент исполненных операторов. Однако такой критерий не отражает всего множества параметров, являющихся предметом функционального тестирования. К ним относятся, например, зависимость вида интерфейса системы от роли пользователя в системе, взаиморасположение элементов управления и т.д [21].

1.3 Методы построения тестов

Важный этап в реализации процедуры тестирования - построение тестовых примеров. В этой области очень широко разрабатываются методы символического моделирования тестов. При этом вдоль каждого пути тестирования записываются условия прохождения программы по этому пути в виде некоторого предиката. Получаемая в итоге система предикатов решается методами математического программирования. Найденное таким образом решение определяет совокупность тестовых примеров обнаружения ошибки. Методы символического тестирования были предложены в работах [22-25]. Для решения систем неравенств, получаемых на путях тестирования, в работе [23] применяется метод проб и ошибок, а в работах [23,24] - методы линейного и нелинейного программирования. В работе [26] решается одна из сложнейших задач символического тестирования - определение функции программы. Функция программы рассматривается здесь как полная система функций путей тестирования программы.

Рассмотренные в работах [22-26] методы символического тестирования ориентированы главным образом на обнаружение ошибок. В работе [27]

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

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

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

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

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

Похожие диссертационные работы по специальности «Системный анализ, управление и обработка информации (по отраслям)», 05.13.01 шифр ВАК

Список литературы диссертационного исследования кандидат наук Киселев, Алексей Викторович, 2013 год

Библиографический список

1. Myers, G. J. The Art of Software Testing. [Текст]/ G. J. Myers. - Wiley, 2004.-234 p.

2. The economic impacts of inadéquate infrastructure for software testing. [Текст]// National Institute of Standards and Technology. - 2002, May. -309 p.

3. Ломакина Л.С., Уваров П.И., Волков В.Г. Надёжностный синтез контролепригодных систем [Текст]/ Л.С. Ломакина, П.И. Уваров, В.Г. Волков // Журнал «Системы управления и информационные технологии» / ИПУ РАН, ВГТУ, № 4 (30), М.-Воронеж, 2007. С. 36-41.

4. Ломакина Л.С., Уваров П.И. Структурный синтез контролепригодных систем [Текст]/ Л.С. Ломакина, П.И. Уваров // Журнал «Системы управления и информационные технологии» / ИПУ РАН, ВГТУ, № 3 (29), М.-Воронеж, 2007. С. 57-62.

5. Ломакина, Л.С., Уваров, П.И. Информационный синтез контролепригодных систем [Текст]/ Л.С. Ломакина, П.И. Уваров // Журнал «Системы управления и информационные технологии» / ИПУ РАН, ВГТУ, № 2 (28), М.-Воронеж, 2007. С. 53-57.

6. Ломакина Л.С., Малинин С.Н. Тестирование объектно-ориентированного программного обеспечения на основе моделирования конечными автоматами [Текст]/ Л.С. Ломакина, С.Н. Малинин // Журнал «Системы управления и информационные технологии» / ИПУ РАН, ВГТУ, № 3 (41), М.-Воронеж, 2010. С. 32-36.

7. Волков, В.Г. Системный подход к обеспечению качества программных средств [Текст]/ В. Г. Волков // Труды XII Международной научно-практической конференции «Системный анализ в проектировании

и управлении», 24-26 июня 2008 г. - Санкт-Петербург: СПб. ГПУ, 2008. -Ч. 3 - С. 9.

8. Ломакина Л.С., Волков В.Г. Синтез контролепригодных программ. Учебное пособие [Текст]/ Л.С. Ломакина, В.Г. Волков. - Нижний Новгород: НГТУ им. P.E. Алексеева, 2012. - 120 с.

9. Пархоменко, П.П. Диагностирование программного обеспечения [Текст]/ П.П. Пархоменко, П.А. Правильщиков // Автоматика и телемеханика. - 1980. -№4. - С. 117-141.

10. Пархоменко, П.П. Основы технической диагностики [Текст]/ П.П. Пархоменко, Е.С. Согомонян. - М.: Энергоатомиздат, 1981. - 320 с.

11. Волков, В.Г. Автоматизированная система контроля и обеспечения надежности программных средств [Текст]/ В.Г. Волков // Математическое моделирование. Оптимальное управление: Вестник Нижегородского университета им. Н.И. Лобачевского. - 2009. - № 5. -С. 173-175.

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

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

14. Соммервилл, И. Инженерия программного обеспечения [Текст] / И. Соммервилл. - М.: Вильяме, 2002. - 624 с.

15. Киселев, A.B. Тестирование как объект инженерии объектно-ориентированного программного обеспечения [Текст]/ A.B. Киселев, Л.С. Ломакина // Материалы XI Международной научно-технической конференции «Будущее технической науки», 18 мая 2012 г. - Н. Новгород: НГТУ, 2012. - С.27-28.

16. Канер, Сэм. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений: Пер. с англ. [Текст]/ Сэм Канер, Джек Фолк, Енг Кек Нгуен. - К.: ДиаСофт, 2001. -544 с.

17. Могилевский, В.Д. Основы теории систем. Учебное пособие. Часть 1. [Текст]/ В.Д. Могилевский. - М.: МИРЭА. - 1997.

18. Прангишвили, И.В., Системный подход и общесистемные

закономерности [Текст]/ И.В. Прангишвили. - М.: СИНТЕГ, 2000. - 528 с.

19. Липаев, В.В. Надежность программных средств [Текст]/ В.В. Липаев. - М.: СИНТЕГ, 1998. - 232 с.

20. Кулямин, В.В. Методы верификации программного обеспечения [Текст]/ В.В. Кулямин // Всероссийский конкурсный отбор обзорно-аналитических статей по приоритетному направлению "Информационно-телекоммуникационные системы", 2008. -117 с.

21. Хорев, П.Б. Технологии объектно-ориентированного программирования [Текст]/ П.Б. Хорев. - М.: Академия, 2004. - 448 с.

22. Ермаков, Г.В. Тестирование М1ХАЬ - программ с помощью символического исполнения [Текст]/ Г.В. Ермаков // Программирование. - 1988. - №5. - С. 12-18.

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

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

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

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

27. Пархоменко П.П. Диагностирование программного обеспечения [Текст]/ П.П. Пархоменко, П.А. Правильщиков // Автоматика и телемеханика. -1980. - №4. - С. 117-141.

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

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

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

31. Кларк, Э.М. Верификация моделей программ: Model Checking. Пер. с англ. [Текст]/ Кларк Э.М., Грамберг О., Пелед Д. - под ред. Р. Смелянского. - М.: МЦНМО, 2002. - 416 е.: ил. - ISBN 5-94057-05402.

32. Kaner, С. Software Engineering Metrics: What Do They Measure and How Do We Know? [Текст]/ С. Kaner, W.P. Bond // 10th International Software Metrics Symposium. - 2004.

33. Ammann, P. Introduction to software testing [Текст]/ P. Ammann, J.

Offutt // NY: Cambridge University Press, 2008. - 344 p.

34. Towhidnejad, M. Types of Software Testing Coverage [Электронный ресурс]: http://faculty.erau.edu/towhid/coverage.html.

35. Kaner, С. Software Negligence and Testing Coverage [Электронный ресурс]: http://www.kaner.com/coverage.htm.

36. Дастин, Э. Автоматизированное тестирование программного обеспечения [Текст] / Э. Дастин, Дж. Решка, Дж. Пол. - М.: Лори, 2003.

37. Воас, Д. Чертова дюжина проблем программной инженерии [Текст] / Д. Воас // Открытые системы, 2007. - №7. - С. 30 - 35.

38. Винниченко, И.В. Автоматизация процессов тестирования. СПб.: Питер, 2005.

39. Орлик, С. Программная инженерия. Тестирование программного обеспечения [Текст] / С. Орлик. - М., 2006. - 16 с.

40. Hamlet, R. Random Testing [Текст] / R. Hamlet // Encyclopedia of Software Engineering (1 ed.). - John Wiley and Sons. - 1994. - P. 970-978. - ISBN 0471540021.

41. Offutt J. Generating test data from state-based specifications [Текст]/ J. Offutt, S. Liu, A. Abdurazik, P. Ammann // The Journal of Software Testing, Verification and Reliability. - 2003. - №13. - P. 25 - 53.

42. McMinn, P. Search-based software test data generation: A survey. [Текст]/ P. McMinn // Software Testing, Verification and Reliability. - 2004. -№14.-P. 105-156.

43. Corina S. Pasareanu, Willem Visser. A survey of new trends in symbolic execution for software testing and analysis. [Текст] // Int J Softw Tools Technol Transfer. - 2009. - №11. - P. 339-353.

44. Киселев, A.B. Метод интеграционного тестирования объектно-ориентированной программы [Текст] / А.В. Киселев // Журнал «Научно-технический вестник Поволжья», КГУ, Казань, № 5, 2013. - С. 195-198.

45. Киселев, А.В. Модели и методы структурного тестирования взаимодействия классов в объектно-ориентированном программном обеспечении [Текст] / Л.С. Ломакина, А.В. Киселев // Журнал «Системы

управления и информационные технологии» / ИПУ РАН, ВГТУ, № 3.1 (53), М.-Воронеж, 2013. - С. 155-159.

46. Киселев, A.B. Метод тестирования взаимодействия классов в объектно-ориентированном программном обеспечении [Текст]/ A.B. Киселев // Материалы Международной научно-технической конференции «Информационные системы и технологии (ИСТ-2011)», 22 апреля 2011 г. -Н.Новгород: НГТУ, 2011. - С. 316.

47. Киселев, A.B. Системный подход при тестировании объектно-ориентированного программного обеспечения [Текст]/Л.С. Ломакина, A.B. Киселев // Труды XVI Международной научно-практической конференции «Системный анализ в проектировании и управлении», 27-29 июня 2012 г. -Санкт-Петербург: СПб. ГПУ, 2012. - С. 128-129.

48. Киселев, A.B. Метод тестирования классов объектно-ориентированного программного обеспечения [Текст]/ A.B. Киселев // Журнал «Вестник Нижегородского государственного университета». -Нижний Новгород - 2012. - №2. - С. 210-215.

49. Киселев, A.B. Метод тестирования классов в объектно-ориентированном программном обеспечении [Текст]/ A.B. Киселев // Материалы Международной научно-технической конференции «Информационные системы и технологии (ИСТ-2010)», 23 апреля 2010 г. -Н.Новгород: НГТУ, 2010. - С. 300.

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

51. Briand, L.C. Towards automated support for deriving test data from

UML statecharts. [Текст]/ L.C. Briand, J. Cui, Y. Labiche // Proceedings of the International Conference on the Unified Modeling Languages and Applications. -2003.-P. 249-264.

52. Briand, L.C., Labiche, Y., Wang, Y.: Using simulation to empirically investigate test coverage criteria based on statechart. [Текст] // Proceedings of the 26th International Conference on Software Engineering, IEEE Computer Society. - 2004. - P. 86-95.

53. Поликарпова, H. Автоматное программирование [Текст] / H. Поликарпова, А. Шалыто. - Спб.: Питер, 2009. - 176 с.

54. Hartmann, J. Uml-based integration testing. [Текст]/ J. Hartmann, C. Imoberdorf, M. Meisinger // Proceedings of the 2000 International Symposium on Software Testing and Analysis, ACM Press. - 2000. P. 60-70.

55. Fraikin, F., Leonhardt, T. SeDiTeC - testing based on sequence

diagrams. [Текст] // Proceedings of the International Conference on Automated Software Engineering, IEEE Computer Society. - 2002. - P. 261-266.

56. Andrews, A., France, R., Ghosh, S., Craig, G. Test adequacy criteria for UML design models. [Текст] // Software Testing, Verification and Reliability. -2003.-P. 95-127.

57. Киселев, A.C. Тестирование объектно-ориентированного программного обеспечения [Текст]/ А.В. Киселев // Материалы 15-й Международной открытой научной конференции «Современные проблемы информатизации». - Воронеж: ВГТУ, 2010. - С. 426-429.

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

59. Grogono P. A Graph Model for Object Oriented Programming.

[Текст]/ Peter Grogono, Mark Gargul // SIGPLAN Notives. - 1994. - № 29(7). -P. 21-28.

60. Harrold M. Performing data flow testing on classes. [Текст]/ M. Harrold, G. Rothermel // In 2nd ACM-SIGSOFT Symposium on the foundations of software engineering. - 1994. - P. 154-163.

61. D. Kung, J. Gao, P. Hsia, Y. Toyoshima, C. Chen, Y.-S. Kim, and Y.-K. Song. Developing and object-oriented software testing and maintenance environment. [Текст] // Communications of the ACM. - 1995. - № 38(10). - P 75-86.

62. Souter, A.L., Pollock, L.L. The construction of contextual def-use associations for object-oriented systems. [Текст] // IEEE Transaction on Software Engineering. - 2003. - № 29(11). - P. 1005-1018.

63. Harrold, M.J., Soffa, M.L. Efficient computation of interprocedural definition-use chains. [Текст] // ACM Transactions on Programming Languages and Systems. -1994. - № 16(2). - P. 175-204.

64. P. Tonella. Evolutionary testing of classes. [Текст] // In Proceedings of the International Symposium on Software Testing and Analysis (ISSTA 2000). -2004.-P. 119-128.

65. S. Wappler and F. Lammermann. Using evolutionary algorithms for the unit testing of object-oriented software. [Текст] // In Proceedings of the 2005 conference on Genetic and evolutionary computation (GECCO 2005). -2005.-P. 1053-1060.

66. Y. Cheon, M. Y. Kim, and A. Perumandla. A Complete Automation of Unit Testing for Java Programs. [Текст] // Proceedings of the 2005 International Conference on Software Engineering Research and Practice (SERP '05). - 2005. -P. 290-295.

67. Y. Cheon and M. Kim. A Fitness Function for Modular Evolutionary Testing of Object-Oriented Programs. [Текст] // In Genetic and Evolutionary Computation Conference. - 2006. - P. 1952-1954.

68. Ahmed S. Ghiduk. Automatic Generation of Object-Oriented Tests with a Multistage-Based Genetic Algorithm. [Текст] // Journal of Computers. - 2010. -№ 10.-P. 1560-1569.

69. Лафоре, P. Объектно-ориентированное программирование в С++. Классика Computer Science. [Текст] / P. Лафоре. - СПб.: Питер, 2003. - 928 с.

70. Бузюков, Л.Б. Современные методы программирования на языках С и С++: учебное пособие. / Л.Б. Бузюков, О.Б. Петрова. - СПб.: Линк, 2008.-288 с.

71. Карпов Ю.Г. Теория и технология программирования. Основы построения трансляторов. - СПб.: Б ВХ-Петер бур г, 2005. - 272 с.

72. Белоусов А.И., Ткачев С.Б. Дискретная математика: Учеб. для вузов. - М.: МГТУ имени Н.Э. Баумана, 2004. - 744 с.

73. Ахо А. Компиляторы: принципы, технологии и инструментарий, 2-е изд.: пер. с англ [Текст]/ А. Ахо, М. Лам, Р. Сети, Д. Ульман. - М.: ООО "И.Д. Вильяме", 2011.-1184 с.

74. G. Antoniol, М. Di Penta, G. Masone, and U. Villano. Compiler hacking for source code analysis. [Текст] // Software Quality Journal -2004. - № 12(4). - P. 383-406.

75. RapidXML [Электронный ресурс]: http://rapidxml.sourceforge.net/

76. M. Hennessy, B. A. Malloy, J. F. Power. gccXfront: exploiting gcc as a front end for program comprehension tools via XML/XSLT. [Текст] // Proceedings of the International Workshop in Program Comprehension. - 2003. -P. 298-299.

77. M. L. Collard, H. H. Kagdi, and J. I. Maletic. An XML-based lightweight С++ fact extractor. [Текст] // Proceedings of the International Workshop in Program Comprehension. - 2003. - P. 134-143.

78. GCCXML [Электронный ресурс]: http://www.accxml.ora.

79. Битюцкий, В.П. Основы дискретной математики. Часть 1.: Учебное пособие по дисциплине «Дискретная математика» [Текст] / В.П. Битюцкий, С.С. Соколов. - Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2005. - 96 с. -ISBN 5-321-00373-4.

80. Левитин, А. Алгоритмы: введение в разработку и анализ. Пер. с англ. [Текст]/ А. Левитин. - М.: «Вильяме», 2006. - 576 с. - ISBN 5-84590987-2 (рус.).

81. Карпушинский, A.M. Анализ неявного потока управления и его влияние на выбор структурных критериев тестирования объектно-ориентированных программ. [Текст]/ A.M. Карпушинский // Сборник трудов конференции молодых ученых. - 2009. - №4. - С. 157-162.

82. Corina S. Pasareanu, Willem Visser. A survey of new trends in symbolic execution for software testing and analysis. [Текст]/ Int J Softw Tools Technol Transfer. - 2009. - №11. -P. 339-353.

83. Лаврищева, E.M. Методы и средства инженерии программного обеспечения. - Учебное пособие [Текст]/ Е.М. Лаврищева, В.А. Петрухин. -М, 2006.-304с.

84. Zhang, J. Path-oriented test data generation using symbolic execution and constraint solving techniques [Текст] / J. Zhang, C. Xu, X.Wang // Proceedings of the Second International Conference on Software Engineering and Formal Methods, 2004.

85. Тан, К.Ш. Символьный С++: Введение в компьютерную алгебру сиспользованием объектно-ориентированного программирования: пер. со 2-го англ. изд. [Текст]/ К.Ш. Тан, В.-Х. Стиб, Й. Харди - М.: Мир, 2001. - 622 с. ил.-ISBN 5-03-003355-6.

86. Вигура, А.Н. Автоматизация тестирования программного обеспечения наоснове символьного выполнения [Текст] / А.Н. Вигура // Межвузовскийсборник научных трудов IV всероссийской научно-технической конференции «Прикладная информатика и математическое моделирование», 19-20 мая 2010 г. - Москва: МГУП, 2010. - С. 121-127.

87. Гуц, А.К. Математическая логика и теория алгоритмов: Учебное пособие. [Текст] / А.К. Гуц. - Омск: изд-во Наследие, 2003. - 108 с.

88. Пономарев, В.Ф. Математическая логика. Учебное пособие. - 2-е изд., испр. и доп. [Текст] / В.Ф. Пономарев. - Калиниград: изд-во КГТУ, 2005. - 201 с.

89. Кулямин, В.В. Тестирование на основе моделей. [Электронный ресурс]: http://panda.ispras.ru/~kuliamin/lectures-rnbt/.

90. Harrold, М. Incremental Testing of Object-oriented Class Structures [Текст]/ M. Harrold, J. McGregor, K. Fitzpatrich // In Proceedings of the 14th International Conference on Software Engineering, 1992. - P. 68-80.

91. Sinha S. Criteria for testing exception-handling constructs in Java programs [Текст]/ S. Sinha, M. Harrold // In Proceedings of the International Conference on Software Maintenance, 1999. - P. 265-274.

92. David L. Heine and Monica S. Lam. A Practical Flow-Sensitive and Context-Sensitive С and С++ Memory Leak Detector [Текст] // In Proceedings of the Conference on Programming Language Design and Implementation, 2003. -P. 168-181.

93. Coen-Porisini, A. Using symbolic execution for verifying safety critical systems [Текст]/ A. Coen-Porisini, G. Denaro, C. Ghezzi, M. Pezzpe // In Proceedings of the the 8th European software engineering conference held jointly with 9th ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE01), 2001. - P. 142-151.

94. SICStus Prolog [Электронный ресурс]: http://www.sics.se/sicstus.

95. Owre, S. Formal verification for fault-tolerant architectures: Prolegomena to the design of PVS [Текст] / S. Owre, J. Rushby, N. Shankar, F. von Henke // IEEE Transactions on Software Engineering, №21(2), 1995. - P. 107125.

96. Rushby, J. Subtypes for specifications: Predicate subtyping in PVS. [Текст]/ J. Rushby, S. Owre, N. Shankar // IEEE Transactions on Software Engineering, №24(9), 1998. - P. 709-720.

97. PVS Specification and Verification System [Электронный ресурс]: http://pvs.csl.sri.com.

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