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

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

Автореферат диссертации по теме "Внешнее тестирование интерфейсных библиотек"

; ГС ОД

> ^ ш

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. М.В. Ломоносова Факультет Вычислительной математики и кибернетики

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

ФОФАНОВ Василий Александрович

ВНЕШНЕЕ ТЕСТИРОВАНИЕ ИНТЕРФЕЙСНЫХ БИБЛИОТЕК (НА ПРИМЕРЕ ИНТЕРФЕЙСА ASIS)

Специальность 05.13.11 -математическое и программное обеспечение вычислительных машин, комплексов, систем и сетей

Автореферат

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

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. М.В. Ломоносова Факультет Вычислительной математики и кибернетики

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

ФОФАНОВ Васйлий Александрович

ВНЕШНЕЕ ТЕСТИРОВАНИЕ ИНТЕРФЕЙСНЫХ БИБЛИОТЕК (НА ПРИМЕРЕ ИНТЕРФЕЙСА ASIS)

Специальность 05.13.11 — математическое и программное обеспечение вычислительных машин, комплексов, систем и сетей

Автореферат

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

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

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

Репин Владимир Михайлович

кандидат физико-математических наук Рыбин Сергей Игоревич

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

Сухомлин Владимир Александрович

кандидат физико-математических наук Фролов Алексей Вячеславович

Ведущая организация: Институт системного программирования РАН

Защита состоится «Щ» | 2000 г. в —часов на заседании

специализированного совета К.053.05.84 в МГУ по адресу: 119899, Москва, Воробьевы горы, Научно-исследовательский, вычислительный, центр, конференц-зал.

С диссертацией можно ознакомиться в библиотеке Научно-исследовательского вычислительного центра МГУ.

Автореферат разослан «*СЗ» ^шхрта-2000 г.

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

В.В. Суворов

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

Актуальность работы

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

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

Интерфейсная библиотека ASIS (Ada Semantic Interface Specification, Спецификация семантического интерфейса к языку Ада) предоставляет доступ к синтаксической и семантической информации, содержащейся в программном окружении языка Ада (с точки зрения определения ИБ -информационным объектом), инструментам анализа текста программ на языке Ада. Стандарт на интерфейс ASIS, принятый организацией ISO в 1998 году, делает актуальной задачу независимой проверки соответствия существующих реализаций интерфейса принятому стандарту. Эта задача должна решаться внешним тестированием реализаций ASIS.

В настоящий момент не известно ни систем, ни методологии тестирования реализаций интерфейса ASIS для ЯП Ада 95. При этом, уже существуют коммерческие реализации, претендующие на поддержку стандарта Интерфейса, в связи с чем необходимость наличия такой системы тестирования' очевидна. Только в этом случае Интерфейс ASIS сможет играть такую же роль в разработке средств анализа исходных текстов на ЯП Ада, какую сам язык играет в разработке сложных высоконадежных систем.

Цель исследования

Конечной целью настоящей работы являлась разработка универсальной автоматической системы внешнего тестирования (СТ) реализаций интерфейса ASIS.

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

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

• Предложить практический подход к внешнему тестированию реализаций ASIS.

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

• С целью верификации результатов, применить разработанный комплекс для тестирования реализации ASIS для СП GNAT (ASIS-for-GNAT).

Результаты работы

В процессе работы были получены следующие результаты:

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

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

• На базе разработанных подходов реализован переносимый автоматический комплекс тестирования реализаций ASIS, Quality-for-ASIS. Важнейшим свойством системы является широкое использование новых подходов к тестированию, включая универсальные автоматические тестовые драйверы (в том числе способные работать на произвольных тестовых наборах) и тесты, реализованные в интерпретационной модели.

• Практическая ценность работы была продемонстрирована применением системы для тестирования реализации ASIS для компилятора GNAT.

Апробация

Результаты, полученные в работе, изложены в ряде печатных

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

числе:

• На Ломоносовских чтениях в МГУ в 1998 г.

•. На международных конференциях Ada-Europe в 1996,1998 и 1999 гг..

• На международной конференции TRI-Ada в 1997 г.

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

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

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

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

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

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

