WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

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

Бирюков Сергей Вячеславович

МЕТОД И СРЕДСТВА АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

ИНТЕРФЕЙСА ПРОГРАММИРОВАНИЯ ПРИЛОЖЕНИЯ

Специальность: 05.13.11 – Математическое и программное обеспечение

вычислительных машин, комплексов и компьютерных сетей

Автореферат

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

Таганрог - 2011

Работа выполнена на кафедре Математического обеспечения и применения ЭВМ Технологического института ФГАОУ ВПО «Южный федеральный университет» в г.Таганроге.

НАУЧНЫЙ РУКОВОДИТЕЛЬ: доктор технических наук, профессор Кравченко Павел Павлович ОФИЦИАЛЬНЫЕ ОППОНЕНТЫ: доктор технических наук, профессор Бабенко Людмила Климентьевна кандидат технических наук, доцент Гранков Михаил Васильевич ВЕДУЩАЯ ОРГАНИЗАЦИЯ: Федеральное государственное научное учреждение «Научно-исследовательский институт «Специализированные вычислительные устройства защиты и автоматика», г.Ростов-на-Дону

Защита состоится 9 декабря 2011 г. в 1420 на заседании диссертационного совета Д 212.208.24 при Южном федеральном университете по адресу: г. Таганрог, ул.

Чехова, 2, корп. «И», комн. 347.

С диссертацией можно ознакомиться в зональной научной библиотеке Южного федерального университета по адресу: г. Ростов-на-Дону, ул. Пушкинская, 148, автореферат размещен в сети Интернет по адресу: http://www.sfedu.ru Автореферат разослан « » ноября 2011 г.

Просим Вас прислать отзыв, заверенный печатью учреждения, по адресу: 347928, г. Таганрог, Ростовская область, ГСП-17А, пер. Некрасовский, 44, Технологический институт Южного федерального университета в г. Таганроге, Учному секретарю диссертационного совета Д 212.208.24 Кухаренко Анатолию Павловичу.

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

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

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





Под интерфейсом программирования приложения (Application Programming Interface, API) понимается набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Детали реализации API при этом, как правило, скрыты. Примерами API могут служить библиотеки функций встроенные средства (COM DLL,.NET assembly), web-сервисы, программирования приложений (VBA в MS Office).

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

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

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

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

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

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

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





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

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

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

4) Разработка алгоритма обхода модели для генерации тестов.

5) Разработка алгоритма оптимизации тестов.

6) Разработка совокупности программных средств, объединенных в универсальную среду тестирования программных интерфейсов 7) Выполнение экспериментальных исследований и апробации разработанного метода.

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

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

Научная новизна результатов диссертационной работы определяется тем, что в ней:

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

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

4) Впервые разработан алгоритм построения унифицированной модели, отличающийся наличием процедур разбора спецификации интерфейса, заданной в терминах IDL, UML или.NET-библиотеки.

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

Результаты, выдвигаемые на защиту:

1) Метод автоматизации тестирования интерфейса программирования приложения на основе универсальной среды APITest.

2) Алгоритм автоматического построения унифицированной модели интерфейса программирования на основе разбора спецификации.

3) Алгоритм обхода унифицированной модели для генерации тестов с параметрами управления степенью тестового покрытия модели.

4) Алгоритм оптимизации тестов на основе статического анализа.

5) Универсальная среда тестирования программных интерфейсов APITest.

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

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

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

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

Внедрение результатов работы. Результаты работы использованы при выполнении х/д работы №12405-8/533 «Исследования и разработка методов и средств высокоточного определения местоположения маневренных объектов по стереоскопическим изображениям местности и топогеодезической информации»

(шифр «Аксиома-ЮФУ») и в учебном процессе по курсу «Метрология и качество программного обеспечения».

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

1) II Международной научно-практической Интернет-конференции «Инновационные подходы к применению информационных технологий в профессиональной деятельности», Белгород, 2010.

2) VII Всероссийской научно-практической конференции студентов, аспирантов и молодых ученых "Молодежь и современные информационные технологии", Томск, 2009.

