Какие стандарты применяет ваша команда для развертывания кода основной версии? - PullRequest
11 голосов
/ 31 марта 2009

Мне любопытно, какие стандарты другие команды проверяют до того, как код выйдет (или развернется) в крупных релизах.

Я не ищу конкретных ответов для каждого, но вот идея того, о чем я пытаюсь понять.

  • Для серверных приложений вы обеспечили мониторинг? В какой степени ... только то, что он реагирует на ping, что он может поразить все свои зависимости в любой данный момент, что логика, которую приложение фактически обслуживает, является надежной (например, сервис, который вычисляет 2 + 2, фактически возвращает "4 «)
  • Вам требуются сценарии автоматической сборки перед выпуском кода? То есть любой разработчик может перейти на новую коробку, извлечь что-то из системы контроля версий и начать разработку? Конечно, с учетом таких вещей, как ОС и IDE.
  • Как насчет сценариев автоматического развертывания для серверных приложений?
  • Какой уровень документации вам необходим для того, чтобы проект был «готов»?
  • Вы уверены, что у вас есть полноценный план резервного копирования для всех основных компонентов системы, если он основан на сервере?
  • Обеспечиваете ли вы соблюдение стандартов качества кода? Подумайте StyleCop для .NET или оценки цикломатической сложности.
  • Модульное тестирование? Интеграционные тесты? Производительность нагрузочного тестирования?
  • Есть ли у вас стандарты для ведения журнала ошибок вашего приложения? Как насчет уведомления об ошибке?

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

Ответы [ 8 ]

5 голосов
/ 20 мая 2009

Минимум:

  1. работа модульных тестов
  2. Интеграционные тесты работают
  3. развернуть на стадии тестирования ок
  4. ручная краткая проверка на стадии испытаний

Лучше:

  1. работа модульных тестов
  2. checkstyle ok
  3. Интеграционные тесты работают
  4. метрики, такие как jmeter и пройденное тестовое покрытие
  5. развернуть на стадии тестирования в порядке
  6. некоторые ручные тесты на стадии тестирования

наконец развернуто на стадии производства

Все модульные и интеграционные тесты работают автоматически, лучше всего на сервере непрерывной интеграции, таком как CruiseControl , выполненном ant или maven . При разработке веб-сервисов тестирование с soapui работает нормально.

Если используется база данных, перед развертыванием выполняется автоматическое обновление (например, с liquibase ). Когда используются внешние сервисы, необходимы дополнительные тесты конфигурации, чтобы убедиться, что URL-адреса в порядке (главный запрос от приложения, соединение с базой данных, wsdl get, ...). При разработке webpps будет полезна проверка HTML на некоторых страницах. Ручная проверка макета (например, browsershots ) будет полезной.

(Все примеры ссылок для разработки на Java)

И последнее (но не менее важное): все ли приемочные испытания все еще проходят? Является ли продукт тем, что хочет владелец? Сделайте живой обзор с ним на тестовой системе, прежде чем идти дальше!

4 голосов
/ 24 мая 2009

Каждый проект индивидуален, однако, как правило, вот основные вещи, которые я пытаюсь сделать до того, как выпустить код на волю.

В произвольном порядке:

1) Идентификация версии в том месте, где она может быть найдена пользователем позже, она должна быть уникальной для данного выпуска. (очень часто «номер версии», связанный с распространяемым, библиотеками и исполняемым файлом, или пользователь, видимый из диалогового окна «о программе». Может быть числом в хорошо известном регистре или смещением в микропрограмме)

2) Снимок точного кода, использованного для создания релиза. (для этого подходит метка или ветка релиза в системе SCM)

3) Все инструменты, необходимые для воссоздания источника, должны быть отмечены и заархивированы (без этого источник из шага 2 становится ограниченным)

4) Архив фактической версии (точная копия выпущенного установщика, который знает, что через 7 лет ваши инструменты не смогут его собрать, но теперь, по крайней мере, у вас есть исходный код и возможность установки на вашей стороне для целей расследования).

5) Набор задокументированных изменений между этой версией выпуска и предыдущей, также известной как Release Notes (мне нравится использовать стиль добавления к списку, чтобы все изменения выпуска были доступны в одном месте для пользователя).

6) Завершен цикл испытаний на освобождение кандидата. Используя распределяемую созданную нагрузку и тестирование с использованием полного / проверенного плана тестирования, чтобы убедиться, что основные функциональные возможности работают, все новые функции присутствуют и работают, как предполагалось.

7) Отслеживание дефектов показывает, что все неоплаченные товары помечены как a) исправлено b) не является дефектом c) отложено.

