Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ
Джез Хамбл, Дейвид Фарли
Тестирование программного обеспечения, поставляемого пользователям, часто бывает болезненным, рискованным и длительным процессом. Перед вами книга, представляющая совершенно новую стратегию разработки - набор принципов и практических методик, обеспечивающих быструю инкрементную поставку высококачественного программного обеспечения. Благодаря автоматизации процессов сборки, установки и тестирования и улучшению взаимодействия разработчиков, тестировщиков и администраторов команда проекта получает возможность поставлять изменения и новые средства в течение считанных часов или даже минут, независимо от размера проекта и сложности его кодовой базы.
Авторы начинают с рассмотрения основ процесса быстрой и надежной поставки программного обеспечения с минимальными рисками. Затем они вводят понятие «конвейера развертывания» - автоматизированного процесса, управляющего всеми изменениями проекта, от регистрации изменений до выпуска очередной версии программы. И, наконец, в книге обсуждаются способы поддержки непрерывного развертывания, начиная с инструментов управления инфраструктурами, данными и конфигурациями и заканчивая управлением целыми проектами.
В книге рассмотрены следующие вопросы:
- автоматизация всех процессов сборки, интеграции, тестирования и развертывания программного обеспечения;
- реализация конвейера развертывания на уровне команд и организаций;
- улучшение взаимодействия разработчиков, тестировщиков и администраторов;
- стратегии инкрементной разработки новых программных средств большими распределенными командами;
- реализация эффективных стратегий управления конфигурациями;
- автоматизация приемочного тестирования - от анализа требований до реализации процессов;
- тестирование производительности, безопасности, доступности и других нефункциональных требований;
- реализация непрерывного развертывания с минимальным временем простоя;
- управление инфраструктурами, данными, компонентами и зависимостями;
- управление рисками, аудит и соответствие проекта регуляторным требованиям и стандартам ведения бизнеса.
Книга будет полезна всем участникам процесса поставки - разработчикам, системным администраторам, тестировщикам и менеджерам проектов. Она поможет вашей организации внедрить современную технологию разработки и поставки программного обеспечения, ускорить процесс разработки, повысить надежность поставки и прибыльность проекта.
Издательство: Вильямс, 2011 г.
ISBN 978-5-8459-1739-3, 978-0-321-60191-9
Количество страниц: 432.
Содержание книги «Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ»:
- 18 Предисловие Мартина Фаулера
- 20 Введение
- 21 Для кого предназначена книга
- 23 Структура книги
- 23 Часть I. Основы непрерывного развертывания
- 24 Часть II. Конвейер развертывания
- 24 Часть III. Процесс поставки
- 25 Веб-ссылки в книге
- 25 Изображение на обложке
- 27 Благодарности
- 28 Об авторах
- 29 Часть I. Основы непрерывного развертывания
- 31 Глава 1. Проблема развертывания программного обеспечения
- 31 Введение
- 32 Распространенные антишаблоны поставки релизов
- 33 Антишаблон: развертывание ПО вручную
- 34 Антишаблон: развертывание в среде производственного типа только после завершения разработки
- 36 Антишаблон: ручное управление конфигурацией рабочих сред
- 37 Можно ли улучшить технологию развертывания
- 38 Как мы собираемся достичь наших целей
- 39 Любое изменение должно инициировать обратную связь
- 40 Обратная связь должна срабатывать как можно быстрее
- 41 Команда поставки должна получить информацию и отреагировать на нее
- 42 Масштабирование процесса непрерывного развертывания
- 42 Преимущества непрерывного развертывания
- 43 Расширение полномочий команды
- 43 Уменьшение количества ошибок
- 45 Смягчение стрессов
- 46 Гибкость развертывания
- 47 Достижение совершенства на практике
- 47 Релиз-кандидат
- 48 Каждое изменение может привести к выпуску новой версии
- 49 Принципы развертывания ПО
- 49 Создайте надежный повторяющийся процесс развертывания
- 50 Автоматизируйте все, что только можно
- 50 Контролируйте все с помощью системы управления версиями
- 50 Если операция болезненная, выполняйте ее чаще
- 51 Встраивайте качество в продукцию
- 51 Готово — значит выпущено
- 52 Каждый отвечает за процесс поставки
- 52 Непрерывное улучшение
- 53 Резюме
- 55 Глава 2. Стратегии управления конфигурациями
- 55 Введение
- 56 Управление версиями
- 57 Контролируйте абсолютно все с помощью системы управления версиями
- 59 Регулярно регистрируйте изменения на магистрали (основной ветви)
- 60 Используйте информативные сообщения фиксации
- 61 Управление зависимостями
- 62 Управление внешними библиотеками
- 62 Управление компонентами
- 63 Управление конфигурациями
- 63 Конфигурация и гибкость
- 64 Типы конфигураций
- 66 Управление конфигурацией приложения
- 69 Управление конфигурациями нескольких приложений
- 70 Принципы управления конфигурациями приложений
- 71 Управление средами
- 74 Инструменты управления средами
- 74 Управление процессом изменения
- 75 Резюме
- 77 Глава 3. Непрерывная интеграция
- 77 Введение
- 78 Реализация непрерывной интеграции
- 78 Начальные требования
- 79 Базовая система непрерывной интеграции
- 81 Обязательные условия непрерывной интеграции
- 81 Регулярно регистрируйте изменения
- 81 Создайте полный набор автоматических тестов
- 82 Процессы сборки и тестирования должны быть быстрыми
- 83 Управление средой разработки
- 84 Использование программ непрерывной интеграции
- 84 Базовые возможности
- 84 Расширенные возможности
- 86 Важные методики
- 87 Не регистрируйте изменения в нерабочей сборке
- 87 Всегда выполняйте все тесты фиксации локально перед самой фиксацией либо заставьте делать это сервер непрерывной интеграции
- 88 Дождитесь завершения тестов фиксации
- 88 Не уходите домой, когда есть нерабочая сборка
- 89 Всегда будьте готовы вернуться к предыдущей версии
- 90 Включите секундомер
- 90 Не отключайте тесты в случае сбоя
- 91 Вы отвечаете за все сбои, произошедшие из-за ваших изменений
- 91 Разработка через тестирование
- 92 Предлагаемые методики
- 92 Экстремальное программирование
- 92 Отмена сборки из-за нарушения архитектурных ограничений
- 93 Отмена сборки из-за медлительности тестов
- 93 Отмена сборки из-за предупреждений и нарушений стиля кодирования
- 94 Распределенные команды
- 95 Влияние на процесс
- 95 Централизованная непрерывная интеграция
- 96 Технические проблемы
- 97 Альтернативные подходы
- 98 Распределенные системы управления версиями
- 101 Резюме
- 103 Глава 4. Реализация стратегии тестирования
- 103 Введение
- 104 Типы тестов
- 104 Тесты, ориентированные на деловую логику и поддерживающие процесс разработки
- 108 Тесты, ориентированные на технологию и поддерживающие процесс разработки
- 108 Тесты, ориентированные на деловую логику и критикующие проект
- 109 Тесты, ориентированные на технологию и критикующие проект
- 110 Тестовые двойники
- 111 Реальные ситуации и стратегии
- 111 Начало проекта
- 112 Середина проекта
- 113 Устаревшие системы
- 114 Интеграционное тестирование
- 116 Создание тестов
- 117 Управление списками неисправленных дефектов
- 118 Резюме
- 119 Часть II. Конвейер развертывания
- 121 Глава 5. Структура конвейера развертывания
- 121 Введение
- 122 Что такое конвейер развертывания
- 126 Базовый конвейер развертывания
- 127 Методики применения конвейера развертывания
- 128 Каждая сборка двоичного кода должна быть единственной
- 130 Используйте один и тот же способ развертывания в каждой среде
- 131 Выполняйте дымовые тесты развертываний
- 132 Развертывайте приложение в копии рабочей среды
- 132 Каждое изменение должно немедленно продвигаться по конвейеру развертывания
- 134 Если любая часть конвейера терпит неудачу, остановите конвейер
- 134 Стадия фиксации
- 135 Рекомендуемые методики этапа фиксации
- 136 Автоматические приемочные тесты
- 138 Рекомендуемые методики автоматического приемочного тестирования
- 139 Поздние стадии тестирования
- 141 Ручное тестирование
- 141 Тестирование нефункциональных требований
- 142 Подготовка к выпуску
- 142 Автоматизация развертывания и поставки релиза
- 144 Откат изменений
- 145 Стратегия успеха
- 145 Реализация конвейера развертывания
- 145 Моделирование потока создания ценности и построение рабочего каркаса
- 146 Автоматизация процессов сборки и развертывания
- 147 Автоматизация модульных тестов и анализ кода
- 148 Автоматизация приемочных тестов
- 148 Развитие конвейера развертывания
- 149 Метрики
- 152 Резюме
- 153 Глава 6. Сценарии сборки и развертывания
- 153 Введение
- 154 Обзор инструментов сборки
- 156 Make
- 157 Ant
- 158 NAnt и MSBuild
- 158 Maven
- 159 Rake
- 160 Buildr
- 160 Psake
- 160 Принципы создания сценариев сборки и развертывания
- 160 Создавайте сценарии для каждой стадии конвейера развертывания
- 161 Используйте наиболее подходящие инструменты для развертывания
- 162 Применяйте одни и те же сценарии в каждой среде
- 162 Используйте инструменты пакетирования, предоставляемые операционной системой
- 164 Обеспечьте идемпотентность процесса развертывания
- 165 Совершенствуйте систему развертывания инкрементным способом
- 165 Структура проекта с приложениями для JVM
- 165 Структура проекта
- 168 Сценарии развертывания
- 169 Слои развертывания и тестирования
- 170 Тестирование конфигурации среды
- 171 Советы и трюки
- 171 Всегда используйте относительные пути
- 172 Устраняйте ручные этапы
- 172 Встраивайте средства отслеживания версий
- 173 При сборке не регистрируйте двоичные файлы в системе управления версиями
- 173 Неуспешные тесты не должны отменять сборку
- 174 Ограничивайте приложение интегрированными дымовыми тестами
- 174 Советы и трюки для .NET
- 174 Резюме
- 177 Глава 7. Стадия фиксации
- 177 Введение
- 178 Принципы и методики стадии фиксации
- 178 Создайте быструю и надежную обратную связь
- 180 Что должно завершать стадию фиксации
- 180 Непрерывно улучшайте стадию фиксации
- 181 Передайте полномочия разработчикам
- 182 В очень больших командах назначайте администратора сборок
- 182 Результаты стадии фиксации
- 182 Хранилище артефактов
- 185 Принципы и методики создания набора тестов фиксации
- 186 Избегайте пользовательского интерфейса
- 186 Используйте внедрение зависимостей
- 186 Не обращайтесь к базам данных
- 187 Избегайте асинхронности в модульных тестах
- 187 Используйте тестовые двойники
- 190 Минимизируйте состояния в тестах
- 191 Подделывайте время
- 191 Применяйте метод «грубой силы»
- 192 Резюме
- 193 Глава 8. Автоматическое приемочное тестирование
- 193 Введение
- 194 Важность автоматического приемочного тестирования
- 196 Создание набора приемочных тестов, удобных для сопровождения
- 198 Тестирование графического пользовательского интерфейса
- 199 Создание приемочных тестов
- 199 Роль аналитиков и тестировщиков
- 199 Значение анализа в итеративных проектах
- 200 Приемочные критерии как выполняемые спецификации
- 203 Слой драйверов приложения
- 206 Представление приемочных критериев
- 206 Шаблон драйверов окон: отделение тестов от графического интерфейса пользователя
- 209 Реализация приемочных тестов
- 209 Состояния в приемочном тестировании
- 211 Границы процессов, инкапсуляция и тестирование
- 212 Управление асинхронностью и тайм-аутами
- 214 Использование тестовых двойников
- 217 Стадия приемочного тестирования
- 218 Контроль приемочных тестов
- 220 Тесты развертывания
- 221 Производительность приемочных тестов
- 222 Выполняйте рефакторинг общих задач
- 223 Сделайте дорогостоящие ресурсы общими
- 223 Параллельное тестирование
- 224 Использование вычислительных решеток
- 225 Резюме
- 227 Глава 9. Тестирование нефункциональных требований
- 227 Введение
- 228 Управление нефункциональными требованиями
- 229 Анализ нефункциональных требований
- 230 Программирование с учетом производительности
- 232 Измерение производительности
- 233 Как определять успех и неудачу в тестах производительности
- 235 Среда тестирования производительности
- 238 Автоматизация тестов производительности
- 241 Тестирование производительности посредством пользовательского интерфейса
- 242 Запись взаимодействия со службой или открытым программным интерфейсом
- 242 Использование шаблонов записанных взаимодействий
- 244 Использование заглушек при разработке тестов производительности
- 245 Добавление тестов производительности в конвейер развертывания
- 247 Дополнительные преимущества системы тестирования производительности
- 248 Резюме
- 251 Глава 10. Развертывание и выпуск приложений
- 251 Введение
- 252 Создание стратегии поставки релиза
- 253 План выпуска
- 253 Поставка коммерческого программного продукта
- 254 Развертывание и продвижение приложения
- 254 Первое развертывание
- 255 Моделирование процесса поставки и продвижения сборок
- 257 Продвижение конфигураций
- 258 Согласование сред и приложений
- 258 Развертывание в отладочных средах
- 259 Откат развертываний и релизы с нулевым временем простоя
- 260 Откат путем повторного развертывания последней хорошей версии
- 260 Релизы с нулевым временем простоя
- 261 Сине-зеленое развертывание
- 262 Канареечные релизы
- 265 Аварийные исправления
- 266 Непрерывное внедрение
- 267 Непрерывная поставка приложений, устанавливаемых пользователями
- 269 Советы и трюки
- 269 Люди, выполняющие развертывание, должны участвовать в создании процесса развертывания
- 269 Создавайте журналы развертывания
- 270 Старые файлы нужно не удалять, а перемещать
- 270 За развертывание должна отвечать вся команда
- 270 У серверных приложений не должно быть графического интерфейса
- 271 Задавайте период «раскачки» для нового развертывания
- 271 Быстро реагируйте на неудачи
- 271 Не вносите изменения непосредственно в рабочей среде
- 272 Резюме
- 273 Часть III. Процесс поставки
- 275 Глава 11. Управление инфраструктурой и средами
- 275 Введение
- 277 Потребность в администраторах
- 278 Документация и аудит
- 278 Оповещения о нештатных событиях
- 279 Планирование непрерывности обслуживания
- 279 Используйте технологии, знакомые администраторам
- 280 Моделирование и контроль инфраструктуры
- 282 Управление доступом к инфраструктуре
- 283 Внесение изменений в инфраструктуру
- 284 Управление установкой и конфигурациями серверов
- 285 Развертывание серверов
- 286 Непрерывное управление серверами
- 291 Управление конфигурацией промежуточного ПО
- 291 Управление конфигурацией
- 293 Исследуйте продукт
- 294 Проанализируйте, как промежуточное ПО обрабатывает состояния
- 294 Найдите программный интерфейс конфигурации
- 295 Примените лучшую технологию
- 295 Управление службами инфраструктур
- 296 Многоканальные системы
- 298 Виртуализация
- 300 Управление виртуальными средами
- 302 Виртуальные среды и конвейер развертывания
- 304 Параллельное тестирование с помощью виртуальных сред
- 306 Облачные вычисления
- 307 Инфраструктура в облаке
- 308 Платформы в облаке
- 309 Одного рецепта от всех болезней не существует
- 309 Критика облачных вычислений
- 310 Мониторинг инфраструктуры и приложений
- 311 Сбор данных
- 313 Журналы
- 313 Создание информационных панелей
- 315 Мониторинг на основе функционирования
- 316 Резюме
- 317 Глава 12. Управление данными
- 317 Введение
- 318 Управление базами данных с помощью сценариев
- 318 Инициализация баз данных
- 319 Инкрементные изменения
- 319 Управление версиями баз данных
- 321 Управление согласованными изменениями
- 322 Откат баз данных и релизы с нулевым временем простоя
- 322 Откат без потери данных
- 323 Разделение процессов миграции базы данных и развертывания приложения
- 324 Управление тестовыми данными
- 325 Имитация баз данных для модульных тестов
- 325 Управление связями тестов с данными
- 326 Изоляция тестов
- 327 Установка данных
- 327 Специальные тестовые ситуации
- 328 Управление данными и конвейер развертывания
- 328 Данные для тестов стадии фиксации
- 329 Данные для приемочных тестов
- 331 Данные для тестов производительности
- 331 Данные для других стадий тестирования
- 332 Резюме
- 335 Глава 13. Управление компонентами и зависимостями
- 335 Введение
- 336 Поддержка готовности приложения к выпуску
- 337 Временное сокрытие новой функциональности
- 338 Вносите все изменения инкрементным способом
- 339 Ветвление по абстракции
- 341 Зависимости
- 341 Ад зависимостей
- 343 Управление библиотеками
- 344 Компоненты
- 345 Разбиение кодовой базы на компоненты
- 348 Компоненты и конвейер развертывания
- 349 Интеграционный конвейер
- 351 Управление графами зависимостей
- 351 Создание графа зависимостей
- 353 Графы зависимостей конвейера
- 355 Когда следует запускать сборки
- 357 Стратегия осторожного оптимизма
- 358 Циклические зависимости
- 359 Управление двоичными кодами
- 360 Как должно работать хранилище артефактов
- 361 Как конвейер развертывания должен взаимодействовать с хранилищем артефактов
- 361 Управление зависимостями с помощью программы Maven
- 363 Рефакторинг зависимостей в Maven
- 365 Резюме
- 367 Глава 14. Управление версиями
- 367 Введение
- 368 Краткая история систем управления версиями
- 368 CVS
- 369 Subversion
- 371 Коммерческие системы управления версиями
- 371 Отключите пессимистическую блокировку
- 373 Ветвления и слияния
- 374 Слияние
- 375 Ветви в системе непрерывной интеграции
- 377 Распределенные системы управления версиями
- 377 Что такое распределенная система управления версиями
- 379 Краткая история распределенных систем управления версиями
- 380 Распределенные системы управления версиями в корпоративных средах
- 381 Использование распределенных систем управления версиями
- 383 Потоковые системы управления версиями
- 383 Что такое потоковая система управления версиями
- 385 Потоковые модели разработки
- 386 Статические и динамические представления
- 387 Непрерывная интеграция в потоковых системах управления версиями
- 388 Разработка на магистрали
- 389 Внесение сложных изменений без ветвления
- 391 Ветвь для выпуска
- 392 Ветвление по функциональным средствам
- 395 Ветвление по командам
- 397 Резюме
- 399 Глава 15. Управление непрерывным развертыванием
- 399 Введение
- 400 Модель зрелости процессов, связанных с управлением конфигурациями и поставкой
- 401 Как использовать модель зрелости
- 403 Жизненный цикл проекта
- 404 Идентификация задачи
- 404 Начальная фаза проекта
- 406 Инициализация
- 407 Разработка и выпуск продукта
- 409 Эксплуатация
- 410 Управление рисками
- 410 Стратегии управления рисками
- 411 Схема управления рисками
- 412 Применение стратегий управления рисками
- 413 Симптомы и причины проблем развертывания
- 414 Редкие развертывания или много ошибок при развертывании
- 414 Низкое качество приложения
- 415 Неэффективность процесса непрерывной интеграции
- 416 Плохое управление конфигурациями
- 416 Соответствие стандартам и аудит
- 417 Автоматическая документация
- 418 Обеспечение доступности процессов для отслеживания
- 419 Изоляция команд
- 420 Управление изменениями
- 421 Резюме
- 423 Список литературы
- 425 Предметный указатель
Инструкция как скачать книгу Джез Хамбл, Дейвид Фарли: Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.