• Была разработана высокоавтоматизированная система внешнего тестирования реализации интерфейса ASIS.

• CT была применена для тестирования реализации ASIS для СП GNAT.

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

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

Диссертация состоит из шести глав, в том числе введения и заключения, списка источников из 41 наименования и трех приложений. Объем диссертации составляет 111 страниц текста. Диссертация содержит 8 рисунков.

Содержание работы 1. Введение

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

входных и выходных данных. Еще меньше щучена, проблема внешнего тестирования ИБ.

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

Библиотеки на языке программирования (ЯП) Ада в силу своей направленности на создание сложных высоконадежных индустриальных систем, в том числе реального времени, распределенных, встроенных и т.д., как правило, особенно нуждаются в средствах их внешнего тестирования.

Надежность программ на языке Ада обеспечивается, среди прочего, строгими требованиями, предъявляемыми к самим Ада-трансляторам, и большим вниманием к контролю всех этапов разработки и сопровождения Ада-программ, в том числе с использованием автоматических и автоматизированных средств программной инженерии. Средства поддержки программирования, в силу специфики ЯП Ада, играют для этого языка большую роль, чем для других стандартных языков программирования. Вместе с тем, разработка таких средств связана со значительными трудностями из-за необходимости учета синтаксической и семантической структуры анализируемой программы. Интерфейсная библиотека ASIS призвана упростить получение подобной информации и уменьшить усилия, затрачиваемые на разработку инструментов поддержки программирования на ЯП Ада.

ASIS, Ada Semantic. Interface Specification, что может быть переведено как Спецификация Семантического Интерфейса к языку Ада, является программным интерфейсом между синтаксической и семантической информацией, содержащейся в программном окружении языка Ада (с точки зрения определения ИБ - информационным объектом) и инструментами анализа текста программ на языке Ада. Современное состояние технологии ASIS характеризуется, во-первых, принятием в . конце 1998 года стандарта (ISO/IEC 15291:1999) на интерфейс ASIS, во-вторых, существованием уже в настоящее время реализаций интерфейса , и, в-третьих, использованием этих реализаций в реальных индустриальных приложениях. Учитывая большое внимание, уделяемое обеспечению надежности на всех этапах жизненного цикла программ на ЯП Ада (а значит, и надежности всех инструментальных средств поддержки жизненного цикла), с принятием стандарта ASIS возникает задача независимой проверки соответствия существующих реализаций интерфейса принятому стандарту. Эта задача должна решаться внешним тестированием реализаций ASIS.

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

Для версии интерфейса-ASIS для предыдущей редакции ЯП Ада существовала система внешнего тестирования ASIS VS 87. Во введении констатируется, что данная система оказалась неудачной, в первую очередь, в силу недостаточного осмысления проблем внешнего тестирования интерфейсных библиотек вообще и ASIS в частности.

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

2. Интерфейс ASIS

Во второй главе диссертации подробнее описывается архитектура и предназначение интерфейса ASIS.

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

Основным свойством ASIS является предоставление синтактико-семантической информации о программе в высокоуровневых терминах, хорошо согласующихся с руководством по языку Ада и независящих от конкретного транслятора ЯП Ада и реализации интерфейса ASIS.

В разделе 2:2 дается краткая историческая справка об интерфейсе.

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

Основными абстрактными типами интерфейса являются:

• Context (Контекст) - абстракция компиляционного окружения ЯП Ада.

• Compilation_Unit (Единица компиляции) - абстракция компиляционного модуля.

• Element (Элемент) - абстракция синтаксической конструкции внутри модуля.

Описывается также принятая в ASIS классификация Элементов по типам синтаксических конструкций, которым они соответствуют.

В разделе также описывается иерархия пакетов, составляющих интерфейсную библиотеку ASIS.

В разделе 2.4 рассматривается использование интерфейса. Описываются основные виды операций, определенные в интерфейсе

ASIS, и объясняется их роль в создании реальных приложений на базе интерфейса (т.н. ASIS-приложений).

Раздел 2.5 описывает реализации ASIS, известные на настоящий момент. Особое внимание уделяется реализации ASIS для мобильного свободно-распространяемого транслятора с языка Ада GNAT.

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

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

3. Некоторые аспекты тестирования

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

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

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

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

1. Тестирование по методу "черного ящика" (black-box testing), называемое также '"' функциональным тестированием, рассматривает программу как единую сущность, "черный ящик", свойства которого заданы его описанием (спецификацией), и не предполагает никакого знания о внутренних деталях реализации. Целью такого тестирования является обнаружение несоответствия реального поведения программы ее описанию.

2. Тестирование по методу "белого ящика" (white-box testing), когда существует доступ к деталям внутренней реализации тестируемой программы, и тестирование производится исходя из этой добавочной информации.

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

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

Раздел 3.2 посвящен вопросам тестирования интерфейсных библиотек.

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

Демонстрируются следующие проблемы, возникающие.при внешнем тестировании ИБ: •

• Наблюдение возвращаемых значений.

Констатируется невозможность прямого наблюдения значений при использовании абстрактных типов данных и в некоторых других случаях; это приводит к необходимости^ использования " "внешних" (т.е. возвращающих наблюдаемые значения) запросов ИБ для непрямого наблюдения результатов. Это приводит к размыванию фокуса тестирования. Отмечается также, что наблюдение с помощью интерфейсных запросов может быть также неполным, то есть не определять однозначно значение абстрактного типа.

• Контекст исполнения запроса (КИ).

Как правило,, невозможно выделить тестируемый запрос из его КИ, то есть последовательности других запросов ИБ, вызов которых необходим, чтобы данный запрос имел смысл. Это становится причиной ряда проблем, главной из которых является частая невозможность

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

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

• Использование специализированных интерпретаторов.

Значительным подспорьем в разработке тестов для ИБ может стать

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

• Автоматизация процесса тестирования.

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

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

• Максимальное использование получаемых КИ.

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

• Универсальные тестовые драйверы.

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

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

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

• Гипотеза локальности реализации (TJIP).

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

• Использование готовых наборов входных данных.

Значительной экономии усилий на разработку системы тестирования

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

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

4. Тестирование реализаций ASIS

Глава 4 является основной частью работы. Основные соображения предыдущей главы переносятся в ней на случай тестирования реализаций интерфейса ASIS.

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

Тестирование интерфейсных библиотек по методу "черного ящика" ' подразумевает тестирование запросов библиотеки.

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

корректности осуществляется опосредованно при помощи предоставляемых Интерфейсом "внешних" запросов ASIS, включенных в эти контексты. '

Тест для запроса ASIS состоит в общем случае из следующих "частей:

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

• Входными данными для программ на б^зе Интерфейса ASIS являются программы на языке Ада 93. Следовательно, вне зависимости от того, как будет устроена система тестирования, необходимым компонентом любого теста будет некоторое компиляционное окружение на языке Ада, которое будет выполнять роль набора входных данных теста.

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

В подразделе 4.1.1 описывается система тестирования реализаций ASIS для предыдущей редакции языка Ада (Ада 83). Рассматриваются ее недостатки и причины, по которым она малопригодна в качестве основы для разработки системы тестирования для нового стандарта.

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

В подразделе 4.1.2 рассматривается связь тестирования реализаций интерфейса ASIS со смежной областью, внешним тестированием трансляторов (ВТТ) с языка Ада. Указывается на очевидные аналогии, и рассматривается, в какой мере подходы, принятые в ВТТ, было решено использовать при разработке системы тестирования реализаций ASIS.

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

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

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

Основной акцент в настоящей работе делается на вторую группу подходов.

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

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

5. Система тестирования Quality-for-ASIS

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

Раздел 5.1 описывает общий подход к реализации СТ.

Раздел 5.2 подробнее рассказывает об инструментах СТ, представленных интерпретатором запросов ASIS и двумя интегрированными драйверами, объединяющими в тестовые стенды 7 подсистем, реализующих рассмотренные в главе 4 подходы.

Раздел 5.3 описывает структуру дистрибутива СТ.

Раздел 5.4 рассказывает о результатах применения СТ для тестирования реализации ASIS для компилятора GNAT.

Наконец, раздел 5.5 останавливается на вопросах универсальности и переносимости СТ.

6. Заключение

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

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

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

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

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

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