Вы можете добавить множество других шагов в зависимости от домена или стиля разработки, но я бы сказал, что большая часть программного обеспечения «должна» выполнять вышеуказанные шаги в каждом выпуске. YMMV.

Весело штурмуйте замок.

4 голосов
/ 31 марта 2009

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

  • Убедитесь, что все веб-сервисы обновлены
  • Убедитесь, что все сценарии / изменения / миграции базы данных уже развернуты на производственном сервере
  • Min все файлы js и css.
  • Убедитесь, что все тесты юнит / функционал / интеграция / Selenium проходят (мы стремимся к 95% + охват тестами во время разработки, поэтому они обычно довольно точны при определении проблемы)

Есть еще кое-что, я знаю, что есть, но сейчас я не могу думать ни о чем.

1 голос
/ 26 мая 2009

Недавно мы выпустили крупный релиз, так что он все еще довольно свеж. Мы создаем приложение для Windows с графическим интерфейсом, для которого выпускаем двоичный исполняемый файл, поэтому мой список обязательно будет существенно отличаться от списка, предназначенного только для веб-релиза.

  1. Кандидаты на выпуск выходят в команду тестирования. Им нужно хотя бы несколько дней, чтобы поиграть с ним. Если они находят какие-либо ошибки, которые мы считаем показательными, выпуск отменяется. Это предполагает, что у вас есть команда тестирования. Мы освобождаем кандидата на выпуск только в том случае, если с момента его создания прошла хотя бы одна неделя.

  2. Все автоматизированное тестирование должно работать и проходить. Автоматизированное тестирование считается дополнением к живым тестерам.

  3. Любые ошибки, помеченные как «блокировщики», должны быть устранены для окончательной сборки.

  4. Рекламные материалы должны быть готовы (в нашем случае обновление веб-страницы и рассылка по электронной почте). Реселлеры предупреждаются, что релиз ожидается за несколько недель, чтобы они также могли подготовить свой материал. В основном это не проблема программистов, но мы проверяем маркетинговые требования на точность.

  5. Лицензирование должно быть обновлено, чтобы отражать используемую нами защиту от копирования. Наши бета-версии и версии выпуска используют разные модели лицензирования, и это изменение требует программирования.

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

  7. Любые ссылки на бета-версию необходимо удалить из самого приложения. Мы смущенно пропустили некоторые из них.

  8. Файлы справки и руководства должны быть полностью обновлены и выверены, поскольку они были частью пакета выпуска.

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

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

1 голос
/ 25 мая 2009
  • Просмотрите контрольный список: убедитесь, что все новые функции, запросы на изменение и исправления ошибок, запланированные для данной версии, завершены.
  • Сборка (в сборочной машине) компилируется без каких-либо предупреждений или ошибок в режиме выпуска.
  • Все автоматизированные модульные тесты работают без ошибок.
  • Все сообщения и изображения были одобрены командой продукта.
  • Проверка производительности не хуже предыдущей версии.
  • Полный (ручной) план тестирования был проверен группой тестирования без ошибок.
    • Приложение протестировано во многих возможных сценариях (различные ОС, механизмы баз данных, конфигурации и сторонние приложения).
    • Все функции приложения проверены: с нами много раз случалось, что изменение функции нарушало еще одну мысль, не связанную, случается дерьмо, поэтому мы должны минимизировать ее.
    • Настройка или развертывание также работает во всех сценариях
    • Программа установки может обновить предыдущие версии
1 голос
/ 25 мая 2009

Для веб / внутренних приложений одно в дополнение к другим предложениям.

Обязательно привлекайте команду ops / deploy, чтобы вы не поставляли программное обеспечение, для которого требуется больше серверов, чем у них (не думайте, что люди, выдвигающие требования, уже имеют).

1 голос
/ 25 мая 2009
  • Codestyle (автоматизированный)
  • Автоматизированные тесты (юнит- и интеграционные тесты)
  • Ручные тесты (включая этапы тестирования и бета)
  • Инструмент тестирования на проникновение Whitebox (автоматизированный)
  • Инструмент для проверки проникновения в черный ящик (автоматизированный)
  • Мониторинг исключений / регистрации вручную на этапах тестирования / бета-тестирования перед развертыванием
  • возможность вернуться к предыдущей версии в любое время
  • проверка кода и «незаконные проверки»
0 голосов
/ 19 мая 2009
  1. нет видимых ошибок? ОК
  2. юнит тестовая работа? хорошо (некоторые игнорируются) ха хорошо ок
  3. настройка, конечно. ОК
  4. регистрация ошибок? конечно ! :-) это нам нужно! исправить ошибки!
  5. все на cruisecontrol.net приятно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...