Аспекты применения объектно-ориентированного подхода в регрессионном тестировании компиляторов
Применение объектно-ориентированного подхода к разработке системы регрессионного тестирования компиляторов на компьютерах серий "Эльбрус-3m" и "МЦСТ-R". Контроль качества программного обеспечения. Архитектура системы автоматизированного тестирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 27.11.2018 |
Размер файла | 881,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http: //www. allbest. ru/
ЗАО «МЦСТ»
Аспекты применения объектно-ориентированного подхода в регрессионном тестировании компиляторов
Д.С. Горлушко
Аннотация
Освещаются некоторые аспекты применения объектно-ориентированного подхода к разработке системы регрессионного тестирования компиляторов на ВК серий «Эльбрус-3m» и «МЦСТ-R». Излагаются особенности регрессионного контроля качества компиляторов на проекте. Рассматриваются архитектура системы автоматизированного тестирования и специфика моделей основных функциональных компонент, приводятся сведения о программной реализации продукта.
Ключевые слова: регрессионное тестирование, автоматизация, проектирование, объектно-ориентированный подход, компиляторы.
Annotation
ASPECTS OF USING OBJECT-ORIENTED APPROACH IN COMPILERS REGRESSION TESTING
D. Gorlushko
This article reports some aspects of using object-oriented approach to develop compilers regression testing system on «Elbrus-3m» and «MCST-R» computers. Some features regression testing «Elbrus» compilers are described in first section. System architecture and structure peculiarity of all functional components are in the main part of article. Finally, there is some information about product implementation.
Key words: regrission testing, automation, designing, object-oriented approach, compilers.
Введение
В настоящее время трудно представить проектирование высокотехнологичного программного обеспечения (ПО) без использования объектно-ориентированного подхода (ООП), равно как реализацию программных продуктов без тестирования последних. Причем очевидно, что неудобное в использовании, трудоемкое и подверженное ошибкам ручное тестирование крайне неэффективно на таких проектах. Для обеспечения качества сложного ПО требуется комплексная система автоматизированного контроля, существующая на всех этапах разработки продукта. Применение базовых принципов ООП при проектировании и реализации такой системы позволит, прежде всего, оперативно управлять процессом тестирования основного разрабатываемого программного комплекса, что в свою очередь сократит временные затраты на проверку качества продукта и повысит его надежность.
1. Особенности регрессионного тестирования компиляторов семейства «Эльбрус»
В соответствии со стандартным определением регрессионное тестирование - это выборочное тестирование, позволяющее убедиться, что изменения не вызвали нежелательных побочных эффектов, или что измененная система по-прежнему соответствует требованиям. Основные задачи регрессионного тестирования [1]:
убедиться, что обнаруженная ошибка исправлена и после этого не появились новые;
гарантировать функциональную преемственность и совместимость новой версии (релиза, патча) с предыдущими;
уменьшить стоимость и сократить время выполнения тестов.
Регрессионное тестирование дорогостоящая операция, требующая значительных вычислительных ресурсов для выполнения необходимых проверок на тестовых задачах и надежного ПО для автоматизации этого процесса.
Что касается последнего, то для обеспечения качества оптимизирующих компиляторов семейства «Эльбрус» с самого начала проекта были разработаны и реализованы системы регрессионного оперативного тестирования и ночного тестирования компиляторов. Существенной особенностью этих программных средств контроля качества является то, что они осуществляют проверки компиляторов исключительно с помощью моделирующих систем для вычислительных комплексов (ВК) серий «Эльбрус-3m» и «МЦСТ-R». С одной стороны, конечно, это позволило начать отладку системы программирования (СП) на пакетах простых тестов задолго до появления первых ВК. С другой стороны, моделирующий комплекс в 10-100 раз медленнее ВК, что делает его непригодным для проверки кода компиляторов на сложных тестовых примерах, т.е. задачах, исполнение которых превышает 100 млрд. тактов процессорного времени. Таким образом, следующим этапом развития средств регрессионного контроля стало проектирование и реализация среды поддержки регрессионного тестирования на вычислительных машинах упомянутых серий архитектур.
Что касается вычислительных ресурсов, то на проекте задействованы парк x86-серверов, около десятка ВК серии «Эльбрус-3m» и несколько ВК серии «МЦСТ-R». Все ВК разрабатываемых архитектур находятся в коллективном пользовании, так что время прохождения пакета может существенно увеличиваться при интенсивной работе сотрудников. Также в силу проведения разного рода отладочных работ на машинах возможны различного рода сбои в работе операционных систем на ВК, а также их зависания. регрессионный тестирование компилятор компьютер
С учетом упомянутых особенностей очевидными требованиями к среде поддержки регрессионного тестирования компиляторов на пакетах сложных задач являлись, прежде всего, организация доступа на ВК для проверки качества и производительности компиляторов, устойчивость к сбоям работы машин, организация единых средств запуска пакетов сложных задач с нетривиальными схемами сборки и проверки на исполнение последних. В силу постоянного развития комплекса компиляторов, из-за частой смены условий к тестовой базе и режимов проверки системе необходимо обладать такими свойствами, как адаптируемость и масштабируемость. Для мониторинга состояния проекта нужно было обеспечить надежную систему хранения и визуализации результатов данного тестирования.
2. Архитектура системы
Особенностями архитектуры системы является разбиение на два независимых фреймворка: платформу распределенного запуска и платформу анализа результатов (рис. 1). Подобная схема была применена исследовательской группой факультета математики и физики Чарльзского университета на проекте по разработке универсального средства автоматизации анализа производительности «BEEN» [2]. Такое разбиение информационной системы позволяет проводить независимое проектирование и разработку каждой платформы, а также обеспечивает вертикальную масштабируемость всей системы. Интегрирующим звеном в схеме выступает основной функциональный элемент - ядро системы, связывающее воедино два фреймворка посредством предоставляемых ими интерфейсов. Администрирование ядра и составление расписаний запусков осуществляются менеджерами конфигурирования и планирования запусков подсистемы управления. Данные компоненты в настоящий момент еще находятся в разработке. Таким образом, основными, уже существующими функциональными модулями являются подсистема средств запуска пакетов тестирования, менеджер ресурсов и подсистема визуализации. Далее рассматриваются некоторые аспекты применения ООП при проектировании и реализации этих компонентов.
3. Подсистема средств запуска пакетов тестирования
Архив тестовых пакетов представляет собой структурированное хранилище исходных текстов сложных задач. Как уже отмечалось, особенность этих тестов в том, что они являются реальными пользовательскими приложениями, поэтому имеют нетривиальные схемы сборки, запуска сгенерированного бинарного файла, а также анализа результатов их работы. Все это отражается и на временнй характеристике работы этих пакетов. Таким образом, основными требованиями к средствам запуска являются: надежность процесса, протоколирование получаемых результатов с возможностью восстановления процесса с контрольной точки, а также оперативность решения текущих задач по сопровождению.
Рис. 1 Архитектура системы
Структура этой компоненты среды имеет сервис-ориентированную архитектуру [3], разделенную на модули по их непосредственному назначению. Основные модули подсистемы:
модуль режима запуска выбирает тестируемую компоненту, основные опции запуска, подгружает список модулей соответствующих пакетов тестовых задач, задает порядок действий для проверки пакетов;
модуль пакета задач определяет основную функциональность действий для проверки компиляторов на задачах пакета;
модуль входных данных реализует механизмы запуска задачи, анализа результатов исполнения;
модуль результатов собирает и обрабатывает показатели производительности компилятора;
модуль отчетов генерирует различные отчеты по результатам запусков;
модуль контрольной точки реализует механизм восстановления запуска тестирования пакета с контрольной отметки в случае сбоя работы ВК;
модуль ресурсных ограничений предоставляет удобный интерфейс работы с ресурсными лимитами.
Структурная модель подсистемы построена с применением ООП к проектированию всех перечисленных модулей, где каждый модуль представляет собой объект базового или одного из дочерних классов, входящих в дерево наследования, с определенным свойствами и необходимым интерфейсом для взаимодействия с другими сущностями в рамках данной компоненты. Общая диаграмма всех классов объектов приведена на рис. 2. Стрелками на диаграмме приведены все отношения наследования между имеющимися структурами, ломаные линии с ромбом на одном конце показывают вложенность объектов.
Одной из особенностей модели является многоуровневое дерево наследования класса «Задача», позволяющее эффективно реализовать механизм формирования опций компиляции для тестов, настройку ресурсных ограничений, организацию сложных схем компиляции или исполнения и т.д. На рис. 3 приведено сравнение структурного подхода и ООП в части определения опций компиляции задачи. Очевидное нагромождение условных конструкций «IF-THEN-ELSE» в первом случае снижает читаемость кода, усложняет функционал, делая его менее гибким и масштабируемым, тем самым затрудняя его сопровождение. Как следствие, снижается надежность всей системы.
Другой важной задачей сопровождения системы является введение новых пакетов сложных задач в регрессионное тестирование. Опять же, в случае структурного подхода, для этой цели потребовалась бы реализация функций компиляции, исполнения, сличения результатов для новых тестовых примеров. При использовании ООП для внесения в тестирование новой задачи достаточно просто добавить в систему конфигурационный модуль с переопределением требуемых функций. Пример включения нового теста с переопределением функции сличения результатов приведен на рис. 4.
Рис. 2 Структурная модель системы
Рис. 3 Сравнение структурного подхода и ООП
Рис. 4 Конфигурационный модуль
Механизм сохранения результатов в случае зависания тестирования на каком-либо ВК обеспечивается объектами классов «контрольная точка для компиляции» и «контрольная точка для исполнения». С их помощью можно возобновлять прерванное тестирование с момента последнего действия [4]. Различия между этими классами - в функции сериализации, которая в классе «контрольная точка для исполнения» позволяет сохранять промежуточные результаты по каждому входному данному.
Остальные классы структурной модели помогают обеспечить удобную работу с ресурсными ограничениями, анализом показателей производительности, а также составлением отчетов.
4. Особенности работы с вычислительными ресурсами
Основная задача менеджера ресурсов - эффективное управление всеми имеющимися вычислительными машинами. Как уже упоминалось, на проекте задействованы x86-серверы, а также ВК серий «Эльбрус-3m» и «МЦСТ-R». Для представления этих объектов в системе используется иерархия классов, приведенная на рис. 5. Вершина дерева - абстрактный класс «Сервер» с перечнем требуемых для модели атрибутов и методов. В дочерних классах идут уже необходимые переопределения функций «Установить_<системный параметр>», исходя из конкретной архитектуры вычислительной машины и способов извлечения системных характеристик. После определения данные атрибуты используются менеджером при выборе требующегося вычислительного средства из общего пула для запуска той или иной задачи. Для извлечения значений системных параметров используются одноименные функции «Получить_*».
Работа с выбранным объектом подкласса «Сервер» осуществляется посредством унифицированного для всех типов машин интерфейса, заложенного в базовом (родительском) классе. Этот механизм является примером полиморфного поведения объектов подтипа «Сервер». Данный принцип ООП позволяет значительно упростить схему работы с данными модели, сократить «внешний» программный код [5]. Что касается атрибутов объекта, то доступ к ним осуществляется с помощью функций «Установить_*» и «Получить_*». Таким образом, внутреннее устройство модели скрыто от вмешательств извне, а это уже демонстрация другого принципа ООП - инкапсуляции. Еще один аспект применения этого понятия будет приведен ниже.
Рис. 5 Иерархия классов
Подсистема визуализации результатов тестирования
В рамках данной компоненты будет рассмотрен механизм обработки событий, а также особенности взаимодействий с подсистемой хранения результатов. Изначально основными требованиями к платформе обработки результатов были: полнота информации, быстродействие, эргономичность, адаптируемость и масштабируемость компоненты. В результате анализа первых двух требований смежную с компонентой визуализации подсистему хранения результатов (см. рис. 1) решено было спроектировать из двух модулей: основной базы данных (БД) и сервиса кэширования данных в ОП. Последний обеспечивает хранение актуальной информации и быстрый доступ к ней.
В качестве связующего звена между этими модулями выступил объект класса «Пакет» подсистемы визуализации результатов. В его методе «извлечь» производится проверка актуальности информации в ОП кэш-сервиса. Если данные там действительны, то они же и возвращаются функцией «извлечь». В противном случае, запрос данных переадресуется в БД, информация оттуда извлекается, после чего идет обновление данных в ОП кэш-сервиса (метод «обновить»). В результате механизм взаимодействия между подсистемами платформы обработки результатов скрыт в недрах реализации двух методов объекта «Пакет» - «извлечь» и «обновить». Такая декомпозиция вполне логична. Более того, она способствует росту масштабируемости и адаптируемости компоненты визуализации и является еще одним примером удачного применения принципа инкапсуляции данных ООП.
Что касается механизма обработки событий, то здесь интерес представляют методы оповещения объекта класса «Меню», в частности, метод проверки актуальности последних результатов, запускаемый подсистемой асинхронно каждую минуту и проверяющий достоверность информации в ОП кэш-сервиса и БД. Если в последней данные обновились в течение предыдущей минуты, то данный метод сбрасывает чекер актуальности результатов и запускает метод «мерцание заголовка». В итоге заголовок в окне браузера начинает оповещать пользователя об обновлении результатов. В рамках подсистемы визуализации это далеко не единственный пример применения механизма обработки событий, так что данное свойство ООП оказалось действительно практически важным при разработке этой компоненты.
Результаты и выводы
Реализация системы регрессионного тестирования была выполнена на языке Perl5 c использованием расширения Moose, позволяющего упростить поддержку ООП. В итоге в системе используется более 150 классов, объем программного кода составляет около 70 тыс. строк. Для сравнения, только отдельные компоненты подсистемы средств запуска, разработанные ранее с использованием структурного подхода к проектированию и реализации, насчитывали порядка 20-30 тыс. строк кода (суммарно же вся система насчитывала более 120 тыс. строк кода). Таким образом, применение ООП позволило построить более компактный код, упростило процесс сопровождения системы, повысило адаптируемость, масштабируемость и надежность.
Внедрение данного ПО состоялось в 2009 году. За это время с помощью разработанной системы удалось отладить три новые версии СП, включено шесть тестовых пакетов сложных задач, выявлено порядка 500 нетривиальных ошибок. Объем запусков тестирования на ВК в настоящий момент составляет более 1000 сложных задач, что соответствует более чем 1500 часам работы всех ВК в неделю.
Заключение
В статье рассмотрены некоторые аспекты применения основных принципов ООП при разработке системы регрессионного тестирования компиляторов на ВК серий «Эльбрус-3m» и «МЦСТ-R». Использование данной концепции при проектировании и реализации всех основных функциональных компонентов продемонстрировало ее эффективность и указало на перспективность дальнейшего развития проекта в данном ключе. В дальнейшем интерес представляют разработка подсистемы управления тестированием, а также реализация модуля обработки результатов и формирования различных статистических отчетов.
Литература
1. William E. Perry, Effective Methods for Software Testing, Publisher: Wiley, 3 edition, 2006.
2. Tomas Kalibera, Jakub Lehotsky, David Majda, Branislav Repsek. Automated Benchmarking and Analysis Tool, 2006 (http://www.acm.org).
3. Канер С., Фолк Дж., Нгуен Енг. Тестирование программного обеспечения. К., ДиаСофт, 2000.
4. Винниченко И. Автоматизация процессов тестирования. СПб., Питер, 2005.
5. Grady Booch, Object-oriented analysis and design with applications, Addison Wesley Professional, 2007.
Размещено на Allbest.ru
...Подобные документы
Особенности реализации главных элементов разрабатываемой программы (цифровые элементы) с помощью объектно-ориентированного подхода. Применение принципа инкапсуляции для защиты данных. Конструирование классов, описание и тестирование программного продукта.
курсовая работа [2,3 M], добавлен 10.05.2015Анализ предметной области "Конкурс поэтов" на основе объектно-ориентированного подхода. Разработка оконного приложения и описание информационной модели предметной области. Описание разработанных процедур С++ и результатов тестирования приложения.
курсовая работа [355,9 K], добавлен 18.06.2013Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.
контрольная работа [60,1 K], добавлен 17.01.2011Особенности объектно-ориентированного проектирования. Основные понятия объектно-ориентированного подхода. Основы языка UML, варианты его использования. Диаграммы классов и взаимодействия. Разработка диаграммы прецедентов (вариантов использования).
курсовая работа [1,1 M], добавлен 13.05.2014Исследование объектно-ориентированного подхода к проектированию программного обеспечения будильника. Модель программного обеспечения. Взаимодействие между пользователями и системой. Диаграммы и генерация программного кода при помощи средств Rational Rose.
курсовая работа [355,8 K], добавлен 26.09.2014Анализ проблематики построения объектно-ориентированного канала связи. Основные понятия протокола Modbus. Возможности CodeSys для реализации объектно-ориентированного подхода. Разработка методики кроссплатформенной библиотеки для интеграции устройств.
курсовая работа [38,6 K], добавлен 15.06.2013Понятие технологии разработки программного обеспечения и модели жизненного цикла. Сущность объектно-ориентированного подхода. Строительные блоки, общие механизмы языка моделирования UML, диаграммы классов, состояний, взаимодействий и компонентов.
курсовая работа [262,5 K], добавлен 10.07.2014Основные элементы объектной модели. Сущность и преимущества объектно-ориентированного подхода, понятие объекта и класса. Унифицированный язык моделирования UML. Диаграммы классов и взаимодействия: назначение, построение и примеры использования.
реферат [273,2 K], добавлен 09.06.2009Общая характеристика объектно-ориентированного подхода в программировании, его основные свойства и принципы. Разработка программы для автоматизация деятельности кафе на основе объектно-ориентированного подхода, проектирования и реализации схемы данных.
курсовая работа [1,2 M], добавлен 22.01.2012Создание программного обеспечения - системы имитационного моделирования на тему "Производственная линия с пунктами технического контроля". Описание входных и выходных данных. Объектно-ориентированное программирование. Диаграммы модулей и процессов.
курсовая работа [1,2 M], добавлен 09.01.2014Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011Применение объектно-ориентированного программирования для написания нескольких модулей программы. Вычисление алгебраического уравнения методом половинного деления. Применение метода Эйлера в теории численных методов общих дифференциальных уравнений.
курсовая работа [398,1 K], добавлен 26.02.2015Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.
контрольная работа [51,7 K], добавлен 22.01.2013Технологии программирования. Сущность объектно-ориентированного подхода к программированию. Назначение Си, исторические сведения. Алфавит, базовые типы и описание данных. Структуры и объединения. Операторы Си++. Функции. Библиотека времени выполнения.
курс лекций [51,9 K], добавлен 03.10.2008Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014История развития языков программирования; создание и распространение языка С++; новый подход к разработке объектно-ориентированного программного обеспечения. Применение моделирования предметных областей для структуризации их информационных отражений.
реферат [29,1 K], добавлен 06.12.2010Сетевая система контроля знаний студентов на основе объектно-ориентированного подхода. Выбор программно-технических средств для реализации проекта. Алгоритмическое и программное обеспечение, интерфейс пользователя. Разработка элементов базы данных.
дипломная работа [1,3 M], добавлен 04.02.2013Разработать ЭИС электрических сетей с использованием структурного и объектно-ориентированного подхода средствами Rational Rose. Экономический расчет эффективности проекта. Модель экономической информационной системы службы информационных технологий.
дипломная работа [54,2 K], добавлен 06.08.2008Создание программы "Ликероводочный завод" на основе объектно-ориентированного подхода: проектирование иерархии классов и интерфейсов на основе выделенных сущности. Применение принципа инкапсуляции к классам. Тестирование готового программного продукта.
курсовая работа [573,2 K], добавлен 23.06.2012Разработка программного средства для поиска альтернативных решений многокритериальных задач. Проектирование программного средства с помощью объектно-ориентированного подхода. Пример листинга программного кода. Особенности работы программы на примере.
контрольная работа [346,5 K], добавлен 11.06.2011