Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ

Джез Хамбл, Дейвид Фарли

Тестирование программного обеспечения, поставляемого пользователям, часто бывает болезненным, рискованным и длительным процессом. Перед вами книга, представляющая совершенно новую стратегию разработки - набор принципов и практических методик, обеспечивающих быструю инкрементную поставку высококачественного программного обеспечения. Благодаря автоматизации процессов сборки, установки и тестирования и улучшению взаимодействия разработчиков, тестировщиков и администраторов команда проекта получает возможность поставлять изменения и новые средства в течение считанных часов или даже минут, независимо от размера проекта и сложности его кодовой базы.

Авторы начинают с рассмотрения основ процесса быстрой и надежной поставки программного обеспечения с минимальными рисками. Затем они вводят понятие «конвейера развертывания» - автоматизированного процесса, управляющего всеми изменениями проекта, от регистрации изменений до выпуска очередной версии программы. И, наконец, в книге обсуждаются способы поддержки непрерывного развертывания, начиная с инструментов управления инфраструктурами, данными и конфигурациями и заканчивая управлением целыми проектами.

В книге рассмотрены следующие вопросы:

  • автоматизация всех процессов сборки, интеграции, тестирования и развертывания программного обеспечения;
  • реализация конвейера развертывания на уровне команд и организаций;
  • улучшение взаимодействия разработчиков, тестировщиков и администраторов;
  • стратегии инкрементной разработки новых программных средств большими распределенными командами;
  • реализация эффективных стратегий управления конфигурациями;
  • автоматизация приемочного тестирования - от анализа требований до реализации процессов;
  • тестирование производительности, безопасности, доступности и других нефункциональных требований;
  • реализация непрерывного развертывания с минимальным временем простоя;
  • управление инфраструктурами, данными, компонентами и зависимостями;
  • управление рисками, аудит и соответствие проекта регуляторным требованиям и стандартам ведения бизнеса.

Книга будет полезна всем участникам процесса поставки - разработчикам, системным администраторам, тестировщикам и менеджерам проектов. Она поможет вашей организации внедрить современную технологию разработки и поставки программного обеспечения, ускорить процесс разработки, повысить надежность поставки и прибыльность проекта.

Издательство: Вильямс, 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 совершенно бесплатно.
Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ
Рейтинг книги:
3 голоса
1579

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: