Программа курса:
Тема 1. Предисловие
Определения
- Зачем нужны базовые определения
- Что такое “тестирование компьютерных программ”?
- Что такое “качество”?
- QA, QC, тестирование
- Баг, ошибка, дефект, сбой
Классификации
- Характеристики качества
- Уровни тестирования (модульное, интеграционное, системное)
- Черное и белое
- Цели тестирования
Тема 2. Тестирование “без техник” (на самом деле нет)
Псевдотехники (quicktests)
- Цель: знакомство с программой и очевидные баги
- Средство: сценарии использования
Структура программы
- Логическая (цели пользователей, функции программы)
- Физическая (входы, выходы, взаимодействующие части)
Представление результатов
- Что является результатом?
- Найденные баги
- Выполненные тесты
- Почему выбраны именно эти тесты?
Тема 3. “Делай раз, делай два, делай три”
Техники тестирования
- Цепочки действий (сценарии)
- Полный перебор
- Классы эквивалентности
- Позитивные и негативные тесты
- Границы
- Комбинирование параметров
Тема 4. Применение техник в более сложных условиях. Разбиение на области
Разбиение на области (классы эквивалентности)
- Разбиение на области входных данных
- Разбиение на области выходных данных
- Разбиение на области внутреннего состояния
- Проблема выбора представителей
- Границы, типы границ, переход границ
Тема 5. Применение техник в более сложных условиях. Комбинаторика
Техники, ориентированные на данные
- Полный и частичный перебор
- Случайные комбинации
- Неслучайные (особые) комбинации
- Комбинирование позитивных и негативных данных
- Учет зависимостей: деревья и таблицы решений
- Комбинации малой размерности (pairwise и другие)
Тема 6. Применение техник в более сложных условиях. Сценарии
Техники, ориентированные на сценарии
- Правила выделения "атомарных" функций (шагов сценария)
- Комбинаторные цепочки, построение коротких простых сценариев
- Диаграммы состояний и переходов, построение длинных сценариев
- Другие источники сценариев
- Комбинирование сценариев и тестовых данных
Тема 7. Оракулы и баги
Прошёл тест или нет?
- Источники оракулов
- Что делать, если прошёл?
- Что делать, если не прошёл?
- Что делать, если непонятно, прошёл или нет?
Представление результатов
- С простых тестов начинать или со сложных?
Как описать все придуманные тесты?
- Несколько итераций тестирования
Тема 8. Модели и реальный мир
Так все же, почему техники работают?
Смысл применения техник
- Эффективность (гипотезы об ошибках)
- Воспроизводимость (повторяемость)
- Экономичность (минимальность)
- Эвристический характер
Виды моделей, используемых в тестировании
- Модель поведения программы
- Модель поведения пользователя
- Модель ошибок разработчика
- Модель рисков
- Связь техник с моделями
Представление результатов
- Модели, идеи и конкретные тесты
Тема 9. Возможно ли полное тестирование?
Общая теория тестирования
- Что такое тестирование?
- Критерии качества информации
- Управляемый эксперимент
- Эвристики
Полнота
- Покрытие приложения
- Покрытие требований
- Покрытие моделей (полнота по построению и отдельная модель покрытия)
- "Лоскутное одеяло"
- Какую полноту обеспечивают техники?
Неполнота
- Верификация, индуктивизм (подтверждающие эксперименты)
- Фальсификационизм (опровергающие эксперименты)
- Альтернативные теории как источник новых экспериментов
Представление результатов
- "Доказательство" полноты
- Объяснение неполноты
- Обоснование приоритетов
- Оценка качества тестов
Тема 10: Ещё раз обо всём с самого начала
Стратегия тестирования продукта
- Выявление целей тестирования
- Простые тесты (quicktests), исследование продукта
- Тестирование методом свободного поиска
- Использование техник для систематического тестирования
- Оценка полноты тестирования
- Анализ рисков как источник информации для тестов
- Особенности проектирования тестов для автоматизации
Представление результатов тестирования
- Регрессионное тестирование и новые тесты
- Борьба с дублированием тестов