ОСОБЕННОСТИ ОРГАНИЗАЦИИ ПРАКТИЧЕСКОЙ ЧАСТИ УЧЕБНОГО КУРСА "ВЕРИФИКАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ"
Синицын Сергей Владимирович (sinitzyn@cyber.mephi.ru)
к.т.н., доцент, заведующий кафедрой "Кибернетика"
Рябов Виталий Андреевич (vriabov@cyber.mephi.ru)
инженер
Несвижский Александр Игоревич (svejik@gmail.com)
инженер
Московский инженерно-физический институт (государственный университет)
Аннотация Рассматривается специфика организации практических занятий учебного курса "Верификация программного обеспечения", преподаваемом на факультете "Кибернетика" МИФИ, а также рассматриваются особенности учебного примера "Калькулятор", являющегося инструментальной поддержкой курса.
Введение
В течение долгого времени основной целью ИТ-компаний в России была реализация проекта в сроки, уложившись в бюджет. Постепенно ситуация стала меняться. Теперь для успешной конкуренции на рынке необходимо разрабатывать качественное программное обеспечение. Одной из гарантий такого качества является внедрение в процесс разработки продуманного и управляемого процесса тестирования и верификации.
Существует множество подходов и инструментальных средств для тестирования и верификации программного обеспечения, но нет общих рекомендаций и обучающих примеров для их изучения. Вследствие чего, молодые программисты не получают необходимых знаний и опыта. Именно поэтому сейчас ощущается острая нехватка квалифицированных специалистов в данной области.
Для того чтобы решить проблему нехватки подобных специалистов, необходимо разработать учебный курс, который на достаточно простом примере продемонстрирует различные подходы к верификации программного обеспечения, и внедрить его в процесс обучения.
Создание курса
Опыт проведения учебных курсов, связанных с программной инженерией, преподавателями кафедры "Кибернетика" позволил разработать методику проведения учебного курса "Верификация и сертификация программного обеспечения".
Учебное пособие "Верификация программного обеспечения" [1] представляет те знания и опыт, которые были накоплены кафедрой в области программной инженерии за последние 30 лет. Оно было создано при поддержке корпорации Microsoft и входит в программу обучения Интернет-университета информационных технологий (ИНТУИТ). Книга основана на реальных технологиях и технологических процессах верификации, применяющихся в настоящее время в авиационной промышленности, при разработке и анализе комплексов обеспечения информационной безопасности, при разработке высокоустойчивых прикладных систем. При изложении сочетается фундаментальный подход к вопросам верификации и использование современных инструментальных средств.
Студентам пятого курса кафедры "Кибернетика" читается обобщающий учебный курс "Верификация и сертификация программного обеспечения", который помимо верификации затрагивает вопросы, связанные с жизненным циклом систем повышенной надежности и сертифицируемого программного обеспечения. В ходе практических занятий студенты получают опыт работы с инструментарием разработки и верификации реальных сертифицируемых программных систем.
Московское предприятие ДС "БАРС", работающее в области разработки авиационного бортового программного обеспечения и долгие годы сотрудничающее с кафедрой, заинтересовано в подготовке кадров. Студенты, получавшие подготовку в области верификации в течение практически всего периода обучения, с меньшими проблемами вовлекаются в реальную деятельность предприятия и более востребованы.
Учебный пример
Для того чтобы студенты могли на практике увидеть принципы тестирования и верификации, был разработан специальный учебный пример - программный комплекс для инструментальной поддержки курса "Верификация программного обеспечения".
В качестве тестируемого объекта был выбран программный комплекс "Калькулятор", который реализует простейшие математические функции для работы с целыми числами. Однако, в отличие от стандартных калькуляторов, реализованный программный комплекс обрабатывает различные арифметические выражения, состоящие из множества операторов и скобок.
В архитектуре системы "Калькулятор" выделено 3 модуля. Каждый из модулей занимается определенной задачей. Соответственно, вся система - это взаимодействие этих 3-х модулей. Разбиение программного комплекса на модули вытекает из различной функциональности этих модулей. Рассмотрим их:
- Модуль математических функций - в него включены такие функции как сложение, умножение и др.
- Модуль анализа и вычисления выражений - это модуль, который занимается главной задачей системы "Калькулятор". Разбор и компиляция выражений - вот основные функции этого модуля. Непосредственные вычисления этот модуль не проводит, а лишь вызывает функции из математического модуля.
- Модуль графического интерфейса - обеспечивает управление системы в графической форме. Основные функции этого модуля - ввод и вывод данных.
Передать данные в "Калькулятор" можно двумя способами: либо через графический модуль, либо через командную строку. Все необходимые данные в любом объеме можно передавать программному комплексу через консоль.
В любом случае, после передачи выражения "Калькулятору", начинает работу модуль анализа и вычислений, который по мере необходимости использует модуль математики, для вычисления арифметических функций. После окончания работы модуля анализа и вычислений, на выход передается результат.
Система "Калькулятор" является очень показательным учебным примером для тестирования. Это связано с его свойствами:
- "Калькулятор" состоит из набора взаимодействующих модулей. Исходя из этого, на данном примере можно проводиться модульное и интеграционное тестирование. При этом появляется возможность создания нетривиального тестового окружения для тестируемого объекта, например, написание заглушек для различных модулей;
- "Калькулятор" имеет графический пользовательский интерфейс. Исходя из этого, на данном примере можно познакомиться с ручным тестированием и тестированием пользовательского интерфейса;
- "Калькулятор" работает через консоль. Это позволит проводить обучение нагрузочному тестированию;
- "Калькулятор" проводит математические вычисления. Это позволит продемонстрировать составление классов эквивалентности;
- Для того чтобы исключить проблемы с округлением чисел, "Калькулятор" работает только с целыми числами;
- "Калькулятор" содержит умышленно внесенные в него ошибки и несоответствия требованиям. Таким образом, обучаемые должны будут выявить эти несоответствия.
Программный комплекс "Калькулятор" разработан на платформе Microsoft .NET 2.0 на языке программирования C# 2.0. Это позволяет эффективно применять инструментальные средства компании Microsoft в учебных целях для тестирования комплекса "Калькулятор".
В состав Microsoft Visual Studio 2005 Team System (MVSTE) входит Microsoft Visual Studio 2005 Team Edition for Software Testers [2]. Это издание предназначено как для разработчиков, так и для тестировщиков программного обеспечения. Оно содержит все, что необходимо для тщательного и всестороннего тестирования продукта, в том числе для анализа покрытия кода, тестирования качества продукта и его нагрузочного тестирования.
MVSTE for Software Testers содержит следующие инструменты для тестирования:
- Manual Testing (ручное тестирование);
- Web Testing (функция веб-тестирования);
- Unit Testing (модульное тестирование);
- Code Coverage (анализ покрытия кода);
- Ordered Testing (упорядоченное тестирование);
- средства управления тестированием, позволяющие составлять тесты, выполнять их и централизованно отслеживать данный процесс.
Методика
Для проведения учебного курса "Верификация программного обеспечения" выбрана очная форма обучения с лекционными, семинарскими и лабораторными занятиями.
Лекции направлены на изложение комплексного взгляда на процесс верификации программного обеспечения. Предметом обсуждения являются различные подходы и методы, применяемые в области верификации и, в частности, тестирование программного обеспечения.
Целью семинарских занятий является закрепление лекционного материала путем демонстрации на одном сквозном примере подходов к тестированию и верификации программного обеспечения. Средой для тестирования является среда разработки MVSTE, предоставляющая набор средств автоматизации и управления процессом тестирования.
Лабораторные работы направлены на проверку изученного на лекционных и семинарских занятиях материала.
Рассмотрим подробнее структуру семинарских занятий. По большей своей части занятия состоят из:
- теста, на котором будет проверяться усвоение пройденного материала обучаемым (под тестом в данном случае понимается список контрольных вопросов с вариантами ответов, среди которых нужно выбрать верные) - 10 минут;
- проверки и обсуждения домашнего задания - 20 минут;
- теоретического вступления по подходу к тестированию - 20 мин;
- демонстрации применения этого подхода на примере программного комплекса средствами MVSTE - 20 минут;
- выдачи домашнего задания с пояснениями его сути - 10 минут.
Таким образом, занятие рассчитано на два академических часа или одну учебную пару. Подобная структура семинарского занятия позволяет обучаемому хорошо воспринимать учебный материал.
Содержательная часть семинарских занятий следующая:
- в начале курса проводится общий обзор тестирования и верификации ПО и знакомство с обучающим примером "Калькулятор";
- далее обучаемым выдается спецификация требований на "Калькулятор", содержащая противоречия, ошибки и являющаяся неполной, после чего они выявляют все находящиеся в ней изъяны;
- далее проводится знакомство с методами ручного тестирования в среде разработки MVSTE;
- затем рассматриваются основные принципы модульного тестирования и инструментальные средства MVSTE для их проведения;
- в середине курса проводится контрольная работа, на основании результатов которой проводится формальная инспекция написанных студентами тестов;
- после этого производится переход от функционального к структурному тестированию и рассказывается о понятии покрытий кода;
- следующей темой является интеграционное тестирование;
- в завершении курса проводится семинар, на котором рассказывается о роли и обязанностях тестировщика в команде разработчиков программных продуктов.
Таким образом, на достаточно простом учебном примере "Калькулятор" изучаются основные принципы тестирования и верификации программного обеспечения: начиная от инспекций требований и заканчивая написанием тестов для конкретных методов системы "Калькулятор".
Подобная структура практических занятий для учебного курса "Верификация программного обеспечения" уже 2 года успешно работает при подготовке кадров для ВП БАРС и проведении учебного курса для пятого курса кафедры "Кибернетика" МИФИ.
Литература
- Синицын С.В., Налютин Н.Ю. Верификация программного обеспечения: Учебное пособие. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2008. - 368 с
- Троелсен. Э. С# и платформа .NET. Библиотека программиста - СПб.: Питер. 2006. - 796 с.: ил.
|