3) VII Всероссийской конференции студентов, аспирантов и молодых ученых «Технологии Microsoft в теории и практике программирования», 4) II Ежегодной Всероссийской научно-практической конференции с международным участием «Перспективы развития информационных технологий». Новосибирск, 2010.

5) Всероссийской научно-технической конференции аспирантов, студентов и молодых ученых "Информатика и вычислительная техника - 2010".

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

Публикации. По результатам диссертации опубликовано 12 печатных работах, среди них 7 статей (2 статьи в журналах перечня ВАК) и 1 свидетельство об официальной регистрации программы для ЭВМ №2010617638 «Программа автоматизации функционального тестирования интерфейсов программирования приложений APITest».

Структура и объем диссертации. Материал основной части диссертационной работы изложен на 149 страницах машинописного текста.

Диссертация состоит из введения, 3 разделов, заключения, списка литературы из 102 источников, содержит 49 рисунков и приложения на 17 страницах.

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

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

В первой главе проведен анализ стратегий построения наборов тестов и подходов к автоматизации тестирования интерфейса программирования приложения.

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

Рассматриваются две основные парадигмы – структурное и поведенческое тестирование. Определяется применимость этих стратегий для тестирования программных интерфейсов.

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

Проанализированы существующие подходы к автоматизации тестирования интерфейсов программирования приложений. Среди них выделены такие направления, как автоматизированное модульное тестирование, специализированные программы тестирования – тестовые драйверы и генераторы, генераторы шаблонов интерфейсных функций, технологии UniTesK и AsmL. Использование инструментария модульного тестирования (например, семейство xUnit) позволяет автоматизировать лишь процесс выполнения тестовых сценариев. Остальные шаги цикла тестирования API необходимо выполнять вручную. Генераторы шаблонов интерфейсных функций, используемые самостоятельно или в совокупности с инструментарием модульного тестирования, избавляют от части рутинной ручной работы по написанию кода вызовов интерфейсных функций. Однако они не решают ключевых проблем при тестировании API: генерации оракулов и последовательностей вызовов методов, выбора комбинаций значений входных параметров, эффективного покрытия тестируемого кода. Использование тестовых драйверов и тестовых генераторов не всегда целесообразно вследствие высокой трудоемкости сопровождения и сложности самих программ тестирования.

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

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

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

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

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

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

Вторая глава посвящена описанию разработанного метода и алгоритмов автоматизации тестирования интерфейса программирования приложения.

Определена совокупность действий метода. Она представлена в виде UMLдиаграммы последовательности (см. рис 1).

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

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

Спецификация API Тестируемое приложение Построитель Обходчик Оптимизатор Генератор Специфика языка Оболочка выполнения ::Тестировщик 1: Доступ к спецификации API 8: Добавление функциональных требований Рис. 1. Диаграмма последовательности метода автоматизации тестирования API Модуль построения модели API (построитель) производит автоматический разбор спецификации и построение унифицированной модели интерфейса.

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

программирования, которая может быть построена путем разбора спецификаций в различных нотациях: IDL, UML,.NET-сборок. Унифицированная модель интерфейса представляет собой ориентированный граф. В нем выделяются вершины двух типов – объекты интерфейса и действия над ними (интерфейсные методы). Вершины первого типа соответствуют объектам, причем выделяются сложные и простые объекты. Простые объекты – это элементарные типы данных среды использования API (языка программирования). Сложные объекты задекларированы непосредственно в интерфейсе. Их создание, удаление и операции над ними осуществляются посредством интерфейсных методов.

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

Некоторые атрибуты доступны только для чтения данных, их модификация скрыта внутри объекта. Методы выполняют манипуляции над объектом в зависимости от набора входных параметров и позволяют получить результат (возможно пустой) – потенциально полезные стороннему пользователю API данные. Пример графа модели представлен на рисунке 2.

Рис. 2. Пример графа унифицированной модели API Дуги графа всегда соединяют вершины разных типов. Таким образом, в графе присутствуют только дуги «объект-действие» и «действие-объект» При этом направление дуги показывает направление потока данных при выполнении действия.

Разработан алгоритм построения унифицированной модели на основе автоматического разбора спецификации (см. рис. 3).

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

