Книга посвящена тестированию программного обеспечения в рамках технологии Agile. Рассматриваются основные аспекты Agile-тестирования: методология, организация, процессы, категории и техники тестирования, инфраструктура, тестовое обеспечение, контроль качества данных. Отдельные главы посвящены психологии Agile-тестирования и особенностям работы тестировщика в Agile-команде.
Для тестировщиков ПО, руководителей проектов
КНИГА ОХВАТЫВАЕТ ВСЕ ОСНОВНЫЕ АСПЕКТЫ AGILE-ТЕСТИРОВАНИЯ
Тестирование — важнейшая часть разработки программного обеспечения, в том числе и с использованием Agile-технологии.
Книга охватывает все основные аспекты Agile-тестирования: методологию, организацию, процессы, категории и техники тестирования, инфраструктуру, тестовое обеспечение, контроль качества данных, а также психологические аспекты работы тестировщика в Agile-команде.
Обычно Agile-разработка не вызывает сложностей, если речь идет об относительно небольшом проекте. Однако картина меняется, когда разрабатываемая система состоит из многих компонентов, объединенных сложной системой связей, когда над ней трудится несколько независимых команд. Именно на таких проектах и сделан основной акцент в книге. На ее страницах подробно рассматриваются как теоретические, так и практические аспекты Agile-тестирования. Книга предназначена в первую очередь для профессионалов – тестировщиков и руководителей проектов, однако она будет полезна и начинающим специалистам.
Книгу “Искусство Agile-тестирования” можно купить со скидкой в интернет-магазине издательства “БХВ“.
Предисловие…………………………………………………………………………………………….. 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
Глава 6. Инфраструктура……………………………………………………………………… 109
Тестовая среда…………………………………………………………………………………………………………………………. 109
Тестовые данные……………………………………………………………………………………………………………………… 110
Глава 7. Agile-тестирование………………………………………………………………….. 112
Тест-квадранты………………………………………………………………………………………………………………………… 113
Квадрант КТ. Технические тесты, поддерживающие разработчиков………………………… 113
Тестирование модулей…………………………………………………………………………………………… 114
Компонентное тестирование…………………………………………………………………………………. 115
Квадрант КБ. Тесты, поддерживающие разработчиков и ориентированные на бизнес 116
Интеграционное тестирование………………………………………………………………………………. 118
Приемочные тесты для компонентов…………………………………………………………………….. 119
Функциональное тестирование системы………………………………………………………………. 119
Квадрант ПБ. Тесты, ориентированные на бизнес, поддерживающие продукт………… 120
Тестирование пользовательских сценариев…………………………………………………………. 121
Тестирование пригодности и удобства………………………………………………………………… 121
Пользовательское тестирование……………………………………………………………………………. 122
Квадрант ПТ. Технические тесты, поддерживающие продукт……………………………………. 123
Унаследованные системы……………………………………………………………………………………………………….. 124
Глава 8. Тестировщик………………………………………………………………………….. 127
Принципы успешной работы тестировщиков……………………………………………………………………….. 128
Постоянная обратная связь…………………………………………………………………………………………….. 128
Стремление принести пользу заказчику………………………………………………………………………… 129
Непосредственное личное общение……………………………………………………………………………….. 129
Смелость…………………………………………………………………………………………………………………………… 129
Сохранение вещей простыми………………………………………………………………………………………….. 130
Постоянное усовершенствование…………………………………………………………………………………… 130
Восприятие изменений…………………………………………………………………………………………………….. 131
Самоорганизация…………………………………………………………………………………………………………….. 131
Фокус на людях………………………………………………………………………………………………………………… 132
Радость от работы……………………………………………………………………………………………………………. 132
Глава 9. Тестовое обеспечение……………………………………………………………… 133
Планирование тестирования………………………………………………………………………………………………….. 134
Эпики…………………………………………………………………………………………………………………………………. 134
Истории…………………………………………………………………………………………………………………………….. 134
Стратегия тестирования………………………………………………………………………………………………….. 135
План тестирования…………………………………………………………………………………………………………… 138
Тест-спецификации и тест-кейсы……………………………………………………………………………………. 139
Пакеты тестов…………………………………………………………………………………………………………………………… 141
Метрики……………………………………………………………………………………………………………………………………. 142
Контроль над дефектами………………………………………………………………………………………………………… 145
Управление исходным кодом…………………………………………………………………………………………………. 146
Интегрированная среда разработки………………………………………………………………………………………. 147
Глава 10. Качество тестовых данных…………………………………………………… 148
Традиционный подход к оценке качества данных……………………………………………………………….. 148
Внутренняя категория……………………………………………………………………………………………………… 150
Контекстная категория……………………………………………………………………………………………………. 151
Категория представления данных………………………………………………………………………………….. 152
Категория доступа…………………………………………………………………………………………………………… 153
Пригодность к использованию как обобщенный показатель качества тестовых данных.. 153
Требования к метрике качества данных………………………………………………………………………… 154
Обобщенный детерминант качества тестовых данных……………………………………………….. 156
Коэффициент покрытия тест-кейса……………………………………………………………………….. 157
Вес тест-кейса…………………………………………………………………………………………………………. 157
Глава 11. Психология Agile-тестирования……………………………………………. 160
Психологические вызовы работы в Agile……………………………………………………………………………….. 162
Психологические вызовы Agile-разработки…………………………………………………………………… 163
Психологические вызовы тестировщика……………………………………………………………………….. 163
Роль психологической безопасности……………………………………………………………………………… 165
Agile-команда……………………………………………………………………………………………………………………………. 166
Согласованность и координация в команде………………………………………………………………….. 167
Развитие команды…………………………………………………………………………………………………………….. 167
Постоянное совершенствование команды…………………………………………………………………….. 169
Психологические стили коллег и как с ними обходиться…………………………………………….. 169
Нарциссический стиль……………………………………………………………………………………………. 171
Добросовестный стиль…………………………………………………………………………………………… 173
Психопатический стиль………………………………………………………………………………………….. 173
Манипулятивный стиль………………………………………………………………………………………….. 174
Драматический стиль……………………………………………………………………………………………… 175
Лживый стиль………………………………………………………………………………………………………….. 175
Бдительный стиль…………………………………………………………………………………………………… 176
Кверулянтный стиль……………………………………………………………………………………………….. 177
Структурный стиль…………………………………………………………………………………………………. 177
Пассивно-агрессивный стиль…………………………………………………………………………………. 177
Активно-агрессивный стиль…………………………………………………………………………………… 178
Доминантный стиль………………………………………………………………………………………………… 178
Привязчивый стиль…………………………………………………………………………………………………. 179
Глава 12. Выживание в «плохих» Agile-проектах…………………………………. 180
Причины проблематичных Agile-проектов……………………………………………………………………………. 180
Слишком формальное следование Agile-процессам……………………………………………………… 180
Нереалистическое планирование в проекте………………………………………………………………….. 182
Плохие рабочие отношения в команде………………………………………………………………………….. 183
Проект не подходит для Agile-разработки…………………………………………………………………….. 183
Имитация Agile-подхода………………………………………………………………………………………………….. 184
Позиционирование в «плохом» проекте………………………………………………………………………………… 184
Простые правила тестировщика…………………………………………………………………………………….. 185
Поддерживать тестовое обеспечение……………………………………………………………………. 185
Тщательно документировать результаты и протоколы тестирования……………… 185
Уделять большое внимание подробной коммуникации со всеми коллегами……. 186
Всегда открывать баг-репорт и фиксировать потенциальную проблему…………. 186
Автоматизировать все, что возможно…………………………………………………………………… 187
Не воспринимать происходящее лично………………………………………………………………… 187
Заключение………………………………………………………………………………………….. 189
Термины и определения……………………………………………………………………….. 191
Библиография………………………………………………………………………………………. 203
Предметный указатель…………………………………………………………………………. 206
-
Искусство Agile-тестирования
660 ₽
469 ₽
Чернов Юрий Георгиевич — кандидат технически наук с более чем 40-летним опытом в области разработки и тестирования программного обеспечения. Преподавал в различных университетах в Москве, Цюрихе, Киеве в качестве приглашенного лектора, работал в московских компаниях и израильском хайтеке. Выступал на многочисленных научных конференциях и конгрессах. Последние годы работает в Швейцарии, из них около 20 лет — на Цюрихской финансовой бирже в качестве руководителя группы тестирования и тест-менеджера. В настоящее время руководит собственной консалтинговой фирмой по тестированию программного обеспечения и научному анализу данных.