Предисловие от издательства....21
Об авторе....22
О техническом рецензенте....23
Благодарности....24
Предисловие....25
Глава 1....27
Введение в проектирование тестирования....27
Введение....27
Структура....27
Важность разработки тестов при автоматизации тестирования....28
Обзор принципов разработки тестов....28
Принцип 1. Ясность и точность....28
Принцип 2. Покрытие и глубина....29
Принцип 3. Возможность повторного использования и поддержки....29
Важность стратегического проектирования тестирования....29
Введение в многоуровневое тестирование....30
Пирамида тестирования....30
Модульные тесты....31
Интеграционные тесты....32
Сквозное тестирование....32
Важность пирамиды тестирования....33
Многоуровневое тестирование: пересмотр пирамиды тестирования....34
Модель айсберга для многоуровневого тестирования....34
Уровень UI....34
Уровень API....35
Уровень сервисов....35
Уровень данных....35
Инфраструктурный уровень....36
Внедрение многоуровневого тестирования....36
Ранние этапы в многоуровневом тестировании....36
Стратегии тестирования влево....37
Обзор API и микросервисов....37
API: строительные блоки коммуникации....37
Типы API....38
Компоненты API ....38
Преимущества использования API....38
Микросервисы: модульный подход к проектированию приложений....38
Характеристики микросервисов....39
Взаимодействие между микросервисами....39
Преимущества микросервисов ....39
Интеграция API и микросервисов....39
Тестирование API и микросервисов....40
Инструменты и технологии....40
Язык программирования: Python....40
Requests....41
PyTest....41
Selenium....41
Playwright....42
Инструменты: Postman, Docker и Allure....42
Postman....42
Docker....42
Allure....42
Программное обеспечение платформа: GitHub Actions, Kubernetes....43
GitHub Actions....43
Kubernetes....43
Технологии: API, микросервисы и многоуровневое тестирование....43
API....43
Микросервисы....44
Многоуровневое тестирование....44
Требуемый уровень знаний....44
Гибкость в выборе инструментов и технологий....45
Альтернативные инструменты и технологии....45
Лучшие практики распределения тестов ....46
Понимание пирамиды тестирования....46
Подумайте об этом....48
Миграция на микросервисы....48
Стратегия автоматизации тестирования....48
Производительность vs покрытие....49
Тестирование в продакшене....49
Заключение....49
Глава 2....51
Понимание паттернов проектирования тестов....51
Введение....51
Структура....51
Знакомство с паттернами проектирования тестов....52
Различия между проектированием тестов вручную и автоматизированных ....52
Распространенные ошибки при автоматизации функциональных тестов....53
Ключевые паттерны проектирования тестов....55
Тестирование фундамента....56
Концепция и применение....56
Технические подробности....57
Преимущества....57
Вывод....57
Тестирование логики уровней....57
Концепция и применение....58
Технические подробности....58
Преимущества....59
Вывод....59
Сбалансированное распределение по уровням....59
Концепция и применение....59
Технические подробности....60
Преимущества....61
Вывод....61
Простота тестирования....61
Концепция и применение....61
Технические подробности....62
Преимущества....63
Вывод....63
Покрытие уровней с учетом оценки рисков....63
Концепция и применение ....63
Технические подробности....64
Преимущества....65
Вывод....65
Тестирование на основе обратной связи....65
Концепция и применение....65
Технические подробности....66
Преимущества....67
Вывод....67
Внедрение паттернов проектирования тестирования....67
Принципы выбора паттернов....68
Вариативность в зависимости от проекта....68
Реальные примеры и кейсы....69
Пример 1. Покрытие уровней на основе оценки рисков в финансовом ПО ....69
Пример 2. Внедрение тестирования на основе обратной связи в среде непрерывной доставки....70
Пример 3. Повышение эффективности тестирования с помощью подхода упрощения в e-commerce-приложении....70
Лучшие практики внедрения паттернов....71
Изучите свое приложение и требования к нему....71
Выберите подходящие паттерны ....71
Систематическое внедрение паттернов....72
Обучение и документация....72
Контролируйте и адаптируйте....72
Используйте инструменты и автоматизацию....72
Заключение....73
Ключевые выводы....74
Глава 3 ....75
Стратегии модульного тестирования....75
Введение....75
Структура....75
Введение в модульное тестирование....76
Связь модульного тестирования с TDD....77
Процесс TDD....78
Преимущества TDD....78
Важность модульного тестирования в пирамиде тестирования....79
Различия между модульными тестами и другими типами тестов....80
Необходимость сбалансированной стратегии тестирования....80
Эффективные модульные тесты: принципы и практика....81
Как писать эффективные модульные тесты....81
Принципы эффективных модульных тестов....82
Детерминированные результаты....82
Читабельность и удобство сопровождения....83
Тестирование граничных случаев и границ....83
Структура тестов и соглашения об именовании....84
Структура AAA: подготовка, действие, проверка....84
Соглашения об именовании: ясность и информативность....85
Структурирование тестов для удобства поддержки....86
Написание тестов для разных типов кода....87
Тестирование чистых функций....87
Тестирование компонентов с состояниями....88
Тестирование обработки ошибок и исключений....89
Стратегии тестирования легаси-кода....91
Понимание проблем легаси-кода ....91
Начните с тестов характеризации....92
Рефакторинг для упрощения тестирования....92
Приоритет областям повышенного риска....93
Постепенная интеграция тестов....93
Обеспечение покрытия и отказ от чрезмерного тестирования....94
Понимание покрытия тестами....94
Обеспечение достаточного тестового покрытия....95
Как избежать чрезмерного тестирования....96
Поддержание сбалансированного набора тестов....97
Использование моков и заглушек в модульных тестах ....97
Что нужно знать о моках и заглушках....98
Правильное использование моков и заглушек....99
Рекомендации по использованию моков и заглушек....99
Проблемы и ограничения....100
Интеграция модульных тестов в конвейеры CICD....100
Роль модульных тестов в CICD....101
Настройка модульных тестов в конвейере CICD....101
Рекомендации по интеграции модульных тестов в CICD....103
Обработка сбоев и обратная связь....104
Лучшие практики и распространенные ошибки при модульном тестировании....105
Лучшие практики модульного тестирования....105
Распространенные ошибки при модульном тестировании....107
Заключение....109
Ключевые выводы....110
Глава 4....112
Интеграционное тестирование....112
Введение....112
Структура....113
Введение в интеграционное тестирование....113
Цель интеграционного тестирования....113
Виды интеграционного тестирования....114
Проблемы интеграционного тестирования....114
Интеграционное тестирование в пирамиде....115
Важность интеграционного тестирования в пирамиде....115
Роли интеграционного и модульного тестирований в пирамиде ....116
Стратегии эффективного интеграционного тестирования....116
Виды интеграционного тестирования....117
Интеграционное тестирование сверху вниз....117
Интеграционное тестирование снизу вверх....118
Интеграционное тестирование большой взрыв....119
Инкрементное интеграционное тестирование....119
Интеграционное сэндвич-тестирование (гибридное)....120
Настройка среды для интеграционного тестирования....121
Основные рекомендации для среды интеграционного тестирования....121
Шаг 1. Использование контейнеризации для тестовых сред (Docker)....121
Шаг 2. Работа с базами данных при интеграционном тестировании....123
Шаг 3. Управление внешними API и зависимостями ....124
Шаг 4. Автоматизация и интеграция с конвейерами CICD....125
Мокинг внешних зависимостей....125
Что такое мокирование....126
Подходящие сценарии для мокирования....127
Типы моков....127
Инструменты и библиотеки для мокинга....128
Рекомендации по использованию моков при интеграционном тестировании ....129
Реальные кейсы и тематические исследования....130
Кейс 1. Архитектура микросервисов на e-commerce-платформе ....130
Кейс 2. Банковское приложение с переходом от монолитной архитектуры к микросервисной....132
Кейс 3. Приложение с внешними API и синхронизацией данных....133
Лучшие практики и подводные камни при интеграционном тестировании....135
Передовые методы интеграционного тестирования....135
Шаг 1. Планирование интеграционных тестов и определение их приоритетности....135
Шаг 2. Автоматизация интеграционного тестирования....136
Шаг 3. Используйте моки и заглушки....136
Шаг 4. Поддерживайте тестовые среды, максимально приближенные к производственным....137
Шаг 5. Используйте контрактное тестирование для микросервисов....137
Шаг 6. Обеспечьте целостность тестовых данных....137
Шаг 7. Мониторинг и анализ результатов тестирования....138
Подводные камни при интеграционном тестировании....138
Шаг 1. Несоответствия в тестовой и производственной средах....138
Шаг 2. Избыток моков....138
Шаг 3. Отказ от интеграционных тестов для сложных взаимодействий....139
Шаг 4. Нестабильные тесты....139
Шаг 5. Отсутствие обновлений тестов по мере развития системы....139
Заключение....140
Ключевые выводы....140
Глава 5....142
Методы тестирования API....142
Введение....142
Структура....142
Введение в тестирование API....143
Важность тестирования API в современных приложениях....143
API в современных архитектурах....144
Важность тестирования API....144
Сфера применения тестирования API....145
Типы тестирования API: функциональное, производительности и безопасности....146
Функциональное тестирование: проверка поведения API....147
Тестирование производительности: обеспечение масштабируемости и надежности....147
Тестирование безопасности: защита API от уязвимостей....148
Разработка тестовых сценариев для API....149
Определение входных и выходных данных....150
Валидация входных данных: выбор правильных данных для тестирования....150
Ожидаемые выходные данные: проверка ответов, кодов состояния и заголовков....151
Обработка граничных случаев и сценариев с ошибками....152
Выявление и тестирование граничных случаев....152
Разработка тестов для проверки условий ошибок и непредвиденных входных данных....153
Проверка ответов, кодов состояния и обработка ошибок....154
Проверка ответа....154
Коды состояния: проверка корректности HTTP-ответов....156
Обработка ошибок: обеспечение корректных ответов в случае сбоев....157
Автоматизация тестирования API с помощью PyTest и Requests....158
Настройка среды....158
Установка PyTest и Requests....158
Базовые тестовые сценарии для API....158
Пример: тестирование простого GET-запроса....159
Пример: тестирование POST-запроса....159
Обработка аутентификации и заголовков в тестах API....160
Пример: тестирование API с аутентификацией по токену Bearer....160
Управление тестовыми данными и параметризация....160
Пример: параметризованные тесты API....161
Запуск тестов и создание отчетов....161
Рекомендации по автоматизированному тестированию API....162
Тестирование производительности API с помощью Locust....162
Настройка Locust для тестирования производительности API....163
Базовый скрипт для нагрузочного тестирования с помощью Locust....163
Запуск теста производительности Locust....164
Измерение показателей производительности....164
Выявление узких мест и повышение производительности API....165
Имитация сложного поведения пользователей....166
Тестирование API на безопасность....167
Тестирование аутентификации и авторизации....167
Шифрование и защита данных....169
Сканирование на уязвимости и распространенные угрозы безопасности API....169
Инструменты для тестирования безопасности: OWASP ZAP и Postman....170
Тестирование GraphQL API....171
Интеграция API-тестов в конвейеры CICD....173
Инструменты для запуска API-тестов в конвейерах CICD....174
Рекомендации по интеграции API-тестов в конвейеры CICD....175
Лучшие практики и подводные камни при тестировании API....176
Заключение....178
Ключевые выводы....179
Глава 6....180
Контрактное тестирование....180
Введение....180
Структура....181
Введение в контрактное тестирование....181
Важность контрактного тестирования в архитектуре микросервисов....182
Проблемы взаимодействия микросервисов....182
Преимущества контрактного тестирования для микросервисов....183
Пример из практики: контрактное тестирование в действии....184
Долгосрочные преимущества контрактного тестирования....184
Различия между интеграционным и контрактным тестированиями....185
Область применения и направленность....185
Глубина тестирования....186
Сложность тестирования и его поддержка....186
Независимость от всей системы....187
Эволюция сервисов....187
Внедрение контрактного тестирования....189
Создание контрактов и управление ими....189
Элементы, которые необходимо включить в контракт....189
Управление версиями и поддержка контрактов....190
Управление контрактами в среде микросервисов....191
Рекомендации по созданию контрактов и работе с ними....192
Виды контрактного тестирования....192
Контрактное тестирование, ориентированное на потребителя....193
Тестирование, ориентированное на провайдера....193
Выбор между типами контрактного тестирования....194
Реализация контрактного тестирования на Python....195
Знакомство с Pact....195
Пример: настройка контрактных тестов, ориентированных на потребителя....195
Использование Pydantic для проверки данных....197
Пример: модель данных Pydantic....197
FastAPI для тестирования контрактов....198
Интеграция контрактных тестов в конвейеры CICD....199
Интеграция контрактного тестирования в CICD....199
Добавление в жизненный цикл тестирования....201
Обработка сбоев в CICD....201
Лучшие практики интеграции CICD ....201
Лучшие рекомендации и подводные камни в контрактном тестировании....202
Главные рекомендации контрактного тестирования....202
Подводные камни при тестировании контрактов....203
Заключение....205
Ключевые выводы....205
Глава 7....207
Распределение тестов по уровням UI, API и бэкенда....207
Введение....207
Структура....207
Введение в многоуровневые стратегии тестирования....208
Согласование многоуровневого тестирования с пирамидой тестирования....208
Важность распределения тестов....209
Место в пирамиде тестирования....210
Распределение усилий между UI, API и бэкендом....210
Преимущества пирамиды тестирования....210
Различия между тестированием UI, API и бэкенда....211
Позиционирование уровней в иерархии тестирования....212
Разработка эффективных тестовых сценариев для каждого уровня....213
Рекомендации для точных и эффективных тестовых сценариев....214
Сопоставление требований с соответствующим уровнем....214
Как избежать дублирования и обеспечить покрытие....215
Автоматизация UI-тестов....215
Написание и выполнение автоматизированных UI-тестов....215
Популярные инструменты для автоматизации UI....216
Выполнение и настройка среды....217
Тесты, подходящие для UI....218
Тесты, которых следует избегать на уровне UI....219
Решение частых проблем при автоматизации UI....222
Рекомендации к настройке фреймворка и разработке UI-тестов....223
Автоматизация тестирования API....225
Написание и выполнение тестов API....225
Выбор подходящих инструментов....226
Создание тестовых сценариев для API....227
Выполнение API-тестов....227
Тесты, необходимые для уровня API....227
Распространенные проблемы при тестировании API....229
Лучшие практики тестирования API....231
Автоматизация бэкенд-тестов....234
Написание и выполнение бэкенд-тестов....234
Актуальные бэкенд-тесты....236
Главные проблемы при тестировании бэкенда....237
Лучшие практики тестирования бэкенда....237
Автоматизация нефункциональных тестов....238
Написание и выполнение нефункциональных тестов....239
Лучшие практики нефункционального тестирования....240
Примеры из реальной жизни и тематические исследования....241
Практические примеры стратегий многоуровневого тестирования....242
Проблемы и их решения....243
Уроки, извлеченные из практического применения....244
Лучшие практики и частые ошибки при многоуровневом тестировании....244
Обеспечение стабильности и надежности тестирования....244
Как избежать распространенных ошибок....245
Сопровождение наборов тестов по мере развития приложений....246
Подводные камни и способы их избежать....247
Заключение....248
Основные выводы....248
Глава 8....250
Интеграция тестов в конвейеры CICD....250
Введение....250
Структура....250
Введение в конвейеры CICD....251
Цель конвейеров CICD ....251
Ключевые компоненты конвейеров CICD ....251
Эволюция конвейеров CICD....252
Роль конвейеров CICD в быстром и надежном цикле доставки....252
Важность автоматизации тестирования в CICD ....253
Единообразная проверка изменений в коде....253
Сокращение ручного труда....253
Минимизация риска появления дефектов в продакшене....254
Автоматизация тестирования и методы DevOps....254
Поддержка быстрых и надежных релизов....255
Обзор популярных инструментов CICD....255
GitHub Actions....255
Jenkins....256
CircleCI....257
GitLab CICD....257
Проектирование конвейеров CICD для автоматизированного тестирования....258
Принципы проектирования эффективного конвейера....259
Пример высокоуровневого конвейера CICD для Python....259
Пример конвейера CICD с многоуровневым тестированием....262
Этапы конвейера CICD....262
Типы тестов в конвейере....263
Этапы развертывания....264
Работа с тестовыми данными и средами....264
Генерация и инициализация тестовых данных....264
Использование Docker для создания согласованных сред....265
Безопасное управление переменными среды и секретными данными....267
Советы и подводные камни при интеграции тестов в CICD....268
Советы интеграции тестов в CICD....268
Подводные камни при интеграции тестирования в CICD....270
Заключение....271
Основные выводы....272
Глава 9....274
Продвинутые стратегии CICD....274
Введение....274
Структура....274
Знакомство с передовыми стратегиями CICD....275
Важность передовых стратегий CICD....276
Параллельное выполнение тестов....276
Методы конфигурации параллельного выполнения....277
Конфигурация параллельного выполнения в GitHub Actions....277
Преимущества и недостатки параллельного выполнения тестов....278
Работа с зависимостями и нестабильными тестами при параллельном выполнении....279
Оптимизация конвейеров CICD....280
Методы оптимизации конвейеров....280
Кеширование тестов для повторного использования результатов....280
Оптимизация зависимостей между заданиями....281
Масштабирование ресурсов и управление ими в облачных инструментах CICD....282
Методы масштабирования ресурсов....282
Продвинутая оркестрация тестирования....284
Управление выполнением тестов на разных уровнях....284
Условное и динамическое выполнение тестов....285
Динамическое выполнение с помощью GitHub Actions....285
Интеграция отчетов Allure для агрегирования результатов тестирования....286
Обеспечение безопасности и соответствия требованиям в CICD....287
Важность обеспечения безопасности и соответствия требованиям в CICD....287
Инструменты и методы обеспечения безопасности конвейеров CICD....287
Статическое тестирование безопасности приложений....287
Динамическое тестирование безопасности приложений ....288
Сканирование уязвимостей....289
Политика соответствия требованиям и утверждение....289
Стратегии непрерывной доставки и развертывания....290
Обзор различий между непрерывной доставкой и непрерывным развертыванием....290
Стратегии внедрения безопасных развертываний в конвейерах CICD....291
Флаги функций....291
Механизмы автоматического отката....291
Прогрессивная доставка....292
Практические преимущества непрерывного развертывания....292
Сине-зеленое и канареечное развертывание....293
Сине-зеленое развертывание....293
Канареечное развертывание....293
Пошаговая реализация....294
Практические примеры использования Kubernetes и GitHub Actions....295
Мониторинг и наблюдаемость в конвейерах CICD....296
Важность мониторинга CICD....296
Инструменты для эффективного мониторинга....296
Рекомендации по мониторингу конвейеров CICD....297
Пример: мониторинг CICD с помощью Prometheus и Grafana....298
Рекомендации и подводные кани при использовании продвинутых методов CICD....298
Рекомендации....298
Подводные камни....299
Заключение....300
Основные выводы....300
Глава 10 ....302
Будущее автоматизации тестов....302
Введение....302
Структура....302
Будущее автоматизации тестирования....303
Факторы, определяющие изменения в автоматизации тестирования....303
Взгляд в будущее....304
Эволюция автоматизации тестирования....304
История развития автоматизации тестирования ....304
Ключевые этапы развития автоматизации тестирования....305
Уроки, извлеченные из прошлого....306
Новые технологии в сфере автоматизации тестирования....306
Достижения в области искусственного интеллекта и машинного обучения....306
Влияние тестирования IoT и автоматизации на подключенные устройства....307
Тестирование блокчейна и распределенных систем....308
Обзор новых инструментов и платформ на будущее....308
Искусственный интеллект и машинное обучение в автоматизации тестирования....309
Роль ИИ и МО в повышении эффективности и надежности тестирования....309
Варианты использования: самовосстанавливающиеся тесты, предиктивная аналитика и обнаружение аномалий....310
Ключевые инструменты ИИМО в тестировании....311
Ограничения и проблемы при внедрении ИИМО ....312
Сдвиг влево и сдвиг вправо....313
Определения и важность тестирования со сдвигом влево и вправо....313
Преимущества проактивного тестирования в процессе разработки....314
Методы и инструменты для эффективной реализации этих подходов....315
Методы и инструменты тестирования со сдвигом влево....315
Методы и инструменты тестирования со сдвигом вправо ....316
Интеграция подходов со сдвигом влево и вправо....316
Интеграция DevOps и тестирования....317
Непрерывное тестирование в конвейерах CICD....317
Сотрудничество между командами разработки, оперирования и тестирования....318
Влияние облачных вычислений на автоматизацию тестирования....318
Преимущества масштабируемости, экономичности и гибкости при облачном тестировании....319
Популярные инструменты и сервисы для облачной автоматизации тестирования....319
Автоматизация тестирования в Agile и непрерывной доставке....320
Методы согласования автоматизации тестирования с циклами быстрой разработки....321
Проблемы и решения для непрерывной интеграции тестирования....321
Будущая роль инженеров по автоматизации тестирования....323
Меняющиеся обязанности: от написания скриптов до стратегической автоматизации....324
Важность междисциплинарных знаний....324
Прогнозы и предположения относительно будущего автоматизации тестирования....325
Размышления о роли автоматизации в следующем десятилетии....326
Концепция интеграции передовых технологий в процесс тестирования....327
Заключение....328
Основные выводы....329
Глава 11....330
GenAI в тестировании....330
Введение....330
Структура....330
Знакомство с GenAI в тестировании....331
Обзор....331
Применение GenAI в тестировании программного обеспечения....331
Эволюция тестирования с использованием ИИ....332
Преимущества использования GenAI для автоматизированного тестирования....333
Расширение тестового покрытия и повышение эффективности....333
Сокращение трудозатрат на создание тестов вручную....334
Адаптивная и самовосстанавливающаяся автоматизация....334
Использование GenAI в тестировании....335
Генерация тестовых сценариев с GenAI ....336
Создание тестовых данных с помощью GenAI....337
Обеспечение разнообразия и реалистичности тестовых данных....338
Расширение покрытия с помощью GenAI ....338
Интеграция инструментов GenAI в существующие рабочие процессы....340
Внедрение инструментов на основе искусственного интеллекта в конвейеры CICD....340
Автоматизация создания тестов в CICD....340
Улучшение процесса генерации тестовых данных в CICD....341
Оптимизация тестирования на основе ИИ и самовосстанавливающаяся автоматизация....341
Преодоление трудностей при интеграции....341
Обеспечение точности и надежности ИИ-модели....342
Управление рисками безопасности и соблюдение нормативных требований....342
Решение проблемы сложности интеграции ИИ....342
Ограничения ресурсов ИИ и время выполнения....342
Проблемы и этические аспекты....343
Проблемы предвзятости и надежности при использовании тестов, сгенерированных ИИ....343
Этические аспекты тестирования с использованием ИИ....344
Баланс между ИИ-автоматизацией и этичным, надежным тестированием....345
Перспективные направления применения ИИ в тестировании....345
Новые тенденции в области ИИ и автоматизации тестирования....346
Прогнозы на следующее десятилетие в области тестирования с GenAI ....347
Будущее ИИ в тестировании программного обеспечения....348
Заключение....349
Основные выводы....349
В современном быстро меняющемся мире разработки ПО обеспечение качества приложений требует стратегического подхода к автоматизации тестирования. Книга дает вам знания и инструменты для разработки, внедрения и оптимизации автоматизации на уровнях UI, API и бэкенда с использованием мощной экосистемы Python.
Вы узнаете, как интегрировать автоматизированные тесты в конвейеры CI/CD с помощью GitHub Actions, создавать подробные отчеты тестов с помощью Allure и решать современные проблемы, связанные с тестированием микросервисов и контейнерных сред. На реальных примерах показано, как применять эти методы в продакшене.
В главе, посвященной генеративному искусственному интеллекту в тестировании, рассматриваются его возможности в области генерации тестовых сценариев и создания тестовых данных.
Издание предназначено QA-инженерам и разработчикам со средним уровнем навыков программирования, которые хотят повысить свою квалификацию в области автоматизации тестирования.Базовое понимание концепций тестирования, веб-технологий, API и системы контроля версий Git позволит читателям в полной мере освоить и реализовать описанные в книге продвинутые стратегии автоматизации.