Предисловие…………………………………………………………………………………………….. 9
Введение………………………………………………………………………………………………… 11
Глава 1. Agile-разработка программного обеспечения……………………………. 15
Agile-манифест……………………………………………………………………………………………………………………………. 16
Идеи Agile-манифеста………………………………………………………………………………………………………… 16
Люди и взаимодействие важнее процессов и инструментов…………………………………. 16
Работающий продукт важнее исчерпывающей документации……………………………. 18
Сотрудничество с заказчиком важнее согласования условий контракта…………… 20
Готовность к изменениям важнее следования первоначальному плану……………… 20
Основополагающие принципы Agile-манифеста…………………………………………………………….. 21
Суть Agile-разработки……………………………………………………………………………………………………………….. 23
Адаптивность, а не планирование……………………………………………………………………………………. 24
Ориентированность на людей, а не на процесс………………………………………………………………. 25
Концепции Agile………………………………………………………………………………………………………………….. 25
Уровни Agile………………………………………………………………………………………………………………………… 26
Модели разработки программного обеспечения……………………………………………………………………. 28
Традиционное/классическое проектирование………………………………………………………………………… 29
Каскадная модель………………………………………………………………………………………………………………. 29
V-модель……………………………………………………………………………………………………………………………… 31
W-модель…………………………………………………………………………………………………………………………….. 32
Спиральная модель……………………………………………………………………………………………………………. 33
Инкрементальная модель………………………………………………………………………………………………….. 33
Итеративная модель…………………………………………………………………………………………………………… 34
Ведущие методологии Agile-разработки…………………………………………………………………………………. 36
Scrum…………………………………………………………………………………………………………………………………… 37
Scrum-роли………………………………………………………………………………………………………………… 38
Scrum-встречи……………………………………………………………………………………………………………. 40
Scrum-артефакты………………………………………………………………………………………………………. 41
Спринт……………………………………………………………………………………………………………………….. 44
Kanban………………………………………………………………………………………………………………………………… 45
Принципы управления изменениями……………………………………………………………………….. 45
Принципы предоставления услуг……………………………………………………………………………. 46
Практические шаги Kanban……………………………………………………………………………………… 47
Дополнительные Agile-фреймворки………………………………………………………………………………….. 48
Экстремальное программирование…………………………………………………………………………. 49
Разработка, управляемая функциональностью……………………………………………………… 50
Адаптивная разработка……………………………………………………………………………………………. 50
Crystal…………………………………………………………………………………………………………………………. 51
Масштабирование Agile……………………………………………………………………………………………………………. 51
Масштабированный Scrum……………………………………………………………………………………………….. 51
Текучая технология масштабирования……………………………………………………………………………. 52
Развернутый Agile-фреймворк…………………………………………………………………………………………… 53
Тестирование в Agile-разработках…………………………………………………………………………………………… 54
Глава 2. Бизнес-кейс: финансовая биржа………………………………………………. 56
Архитектура программного обеспечения биржи……………………………………………………………………. 56
Организация тестирования……………………………………………………………………………………………………….. 62
Тестовые системы и данные……………………………………………………………………………………………… 62
Организация Agile-команд…………………………………………………………………………………………………. 62
Глава 3. Организация…………………………………………………………………………….. 65
Структуры управления……………………………………………………………………………………………………………… 65
Линейно-функциональная структура управления………………………………………………………….. 66
Матричная структура управления…………………………………………………………………………………… 66
Встраивание Agile в структуру управления…………………………………………………………………………….. 67
Глава 4. Процессы…………………………………………………………………………………. 69
Адаптация Agile-процессов……………………………………………………………………………………………………….. 69
Процесс обучения и освоения: Shu-Ha-Ri (сю-ха-ри)…………………………………………………………….. 70
Процесс непрерывного улучшения: Kaizen (кайдзен)…………………………………………………………….. 71
Работа в спринте………………………………………………………………………………………………………………………… 72
Управление релизами………………………………………………………………………………………………………………… 73
Поддержка тестового обеспечения………………………………………………………………………………………….. 74
Проблемы и опасности……………………………………………………………………………………………………………… 75
Глава 5. Структура тестирования…………………………………………………………… 78
Объекты или уровни тестирования………………………………………………………………………………………….. 78
Модульное тестирование………………………………………………………………………………………………….. 79
Компонентное тестирование…………………………………………………………………………………………….. 80
Интеграционное тестирование…………………………………………………………………………………………. 81
Системное тестирование…………………………………………………………………………………………………… 81
Сквозное тестирование……………………………………………………………………………………………………… 82
Пользовательское тестирование: программный продукт и пользовательские интерфейсы 83
Категории тестирования…………………………………………………………………………………………………………… 83
Функциональное тестирование………………………………………………………………………………………… 84
Тестирование функциональности……………………………………………………………………………. 85
Аттестационное тестирование………………………………………………………………………………… 85
Нефункциональное тестирование…………………………………………………………………………………….. 85
Тестирование производительности…………………………………………………………………………. 86
Тестирование безопасности…………………………………………………………………………………….. 87
Дополнительные аспекты нефункционального тестирования……………………………… 88
Регрессионное тестирование…………………………………………………………………………………………….. 89
Приемочное тестирование………………………………………………………………………………………………… 90
Дымовое тестирование…………………………………………………………………………………………….. 91
Проверочное тестирование……………………………………………………………………………………… 91
Виды приемочного тестирования……………………………………………………………………………. 91
Техники тестирования……………………………………………………………………………………………………………….. 91
Структурные аспекты тестирования………………………………………………………………………………… 91
Метод черного ящика……………………………………………………………………………………………….. 91
Метод белого ящика…………………………………………………………………………………………………. 92
Метод серого ящика…………………………………………………………………………………………………. 92
Разработка через тестирование………………………………………………………………………………………… 92
Разработка через поведение……………………………………………………………………………………………… 93
Тестирование на основе моделирования…………………………………………………………………………. 94
Тестирование на основе данных………………………………………………………………………………………. 95
Техники формирования тест-кейсов и тестовых данных……………………………………………….. 96
Автоматизированное тестирование…………………………………………………………………………………. 97
Встраивание автоматизированных тестов в разработку продукта…………………….. 98
Некоторые аспекты автоматизированного тестирования…………………………………….. 99
Техники тестирования, основанные на опыте………………………………………………………………. 102
Эксплораторное тестирование……………………………………………………………………………… 102
Тестирование на основе сессий…………………………………………………………………………….. 104
Специальное тестирование……………………………………………………………………………………. 104
Внесение ошибок……………………………………………………………………………………………………………… 105
Мутационное тестирование…………………………………………………………………………………… 106
Модульная интеграция……………………………………………………………………………………………………. 106
Тестирование при интеграции на основе «большого взрыва»……………………………. 106
Инкрементальное тестирование……………………………………………………………………………. 107
Инструменты тестирования…………………………………………………………………………………………….. 107