Это связано с правилами построения модели, которые регламентируют количество сложных объектов с одинаковым именем в графе. Подпрограмма возвращает указатель на добавленную или найденную вершину. Далее действие классифицируется как атрибут или метод. Для атрибутов, доступных для чтения в граф добавляется объект, соответствующий типу значения атрибута. Для атрибутов, доступных на запись, в качестве типа значения атрибута добавляется псевдо-объект (Null). В этом случае записываемый объект добавляется как параметр атрибута. Для методов перебираются и добавляются в граф все их параметры. На заключительном этапе добавленные вершины связываются дугами соответствующих типов. Помимо видимых после построения ребер в граф также добавляются обратные им ребра. Это в дальнейшем позволяет быстро перемещаться по графу, вычисляя следующую вершину за время О(1). Общее время работы алгоритма построения модели оценивается как О(N2MK), где N – количество объектов интерфейса, M – количество действий в каждом объекте, K – количество параметров в каждом действии-методе.

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

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

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

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

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

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

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

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

Сложность алгоритма обхода модели зависит от установок флагов «порождающие действия» и «значения параметров». Минимальная сложность, равная О(N), достигается при значениях «порождающие действия» = «выбрать любое», «значения параметров» = «выбрать любые». Максимальная сложность, равная О(NMk) достигается при значениях флагов «перебрать все». Здесь N – количество вершин в графе, k – количество параметров в действии, M – количество путей вычисления параметра.

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

Лексемы удобны для трансляции в конструкции языка программирования. При трансляции используется техника «скользящего окна» с размером 3 по трассе теста.

Сформулирована и доказана теорема 1 (о размере скользящего окна): для трансляции теста в виде лексем, полученного в результате обхода модели, в код на языке программирования достаточно скользящего окна размером 3 лексемы.

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

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

Попутно с этим, алгоритм извлекает из модели и транслирует контрактные спецификации.

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

Пусть S – набор тестов. S = {T1, T2, …, Tn}, где Ti – отдельный тест. Каждый Ti состоит из упорядоченной последовательности лексем tij, Ti = (ti1, ti2, …, tim).

Тогда существует такой (возможно, пустой) набор S’ = {T1’, T2’, …, Tk’}, такой, что каждый тест Ti’ входит в некоторый Tj в качестве «подтеста», то есть Ti’ Tj.

Все Ti’ необходимо удалить из исходного тестового набора. При этом степень тестового покрытия не уменьшается. Оптимизированный тестовый набор S* определяется как S* = S – S’. Алгоритм состоит из двух основных этапов – заполнение хеш-таблицы (препроцессинг) и последовательный поиск в хештаблице каждого из тестов. Здесь хеш-функция используется для свертки данных (префиксов тестов). Чтобы не вносить дополнительную сложность во временную оценку эффективности алгоритма, хеш-функция должна удовлетворять следующим условиям вычислимости:

1) Функция H(t1, t2, …, tm) вычислима за O(m), где m – количество 2) Функция H(t1, t2, …, ti) такая, что То есть, значение функции для префикса длины i можно вычислить, уже зная значение функции для префикса длины i-1 и вычислив ключ H(ti). Здесь – некоторая операция.

3) Операция выполняется за время О(1) относительно m.

Временная сложность алгоритма оптимизации оценивается как О(NMlogNM), где N – число тестов, M – количество лексем в тесте.

Сформулирована и доказана теорема 2: Если хеш-функция удовлетворяет условиям вычислимости, то она не изменяет оценку временной сложности О() алгоритма оптимизации тестов.

В работе была предложена хеш-функция вида:

где x y = (Px + y) mod 2b, P – большое простое число, P 2b, b – число разрядов ключа. Операция не является коммутативной и ассоциативной.

Сформулирована и доказана теорема 3: Хеш-функция вида (1) удовлетворяет условиям вычислимости.

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

В третьей главе описывается структура и программная реализация метода автоматизации тестирования интерфейса программирования приложения, а также результаты экспериментальных исследований и практической апробации разработанного метода. Метод автоматизации тестирования реализован в виде универсальной среды тестирования программных интерфейсов APITest. APITest состоит из независимых программных модулей (подсистем), объединенных единым графическим интерфейсом пользователя. Структурная схема программной реализации представлена на рисунке 5.

