home Преподавание Информационных Технологий в России
Открытая всероссийская конференция

АПКИТ
Конференция

Информационное сообщение

Место проведения

Программа конференции

Участники

Фоторепортаж

Программный комитет

Программный комитет

Спонсоры
Информ. спонсоры
Орг. поддержка

ЛАНИТ-ТЕРКОМ

Нижегородский госуниверситет им. Н.И. Лобачевского

ОСОБЕННОСТИ ОРГАНИЗАЦИИ ПРАКТИЧЕСКОЙ ЧАСТИ УЧЕБНОГО КУРСА "ВЕРИФИКАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ"

Синицын Сергей Владимирович (sinitzyn@cyber.mephi.ru)
к.т.н., доцент, заведующий кафедрой "Кибернетика"
Рябов Виталий Андреевич (vriabov@cyber.mephi.ru)
инженер
Несвижский Александр Игоревич (svejik@gmail.com)
инженер
Московский инженерно-физический институт (государственный университет)

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

Введение

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

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

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

Создание курса

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

Учебное пособие "Верификация программного обеспечения" [1] представляет те знания и опыт, которые были накоплены кафедрой в области программной инженерии за последние 30 лет. Оно было создано при поддержке корпорации Microsoft и входит в программу обучения Интернет-университета информационных технологий (ИНТУИТ). Книга основана на реальных технологиях и технологических процессах верификации, применяющихся в настоящее время в авиационной промышленности, при разработке и анализе комплексов обеспечения информационной безопасности, при разработке высокоустойчивых прикладных систем. При изложении сочетается фундаментальный подход к вопросам верификации и использование современных инструментальных средств.

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

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

Учебный пример

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

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

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

  1. Модуль математических функций - в него включены такие функции как сложение, умножение и др.
  2. Модуль анализа и вычисления выражений - это модуль, который занимается главной задачей системы "Калькулятор". Разбор и компиляция выражений - вот основные функции этого модуля. Непосредственные вычисления этот модуль не проводит, а лишь вызывает функции из математического модуля.
  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 года успешно работает при подготовке кадров для ВП БАРС и проведении учебного курса для пятого курса кафедры "Кибернетика" МИФИ.

Литература

  1. Синицын С.В., Налютин Н.Ю. Верификация программного обеспечения: Учебное пособие. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2008. - 368 с
  2. Троелсен. Э. С# и платформа .NET. Библиотека программиста - СПб.: Питер. 2006. - 796 с.: ил.
 

В начало :: О конференции :: Программа :: Доклады :: Контакты

Техническая поддержка сайта:
Copyright © АП КИТ, 2005
hosted by TERCOM
webmasters: perez&helga