Качество ПО и методы его контроля, Верификация и валидация, основные методы верификации. Требования к ПО, их роль в оценке качества. Определение тестирования, используемое в курсе, и его сравнение с другими методами контроля качества ПО. Виды тестирования.
Основные задачи тестирования. Проблемы создания оракула, оценки и обеспечения полноты тестов. Анализ результатов тестирования. Управление наборами тестов и повторное использование тестов. Техники организации тестовых наборов, используемые при этом образцы и виды компонентов.
Критерии полноты тестирования. Функциональные и структурные критерии. Покрытие потока управления - инструкций, ветвей, комбинаций логических условий. Покрытие потока данных - пары определение-использование. Покрытие сценариев взаимодействия. Покрытие входных данных. Покрытие правил. Доменное тестирование.
Модели, используемые при тестировании. Основные виды моделей.
Методы построения тестов. Вероятностные техники построения тестов. Нацеленные методы построения тестов. Техники статико-динамического анализа.
Комбинаторные техники построения тестов. Тестирование на основе грамматик. Покрывающие наборы. Последовательности де Бройна.
Автоматные модели. Виды автоматов и систем переходов. Различные способы идентификации состояний конечного автомата. Методы построения тестов на основе автоматных моделей - W, D, UIO, Wp-методы. Минимизация тестовых наборов. Автоматные модели распределенных систем.
Интегрированные подходы. Элементы технологии UniTESK. Программные контракты. Уточнение и формализация требований. Построение сценария теста на основе требований и заданного критерия полноты тестирования. Архитектура тестового набора UniTESK. Организация тестирования распределенных систем. Семантика чередования. Событийные контракты.