2. Разработаны подходы к тестированию запросов интерфейса ASIS, в том числе на базе полностью автоматических тестовых

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

3. На базе разработанных подходов реализован переносимый автоматический комплекс тестирования реализаций ASIS, Quality-for-ASIS. Важнейшим свойством системы является широкое использование новых подходов к тестированию, включая универсальные автоматические тестовые драйверы (в том числе способные работать на произвольных тестовых наборах) и тесты, реализованные в интерпретационной модели.

4. Система успешно применена для тестирования реализации ASIS для компилятора GNAT.

Публикации

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

работах:

1. S. Rybin, A. Strohmeier, A. Kuchumov, V. Fofanov: ASIS for GNAT: From the Prototype to the Full Implementation. In Alfred Strohmeier (Ed), 1996 Ada-Europe International Conference on Reliable Software Technologies Proceedings, Montreux, Switzerland, LNCS (Lecture Notes in Computer Science) no 1088, Springer, 1996, pp. 298-311.

2. V. Fofanov, S/1 Rybin, A. Strohmeier. "ASIStint: An Interactive ASIS Interpreter". In Susan Carlson (Ed), Proceedings ofTRI-Ada'97, St. Louis, USA, ACM Press, 1997, pp. 205-209.

3. A. Strohmeier, V. Fofanov, S. Rybin, S. Barbey. Quality-for-ASIS: A Portable Testing Facility for ASIS. In Lars Asplund (Ed), 1998 Ada-Europe International Conference on Reliable Software Technologies Proceedings, Uppsala, Sweden, LNCS no 1411, Springer, 1998, pp. 163175.