Рис. 5. Структурная схема среды тестирования программных интерфейсов APITest Программная система APITest реализует последовательность действий метода автоматизации тестирования API, представленную на рисунке 1.

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

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

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

Схема эксперимента представлена на рисунке 6.

Рис. 6. Схема эксперимента при проведении исследований метода автоматизации APITest использует спецификацию интерфейса программирования в виде.NET assembly для построения унифицированной модели и последующей генерации исходного кода набора тестов. Набор тестов может быть скомпилирован и выполнен в среде NUnit. По результатам выполнения тестов будет сформирован журнал с вердиктами по каждому тесту. Выполнение тестов в NUnit может быть совмещено с использованием утилиты NCover, что позволит получить данные о степени покрытия исходного кода интерфейсных функций при выполнении тестов.

Для проведения экспериментальных исследований по разработанному методу были выбраны следующие направления:

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

- анализ влияния использования значений по умолчанию на качество набора тестов;

- анализ эффективности набора тестов;

- анализ эффективности оптимизации набора тестов;

- анализ временных ресурсозатрат на получение набора тестов.

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

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

- Количество обнаруженных при прогоне тестового набора дефектов.

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

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

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

Сравнительный анализ временных ресурсозатрат на получение тестовых наборов показал, что предложенный метод позволяет в 1,5 - 1,7 раз сократить временные затраты по сравнению с другими модельными подходами за счет автоматического построения модели на основе спецификации API и генерации тестов с трансляцией в код.

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

Внедрение результатов диссертации в рамках НИР "Аксиома-ЮФУ" для автоматизации функционального тестирования программных библиотек макета корреляционно-экстремальной системы навигации позволило сократить трудоемкость тестирования на 65-75% за счет автоматизации этапов построения модели, разработки и кодирования тестов, что подтверждается соответствующим актом.

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

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

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

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

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

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

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

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

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

5) Разработан алгоритм построения унифицированной модели, отличающийся наличием процедур разбора спецификации интерфейса, заданной в терминах IDL, UML или метаданных.NET-библиотеки.

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

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

8) Разработаны программные средства универсальной среды тестирования программных интерфейсов APITest, содержащие модули разбора спецификаций API, построения модели API, обхода модели, генерации тестов, оптимизации тестов.

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

Публикации в изданиях, входящих в перечень рекомендованных ВАК:

1. Бирюков С.В. Разработка метода автоматизации тестирования систем с интерфейсом программирования // Известия ЮФУ. Технические науки.

Тематический выпуск «Перспективные системы и задачи управления». – Таганрог: Изд-во ТТИ ЮФУ, 2010. №3 (104) С.222-227.

2. Бирюков С.В. Автоматизация функционального тестирования webсервисов // Известия ЮФУ. Технические науки. Тематический выпуск "Компьютерные и информационные технологии в науке, инженерии и управлении". - Таганрог: Изд-во ТТИ ЮФУ, 2008, № 2. С.175-178.

Другие публикации:

3. Бирюков С.В. Анализ стратегий тестирования программного обеспечения // Известия ЮФУ. Технические науки. Специальный выпуск. Материалы LIII научно-технической конференции профессорско-преподавательского состава, аспирантов и сотрудников ТТИ ЮФУ. - Таганрог: Изд-во ТТИ ЮФУ, 2008. № 1 (78). С.59-63.

Бирюков С.В. Анализ методов построения тестовых сценариев для обеспечения качества программных средств // Сборник трудов всероссийской научной школы-семинара молодых ученых, аспирантов и скантехнологии и электронные библиотеки". - Таганрог: Изд-во ТТИ ЮФУ, 2008. С. 131-136.

5. Бирюков С.В. Об использовании моделей при автоматизации построения тестовых сценариев для тестирования интерфейса программирования приложения. Молодежь и современные информационные технологии // Сборник трудов VII Всероссийской НПК студентов, аспирантов и молодых ученых "Молодежь и современные информационные технологии". Томск, 25-27 февраля 2009г., ч.2. Томск: Изд-во СПБ Графикс. С.135-136.

