• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2020/2021

Обеспечение качества и тестирование

Статус: Курс обязательный (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 3-й курс, 1, 2 модуль
Формат изучения: без онлайн-курса
Преподаватели: Кильдишев Денис Степанович, Кулямин Виктор Вячеславович, Татарников Андрей Дмитриевич
Язык: русский
Кредиты: 5
Контактные часы: 60

Программа дисциплины

Аннотация

Курс знакомит слушателей с основными проблемами проверки качества сложных программных систем и современными подходами к их решению на основе тестирования. Рассматриваются различные методы верификации программного обеспечения. Детально изучаются классические техники построения тестов, использующие конечные автоматы и комбинаторные схемы. Также представлены более пригодные для систем реальной сложности подходы к разработке тестов, интегрирующие разнородные методы. Разбираются различные техники организации тестовых наборов, понятие полноты тестирования и различные критерии полноты, рассматриваются формальные модели различного вида и их применение для оценки качества ПО. На практических занятиях анализируются требования к ПО, изучается техника инспекции кода, осваиваются различные техники разработки тестов для простых функций, систем с состояниями и приложений, имеющих пользовательский интерфейс, включая Web-приложения. Слушатели получают базовые знания и навыки в области тестирования и знакомятся с тестированием на основе формальных моделей, динамично развивающейся области на границе между теоретической информатикой и программной инженерией, а также с некоторыми практическими приложениями этого подхода.
Цель освоения дисциплины

Цель освоения дисциплины

  • Владение основными понятиями в области обеспечения качества ПО
  • Знание основных методов моделирования поведения ПО
  • Знание основных методов оценки полноты тестирования ПО
  • Знание целей, задач и основных методов разработки тестов и тестирования ПО
  • Умение проектировать и реализовывать тесты для программ различных типов
  • Умение оценивать полноту тестирования программ различных типов
  • Умение анализировать результаты выполнения тестов
  • Умение применять формальные модели при разработке тестов и оценке их полноты
  • Владение навыками решения типовых задач разработки тестов для ПО
Планируемые результаты обучения

Планируемые результаты обучения

  • Владение основными понятиями в области обеспечения качества ПО
  • Знание основных методов моделирования поведения ПО
  • Знание основных методов оценки полноты тестирования ПО
  • Знание целей, задач и основных методов разработки тестов и тестирования ПО
  • Умение анализировать результаты выполнения тестов
  • Владение навыками решения типовых задач разработки тестов для ПО
  • Умение проектировать и реализовывать тесты для программ различных типов
  • Умение оценивать полноту тестирования программ различных типов
  • Умение применять формальные модели при разработке тестов и оценке их полноты
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Качество программного обеспечения и методы его контроля
    Понятие качества ПО. Характеристики качества, стандарты ISO 9126 и ISO 25010. Требования к ПО. Источники и виды требований. Задачи извлечения и анализа требований. Необходимые свойства требований, стандарты IEEE 830 и IEEE 1233. Ошибки в ПО и их основные причины. Методы обеспечения качества ПО. Методы предотвращения ошибок. Методы контроля качества ПО.
  • Методы верификации ПО
    Классификация методов верификации ПО. Экспертиза. Статический анализ. Динамический анализ. Тестирование и мониторинг. Формальные методы верификации. Дедуктивный анализ. Проверка моделей. Синтетические и гибридные методы верификации. Примеры применения различных методов верификации.
  • Цели и задачи тестирования ПО
    Различные определения тестирования ПО. Тесты и тестовые наборы. Тестируемая система, тестируемая реализация, тестируемый интерфейс. Точки контроля и наблюдения. Роль требований. Модели поведения и модели ситуаций. Характеристики ситуаций. Цели тестирования в рамках жизненного цикла ПО. Задачи разработки тестов. Виды тестирования, аспекты классификации методов тестирования. Модульное, интеграционное и системное тестирование.
  • Организация тестовых наборов
    Тестовые варианты. 4-х шаговая структура тестового варианта. Основные паттерны организации тестовых наборов. Квалификаторы тестов. Связи между тестами и другими артефактами разработки. Основные модули тестовых наборов. Тестовые заглушки. Тестовые оракулы. Способы построения оракулов. Виды инструментов разработки тестов и тестирования. Семейство инструментов xUnit.
  • Модели поведения ПО
    Логико-алгебраические и исполнимые модели. Модальные и временные логики. Абстрактные типы данных. Исчисления процессов. Конечные автоматы. Расширенные конечные автоматы. Системы размеченных переходов. Использование разных видов моделей для описания функциональности.
  • Модели ситуаций и критерии полноты тестирования
    Способы описания моделей ситуаций. Критерии полноты и критерии покрытия. Доменные, функциональные, структурные и проблемные критерии полноты. Использование графов, грамматик и логических выражений для построения критериев полноты тестирования. Типовые критерии покрытия кода: покрытие инструкций, ветвлений, покрытие потоков данных, покрытие условий, комбинаций условий, модифицированное покрытие условий и ветвлений (MC/DC). Критерии покрытия на интеграционном и системном уровнях.
  • Основные методы построения тестов. Вероятностные и нацеленные методы
    Вероятностные, нацеленные и комбинаторные методы тестирования. Области применимости и характеристики различных методов. Вероятностные методы. Распределение рисков. Марковские цепи. Нацеленные методы. Техники выбора экстремальных значений. Доменное тестирование. Тестирование с помощью сценариев. Часто встречающиеся ошибки для различных типов данных.
  • Комбинаторные методы построения тестов
    Основные комбинаторные техники построения тестов. Построение дерева классификации. Использование грамматик. Покрывающие наборы. Алгоритмы построения однородных покрывающих наборов. Жадный алгоритм построения покрывающих наборов.
  • Автоматные методы построения тестов
    Задача построения набора тестов для проверки соответствия конечному автомату. Методы построения тестов для конечных полных детерминированных автоматов. Различающие и UIO-последовательности. Покрывающее множество последовательностей. Характеризующее множество последовательностей. D-метод. W-метод. Wp-метод. Построение тестов для расширенных и недетерминированных автоматов. Различные виды соответствия реализации и спецификации.
  • Интегрированные технологии построения тестов
    Элементы технологии UniTESK. Использование программных контрактов для описания поведения. Редукция автомата по критерию полноты. Описание асинхронного поведения. Семантика чередования. Тестирование систем с внутренним параллелизмом и асинхронными событиями.
Элементы контроля

Элементы контроля

  • неблокирующий Работа на семинаре (РС1)
  • неблокирующий Домашнее задание 1 (ДЗ1)
  • неблокирующий Домашнее задание 2 (ДЗ2)
  • неблокирующий Домашнее задание 3 (ДЗ3)
  • неблокирующий Домашнее задание 4 (ДЗ4)
  • неблокирующий Домашнее задание 5 (ДЗ5)
  • неблокирующий Домашнее задание 6 (ДЗ6)
  • неблокирующий Домашнее задание 7 (ДЗ7)
  • неблокирующий Контрольная работа (КР1)
  • неблокирующий Экзамен (Э1)
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (2 модуль)
    Прак = Округление((1/8)*РС1+(1/8)*ДЗ1+(1/8)*ДЗ2+(1/8)*ДЗ3+(1/8)*ДЗ4+(1/8)*ДЗ5+(1/8)*ДЗ6+(1/8)*ДЗ7) Окончательная оценка = Округление((1/2)*Прак+(1/4)*КР1+(1/4)*Э1)
Список литературы

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

Рекомендуемая основная литература

  • Black, R. (2011). Pragmatic Software Testing : Becoming an Effective and Efficient Test Professional. Chichester: Wiley. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=364274

Рекомендуемая дополнительная литература

  • A. Brakarenka S., & А. Бракоренко С. (2015). Testing and Quality Assurance of Software and Hardware Systems Based on Use of Virtual Technological Objects ; Тестирование И Обеспечение Качества Программно-Технических Комплексов На Основе Использования Виртуальных Технологических Объектов. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.800B9519
  • Mili, A. (2015). Software Testing : Concepts and Operations. Hoboken, New Jersey: Wiley. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=995369