Смекни!
smekni.com

работа (стр. 1 из 3)

Курсовая работа

Исследование ВОЗМОЖНОСТЕЙ

GRID-технологии применительно к

задаче Тестирования программного

обеспечения.

Савенко Дмитрий Валерьевич

Научный руководитель

Иртегов Д.В.

Новосибирск – 2006


Содержание

Введение.. 3

Что такое GRID и как его можно использовать для задачи тестирования ПО.. 5

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

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

Дальнейшее развитие проекта.. 11

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

Список литературы... 15


Введение

Актуальность.

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

Цели и задачи.

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

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

Были найдены несколько утилит, в той или иной степени облегчающих тестирование приложений на нескольких компьютерах (например, IBM Rational TestAgent [4]), но в них речь не идет о распределенном тестировании, это всего лишь фреймворки, облегчающие запуск и контроль выполнения программ на разных машинах. Регистрация новых машин — долгий и утомительный процесс, программное обеспечение везде должно быть идентичным, распределение задач на конкретные машины делается самим пользователем — вот неполный список недостатков найденных решений, которые не позволяют назвать их системами распределенного тестирования приложений в полном смысле слова.

Что было сделано.

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

2. Проведен детальный анализ платформ для реализации GRID-приложений, а также самих GRID-приложений с целью выявить достоинства и недостатки каждой платформы и выбрать ту, которая более всего подходит для нашего проекта. Результаты анализа платформ с комментариями по поводу их применимости в проекте можно найти на сайте проекта. Для создания прототипа системы было решено остановиться на платформе BOINC [3] как наиболее простой в эксплуатации.

3. Написано техническое задание для прототипа системы (доступно на сайте проекта).

4. Написаны все основные компоненты, необходимые для функционирования системы.

5. Собран прототип системы.

6. Разработан веб-интерфейс системы.

7. Проведено тестирование прототипа системы и веб-интерфейса на базе терминального класса лаборатории SWsoft-НГУ.

8. Создан установочный пакет для сервера системы (в формате Debian GNU/Linux).

9. Проведено тестирование установочного пакета.

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

Дальнейшее развитие проекта.

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

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

Что такое GRID и как его можно использовать для задачи тестирования ПО

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

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

Для более подробной информации о GRID см. [1].

Подходы к реализации. На данный момент существуют две лидирующие универсальные платформы для создания GRID-систем — Globus [2] и BOINC [3]. Краткие обзоры систем с комментариями применительно к нашим задачам доступны на сайте проекта ([5]).

После обсуждения всех «за» и «против» было решено прототип системы делать на основе инструментария BOINC (Berkeley Open Infrastructure for Network Computing), как наиболее простого для освоения. BOINC — это некая заготовка приложения, которая для превращения в действительное приложение должна быть дополнена следующими компонентами: определенная система поступления новых данных для задачи, два серверных демона (ассимилятор и валидатор, подробнее в разделе «Результаты работы») и клиентская часть — то, что будет рассылаться на пользовательские машины, а затем принимать от сервера порции данных, обрабатывать и возвращать серверу ответ. Как видно, BOINC также концентрируется на математических расчетах больших задач, данные которых можно разделить на малые порции (например, обсчет сигналов разных звезд, расшифровка генома человека и т.д.). Наше приложение не является типичным BOINC-приложением, так как по сети передается не просто данные, но код, которые должен быть исполнен. Это повлекло за собой некоторые изменения стандартной архитектуры приложения BOINC, которые описаны в разделе «Результаты работы».

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

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

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

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

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

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

Клиент — программа или совокупность программ, запускаемая на компьютере пользователя и позволяющая включить его компьютер в GRID-сеть.

Компонент — объект тестирования. Фактически он может быть многими разными сущностями, например: библиотекой классов Java в jar-файле, dll-библиотекой, набором исходных файлов библиотеки на С++ и т.д.

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