6. Бирюков С.В. Метод автоматизации тестирования интерфейсов динамических библиотек и его реализация в программной системе APITest // Технологии Microsoft в теории и практике программирования:

труды VII-ой Всероссийской конференции студентов, аспирантов и молодых ученых. Южный регион. Таганрог, 19-20 марта 2010г. – Таганрог: Изд-во ТТИ ЮФУ, 2010. C.5-8.

7. Бирюков С.В. Подход к автоматизации тестирования систем с интерфейсом программирования // Сборник материалов II Ежегодной Всероссийской научно-практической конференции с международным участием «Перспективы развития информационных технологий» / Под общ. ред. С.С.Чернова. - Новосибирск: Изд-во "СИБПРИНТ", 2010. С.

8. Бирюков С.В. Программная реализация метода автоматизации функционального тестирования интерфейса программирования приложения // Сборник трудов второй Международной научнопрактической Интернет-конференции Белгородского филиала НАЧОУ ВПО СГА «Инновационные подходы к применению информационных технологий в профессиональной деятельности». - Белгород: Изд-во ГиК.

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

Ульяновск, 25-26 мая 2010г. - Ульяновск: Изд-во УлГТУ. С.46-49.

10. Бирюков С.В. Программа автоматизации функционального тестирования интерфейса программирования приложения APITest // Свидетельство о государственной регистрации программы для ЭВМ №2010617638 от Типография ТТИ ЮФУ, ГСП 17А, Таганрог, ул. Энгельса, 1. Заказ №. Тираж 120 экз.



 
Похожие работы:

«Домбровский Дмитрий Владимирович ДИНАМИЧЕСКИЕ МОДЕЛИ УПРАВЛЕНИЯ ИНВЕСТИЦИОННЫМ ПОРТФЕЛЕМ НА НЕСТАЦИОНАРНОМ ФИНАНСОВОМ РЫНКЕ С УЧЕТОМ ТРАНЗАКЦИОННЫХ ИЗДЕРЖЕК И ОГРАНИЧЕНИЙ 05.13.18 – Математическое моделирование, численные методы и комплексы программ Автореферат диссертации на соискание ученой степени кандидата физико-математических наук Томск – 2008 2 Работа выполнена на кафедре прикладной математики факультета прикладной математики и кибернетики ГОУ ВПО Томский...»

«РАТУШНЯК Олег Александрович Методы сжатия данных без потерь с помощью сортировки параллельных блоков 05.13.11 – математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук Красноярск — 2002 Работа выполнена в Институте систем информатики им.А.П.Ершова Сибирского отделения Российской академии наук Научный руководитель : доктор физико-математических наук,...»

«ШИРЯЕВА Елена Владимировна МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ ПЕРЕНОСА ПРИМЕСЕЙ ЭЛЕКТРИЧЕСКИМ ПОЛЕМ В ПЛОСКИХ МИКРОКАНАЛАХ 05.13.18 математическое моделирование, численные методы и комплексы программ АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук Ростов-на-Дону 2010 Работа выполнена на кафедре вычислительной математики и математической физики факультета математики, механики и компьютерных наук Южного федерального университета, г....»

«МАЗУРОВ АЛЕКСАНДР ЮРЬЕВИЧ ДИССИПАТИВНОСТЬ СТОХАСТИЧЕСКИХ СИСТЕМ С ФУНКЦИЕЙ НАКОПЛЕНИЯ, ЧУВСТВИТЕЛЬНОЙ К РИСКАМ 05.13.01 — Системный анализ, управление и обработка информации АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук Нижний Новгород — 2009 Работа выполнена в Арзамасском политехническом институте (филиале) Нижегородского государственного технического университета им. Р. Е. Алексеева. Научный руководитель : доктор...»

«Черноусова Елена Олеговна БЕСПЕРЕБОРНЫЕ МЕТОДЫ КРОСС-ВАЛИДАЦИИ ДЛЯ ОЦЕНИВАНИЯ ОБОБЩАЮЩЕЙ СПОСОБНОСТИ РЕГРЕССИОННЫХ МОДЕЛЕЙ Специальность 05.13.17 – Теоретические основы информатики АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук Москва, 2013 Работа выполнена на кафедре Интеллектуальные системы Федерального государственного автономного образовательного учреждения высшего профессионального образования Московский физико-технический...»