4. (в печати) S. Rybin, V. Fofanov, A. Strohmeier, A. Kuchumov. ASIS-for-GNAT: A Report of Practical Experiences. Статья принята к публикации в Erhard Ploedereder, Hubert В. Keller (Eds'), 2000 Ada-Europe International Conference on Reliable Software Technologies Proceedings, Potsdam, Germany, LNCS no ??, Springer-Verlag, 2000, !3 pages.

5. В.Фофанов, С.Рыбин. Интерфейс ASIS: подспорье в разработке инструментов на языке Ада. Computer Weekly, №43, с.7.

6. (в печати) Подходы-к тестированию реализаций интерфейса ASIS. В сборнике Программное обеспечение систем реального времени. НИВЦ МГУ, 2000.

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

1. ВВЕДЕНИЕ.

1.1. Внешнее тестирование интерфейсных библиотек.

1.2. ЯП Ада.

1.3. Интерфейс ASIS.

1.4. Проблемы тестирования реализаций ASIS.

1.5. Задачи диссертации.

2. ИНТЕРФЕЙС ASIS.

2.1. Предназначение.

2.2. История разработки.

2.3. Архитектура и строение интерфейса.

2.3.1. Основные типы данных ASIS.

2.3.2. Иерархия пакетов ASIS.

2.4. Использование ASIS.

2.4.1. Понятие ASIS-приложения (ASIS Application).

2.4.2. Понятие и назначение Контекста ASIS (ASIS Context); работа с Контекстами.

2.4.3. Единицы компиляции (CompilationUnits); работа с Единицами компиляции

2.4.4. Структурная декомпозиция Единиц компиляции. Элементы.

2.4.5. Семантические зависимости мезвду Элементами.

2.4.6. Текстовые представления Элементов ASIS.

2.4.7. Обход дерева синтаксических Элементов (element traversal). Процедура TraverseElement.

2.4.8. Пример ASIS-приложения.

2.4.9. Неявные Элементы и Элементы расширений.

2.5. Реализации ASIS.

2.6. Текущий статус интерфейса.

3. НЕКОТОРЫЕ АСПЕКТЫ ТЕСТИРОВАНИЯ.

3.1. Тестирование программ.

3.1.1. Критерий полноты.

3.1.2. Адекватность.

3.1.3. Классификация подходов к тестированию.

3.1.4. Процесс тестирования.

3.2. Тестирование интерфейсных библиотек.

3 .2.1. Интерфейсные библиотеки. ASIS как интерфейсная библиотека.

3.2.2. Проблемы внешнего тестирования интерфейсных библиотек.

3.2.3. Некоторые способы повышения эффективности внешнего тестирования библиотек.

3.2.4. Стандартизация систем внешнего тестирования интерфейсных библиотек.

4. ТЕСТИРОВАНИЕ РЕАЛИЗАЦИЙ ASIS.

4.1. Введение.

4.1.1. Система тестирования ASIS VS 87.

4.1.2. Внешнее тестирование трансляторов.

4.2. Подходы к тестированию запросов ASIS.

4.2.1. Тестирование отдельных запросов.

4.2.2. Тестирование групп запросов.

4.3. Классификация запросов ASIS с точки зрения подхода к их тестированию

4.3.1. Запросы для работы с Контекстами и Единицами Компиляции ASIS.

4.3.2. Запросы структурной декомпозиции.

4.3.3. Настраиваемая процедура рекурсивного обхода TraverseElement.

4.3.4. Запрос EnclosingElement.:.

4.3.5. Семантические запросы.

4.3.6. Классификационные запросы.

4.3.7. Запросы для получения текстовых представлений Элементов (ASIS.Text).

4.3.8. Запросы для работы с идентификаторами Элементов (ASIS.Ids).

5. СИСТЕМА ТЕСТИРОВАНИЯ QUALITY-FOR-ASIS.

5.1. Подход к реализации системы тестирования.

5.2. Инструменты системы.

5.2.1. Интерпретатор ASIStint.

5.2.2. Инструмент Q4A-arbitrary.

5.2.3. Инструмент Q4 A-specific.

5.3. Состав системы.

5.4. Тестирование реализаций ASIS при помощи СТ Quality-for-ASIS.

5.5. Вопросы универсальности и переносимости.

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

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

1.1. Внешнее тестирование интерфейсных библиотек

В настоящее время существует довольно богатая библиография по тестированию программ. Работы по тестированию либо рассматривают теоретические аспекты [4-6, 12, 27, 28, 35 и др.], либо рассматривают проблемы тестирования с практически-прикладной точки зрения [7, 29, 36, 37, 40 и др.], либо предлагают методики для тестирования определенного класса программ (напр., трансляторов - [13, 14, 33, 34, 38]). При этом, практически все работы по тестированию рассматривают тестирование именно законченных программ. Практически не изученной остается проблема тестирования интерфейсных библиотек (ИБ), под которыми мы понимаем программные библиотеки типов данных и запросов, предоставляющие наборы услуг для связи с некоторым информационным объектом с целью чтения и изменения его состояния. Как будет показано ниже, тестирование ИБ имеет свою специфику, вытекающую в первую очередь из отсутствия самостоятельно исполняемой программы с четко заданным множеством допустимых входных и выходных данных. Еще меньше изучена проблема внешнего тестирования ИБ, которым мы назовем тестирование, проводимое вне коллектива разработчиков, специалистами, не принимавшими участия в разработке библиотеки, малознакомыми с тонкостями ее внутренней реализации и основывающимися на внешней спецификации ИБ. Такой пробел отчасти вызван тем, что в подавляющем большинстве случае тестирование производится самим разработчиком внутренним способом, и 5 соответствие библиотеки своему предназначению как правило просто декларируется разработчиком. Кроме того, такое тестирование сопряжено со значительными трудностями, как в формулировании подходов к тестированию, так и в создании тестовых наборов.

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

1.2. ЯП Ада

Язык программирования (ЯП) Ада [21], созданный в начале восьмидесятых годов, предназначен для создания сложных высоконадежных индустриальных систем, в том числе реального времени, распределенных, встроенных, и т.д.

Надежность программ на языке Ада обеспечивается, среди прочего, суровыми требованиями, предъявляемыми к самим Ада-трансляторам, и большим вниманием к контролю всех этапов разработки и сопровождения Ада-программ, в том числе с использованием автоматических и автоматизированных средств программной инженерии. Средства поддержки программирования, в силу специфики ЯП Ада, играют для этого языка большую роль, чем для других стандартных языков программирования. Вместе с тем, разработка таких средств связана со значительными трудностями из-за необходимости учета синтаксической и семантической структуры анализируемой программы. Интерфейсная библиотека ASIS, стандарт на которую был недавно принят, призвана упростить получение подобной информации и уменьшить усилия, затрачиваемые на разработку инструментов поддержки программирования на ЯП Ада.

1.3. Интерфейс ASIS

ASIS, Ada Semantic Interface Specification, что может быть переведено как Спецификация Семантического Интерфейса к языку Ада, является интерфейсом между синтаксической и семантической информацией, содержащейся в программном окружении языка Ада (с точки зрения определения ИБ -информационным объектом) и инструментами анализа текста программ на языке Ада. Стандарт на интерфейс ASIS был принят Всемирной организацией по стандартизации (ISO) в 1998 году. Это - долгожданное событие в области программирования на ЯП Ада, так как работа над стандартизацией ASIS ведется с 1993 г. В отличие от многих других стандартов, этот интерфейс был разработан как реакция на реальную необходимость программной индустрии снизить затраты на разработку инструментов для анализа программ на языке Ада, в том числе для узкоспециализированных, внутрифирменных нужд. В результате, первые реализации Интерфейса появились практически одновременно с началом работы над стандартом. Так, разработка реализации ASIS для компилятора GNAT велась в НИВЦ МГУ в рамках международного сотрудничества, начиная с 1994 г. [22, 23] Другие реализации ASIS также начинались как реализации самых первых ревизий проекта стандарта. Ожидается, что интерфейс ASIS в ближайшие годы будет реализован для большинства компиляторов с языка Ада.

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

Заключение диссертация на тему "Внешнее тестирование интерфейсных библиотек"

6. ЗАКЛЮЧЕНИЕ

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

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

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

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

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

• На базе разработанных подходов реализован переносимый автоматический комплекс тестирования реализаций ASIS, Quality-for-ASIS. Важнейшим свойством системы является широкое использование новых подходов к тестированию, включая универсальные автоматические тестовые драйверы (в том числе способные работать на произвольных тестовых наборах) и тесты, реализованные в интерпретационной модели. Практическая ценность работы была продемонстрирована применением системы для тестирования реализации ASIS для компилятора GNAT.

7. СПИСОК ИСПОЛЬЗОВАННЫХ ТЕРМИНОВ гипотеза локальности реализации, 46 дерево ASIS, 15 интерфейсная библиотека, 36 контекст исполнения, 41 критерий адекватности, 33 выборки, 31 полноты,31 тестирования, 30 лексическая контрольная сумма, 66 метод тестирования принцип белого ящика, 33 принцип черного ящика, 33 оракул, 30 спецификация полуформальная, 34 формальная, 34 степень адекватности, 32 тест, 30 комплект тестов, 30 набор тестов, 30 тестирование, 29 массированное, 61 тестовая конфигурация глобальная, 46 локальная, 46 условие верификации, 29

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

1. ACVC2. ASIS3. ASIS VS 874. Advion et al 825. Amia and Ammann 926. Barbey 977. Beizer 858. Binder 969. D aran and1. Thévenod-Fosse 96

2. Тестовый набор ACVC доступен в Интернете по адресу http ://www. adaic. org/compilers/acvc/ Information technology Programming languages - Ada Semantic Interface Specification (ASIS), International standard ISO/EEC 15291:1999

3. Доступен в Интернете через каталог ISO по адресуhttp : //www. iso. ch/info е/catinfo. html.

4. ASIS 83 Validation Suite. User's Guide. Intermetrics, 1987.

5. W. Advion, M. Branstad, J. Cherniavsky. Validation,verification and testing of computer software. Computer

6. Surveys, Vol.14, N2, 1982. pp. 159-192.

7. N. Amla, P. Ammann. Using Z Specifications in Category

8. Partition Testing. In COMPASS'92: Proc. 7th Annu. Conf.

9. Comput. Assur., Syst. Integr., Software Safety and Process

10. Security. Piscataway, 1992. pp. 3-10,

11. Stéphane Barbey. Test Selection for Specification-Based

12. Testing of Object-Oriented Software Based on Formal

13. Specifications. PhD thesis, Swiss Federal Institute of

14. Technology in Lausanne (EPFL), December 1997. Ph.D.1. Thesis 1753.

15. B. Beizer. Software Testing Techniques. NY: Van Nostrand Reinhold, 1983.

16. Robert V. Binder. Testing object-oriented software: a survey. Journal of Testing, Verification and Reliability, pp. 125-252, September 1996.

17. California, USA, January 1996. V. Fofanov, S. Rybin, A. Strohmeier. "ASIStint: An Interactive ASIS Interpreter". In Susan Carlson (Ed.), Proceedings o/TRI-Ada'97, St. Louis, USA, ACM Press, 1997, pp.205-209.

18. Веб-страницы компании ACT, производителя GNAT: США: http://www.gnat.com

19. RM95 S. Tucker Taft, Robert A. Duff (eds.) Ada 95 Reference

20. Manual: Language and Standard Libraries, International Standard ISO/DEC 8652:1995(E). LNCS no 1246, SpringerVerlag, 1997.

21. Также доступен в Интернете через каталог ISO по адресу http://www.iso.ch/infoe/catinfo.html.

22. Rybin et al 95 S. Rybin, A. Strohmeier, E. Zueff: ASIS for GNAT: Goals,

23. Problems and Implementation Strategy. In Marcel Toussaint (Ed.), Second International Eurospace Ada-Europe Symposium Proceedings, Frankfurt - Germany, October 2-6 1995, LNCS no 1031, Springer, 1995, pp. 139151.

24. Siyan 97 Karanjit S. Siyan. Novell IntranetWare Professional

25. Reference. 5th Edition. New Riders Publishing, 1997.

26. Strohmeier et al A. Strohmeier, V. Fofanov, S. Rybin, S. Barbey. Quality-98 for-ASIS: A Portable Testing Facility for ASIS. In Lars

27. Asplund (Ed), 1998 Ada-Europe International Conference on Reliable Software Technologies Proceedings, LNCS no 1411, Springer, 1998, pp. 163-175.

28. Wu et al 88 D. Wu, M.A. Hennell, D. Hedley, I.J. Riddell. A Practical

29. Method for Software Quality Control via Program Mutation. In 2nd Workshop on Software Testing, Verification and Analysis. IEEE Computer Society Press, 1988, pp. 159-170.

30. Zhu et al 97 Hong Zhu, Patrick A.V. Hall, John H.R. May. Software

31. Unit Test Coverage and Adequacy. In ACM Computing28. Бичевский и Борзов 8529. Борзов 8030. Бутаков 8431. Дейкстра 7532. Калниньш и Борзов 8533. Кауфман 8434. Кауфман 8635. Липаев 8636. Майерс 8037. Майерс 8338. Рыбин 8739. Саркисян 91

32. Surveys, Vol. 29, No. 4, Dec 1997. pp. 366-427.

33. Я.Я. Бичевский, Ю.В. Борзов. Тестирование программ

34. ЭВМ. Рига: Изд-во ЛатГУ, 1985.

35. Ю.В. Борзов. Методы тестирования и отладкипрограмм ЭВМ. Рига: Изд-во ЛатГУ, 1980.

36. Е.А. Бутаков. Методы создания качественногопрограммного обеспечения ЭВМ. Энергоатомиздат,1984.

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

38. A.A. Калниньш, Ю.В. Борзов. Тестирование программ: языки спецификаций и автоматическое генерирование тестов. Кибернетика №6, 1985. с.28-34.

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

40. Г. Майерс. Надежность программного обеспечения. Мир, 1980.

41. Г. Майерс. Искусство тестирования программ. М.: Мир, 1983.

42. C.И. Рыбин. Методика тестирования диагностики. нарушений контекстных условий в стандартизованных трансляторах. Диссертация на соискание уч.ст. к.ф.м.н. М„ 1987.

43. A.C. Саркисян. Повышение качества программ наоснове автоматизированных методов. М.: Радио и связь, 1991.

44. Тейер и др. 81 Т. Тейер, М. Липов, Э. Нельсон. Надежностьпрограммного обеспечения. М.: Мир, 1981.

45. Зуев 99 Е. А. Зуев. Принципы и методы создания компиляторапереднего плана Стандарта Си++. Диссертация на соискание уч.ст. к.ф.м.н. М., 1999.