«КУЗЬМИНА Екатерина Александровна МАТЕМАТИЧЕСКИЕ МОДЕЛИ И ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕДУРЫ АНАЛИЗА ИНТЕРВАЛЬНЫХ СИСТЕМ С ИЗМЕНЯЮЩЕЙСЯ КОНФИГУРАЦИЕЙ Специальность: 05.13.01 — Системный анализ, управление и обработка информации (технические системы) АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук Санкт-Петербург 2009 2 Работа выполнена в Санкт-Петербургском институте информатики и автоматизации РАН Научный руководитель : доктор технических наук, профессор...»

«Тютин Борис Викторович МЕТОДЫ АВТОМАТИЗАЦИИ РАСПРЕДЕЛЁННОГО ТЕСТИРОВАНИЯ РЕАКТИВНЫХ СИСТЕМ Специальность 05.13.11 — Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук Санкт-Петербург - 2013 Работа выполнена в Федеральном государственном бюджетном образовательном учреждении высшего профессионального образования Санкт-Петербургский государственный...»

«Дорофеева Маргарита Юрьевна ИССЛЕДОВАНИЕ И РАЗРАБОТКА КОНЕЧНО-АВТОМАТНЫХ МЕТОДОВ СИНТЕЗА ПРОВЕРЯЮЩИХ ТЕСТОВ ДЛЯ УПРАВЛЯЮЩИХ СИСТЕМ 05.13.01 – Системный анализ, управление и обработка информации (в отраслях информатики, вычислительной техники и автоматизации) Автореферат диссертации на соискание учёной степени кандидата технических наук Томск – 2007 Работа выполнена на кафедре информационных технологий в исследовании дискретных структур ГОУ ВПО Томский государственный...»

«Скворцова Мария Ивановна МАТЕМАТИЧЕСКИЕ МОДЕЛИ И АЛГОРИТМЫ В ИССЛЕДОВАНИЯХ СВЯЗИ МЕЖДУ СТРУКТУРОЙ И СВОЙСТВАМИ ОРГАНИЧЕСКИХ СОЕДИНЕНИЙ 05.13.18 – математическое моделирование, численные методы и комплексы программ АВТОРЕФЕРАТ диссертации на соискание ученой степени доктора физико-математических наук Москва – 2007 1 Работа выполнена в Московской государственной академии тонкой химической технологии (МИТХТ) им. М. В. Ломоносова ОФИЦИАЛЬНЫЕ ОППОНЕНТЫ: доктор...»

«ГОДОВНИКОВ Евгений Александрович Автоматизированная система исследования алгоритмов идентификации и прогнозирования аварийных состояний в импульсных системах преобразования энергии. Специальность 05.13.06 – Автоматизация и управление технологическими процессами и производствами (промышленность) АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук Ханты-Мансийск – 2011 2 Работа выполнена в Федеральном государственном бюджетном образовательном...»

«Давыдов Александр Александрович Численное моделирование задач газовой динамики на гибридных вычислительных системах 05.13.18 – Математическое моделирование, численные методы и комплексы программ АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук Москва – 2012 Работа выполнена в Институте прикладной математики имени М.В. Келдыша Российской академии наук Научный руководитель : доктор физико-математических наук, Луцкий Александр Евгеньевич...»

«Лавров Андрей Александрович Метод и алгоритмы мониторинга вычислительных сетей на основе совместного анализа временных и функциональных характеристик стека протоколов TCP/IP 05.13.11 – Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук Санкт-Петербург – 2013 Работа выполнена в Санкт-Петербургском государственном Электротехническом университете ЛЭТИ им...»

«Гильмуллин Ринат Абрекович МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ В МНОГОЯЗЫКОВЫХ СИСТЕМАХ ОБРАБОТКИ ДАННЫХ НА ОСНОВЕ АВТОМАТОВ КОНЕЧНЫХ СОСТОЯНИЙ 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук Казань – 2009 Работа выполнена на кафедре теоретической кибернетики государственного образовательного учреждения высшего профессионального...»

«БУБНОВ ДМИТРИЙ ВЛАДИМИРОВИЧ РАЗРАБОТКА МЕТОДОВ И АЛГОРИТМОВ ПРИНЯТИЯ УПРАВЛЕНЧЕСКИХ РЕШЕНИЙ В АВТОМАТИЗИРОВАННЫХ МАШИНОСТРОИТЕЛЬНЫХ СИСТЕМАХ 05.13.06 – Автоматизация и управление технологическими процессами и производствами (технические системы) АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук Москва 2012 г. Работа выполнена в ФГБОУ ВПО Московском государственном технологическом университете СТАНКИН. Научный руководитель : доктор технических...»

«АНИСИМОВ МИХАИЛ МИХАЙЛОВИЧ РАЗРАБОТКА ФОРМАЛЬНЫХ МОДЕЛЕЙ РАССУЖДАЮЩИХ СЕТЕЙ ДЛЯ АНАЛИЗА ПАРАЛЛЕЛЬНЫХ СОБЫТИЙНЫХ ПРОЦЕССОВ Специальность 05.13.17 – Теоретические основы информатики АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук МОСКВА, 2009 Работа выполнена на кафедре информатики Московского физико-технического института (ГУ) Научный руководитель : доктор...»

«БАЛАШОВ Василий Викторович ОБЕСПЕЧЕНИЕ СОВМЕСТИМОСТИ ТРЕБОВАНИЙ К РАСПИСАНИЮ ОБМЕНА ПО КАНАЛУ С ЦЕНТРАЛИЗОВАННЫМ УПРАВЛЕНИЕМ 05.13.11 – математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук МОСКВА – 2010 Работа выполнена на кафедре...»

«ПОПКО ЕВГЕНИЙ АЛЕКСАНДРОВИЧ ПРОГРАММНЫЙ КОМПЛЕКС ГЕНЕТИЧЕСКОГО МОДЕЛИРОВАНИЯ ПРОЦЕССОВ ТЕРМОЛЮМИНЕСЦЕНЦИИ В ДИЭЛЕКТРИКАХ Специальность 05.13.18 – Математическое моделирование, численные методы и комплексы программ Автореферат диссертации на соискание ученой степени кандидата физико-математических наук Екатеринбург – 2009 Работа выполнена на кафедре вычислительной техники в ГОУ ВПО Уральский государственный технический университет – УПИ имени первого Президента России Б.Н....»

«ГУЛИН Артур Игоревич АНАЛИЗ И СИНТЕЗ ЦЕПНЫХ ТРЕХПОЛЮСНЫХ СТРУКТУР ПРЕОБРАЗОВАТЕЛЕЙ СИСТЕМ УПРАВЛЕНИЯ И УСТРОЙСТВ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ МЕТОДОМ ФУНКЦИЙ ПРЕОБРАЗОВАНИЯ Специальность 05.13.05 – Элементы и устройства вычислительной техники и систем управления АВТОРЕФЕРАТ диссертации на соискание ученой степени доктора технических наук Уфа 2014 Работа выполнена на кафедре телекоммуникационных систем ФГБОУ Уфимский государственный авиационный технический университет Научный...»

«Данилкин Евгений Александрович Вихреразрешающее моделирование турбулентных течений и переноса примеси в уличных каньонах с использованием многопроцессорных вычислительных систем 05.13.18 – Математическое моделирование, численные методы и комплексы программ Автореферат диссертации на соискание ученой степени кандидата физико-математических наук Томск – 2010 Работа выполнена на кафедре вычислительной математики и компьютерного моделирования ГОУ ВПО Томский государственный...»

«СЕРЁГИН Вадим Валерьевич КГД УРАВНЕНИЯ И АЛГОРИТМЫ ИХ РЕШЕНИЯ НА НЕСТРУКТУРИРОВАННЫХ СЕТКАХ Специальность 05.13.18 Математическое моделирование, численные методы и комплексы программ АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук. Москва 2005 Работа выполнена на кафедре математики физического факультета МГУ им. М.В. Ломоносова. Научный руководитель : доктор физико-математических наук, профессор Т. Г. Елизарова Официальные оппоненты :...»






 
© 2013 www.diss.seluk.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Методички, учебные программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.