Какие стандарты выполняет ваша команда для развертывания кода с большой версией?

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

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

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

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

Ответ 1

Минимум:

  • Работа с модульными тестами
  • интеграционные тесты работают
  • развертывание на тестовом этапе ok
  • ручная короткая проверка на этапе тестирования

лучше:

  • Работа с модульными тестами
  • checkstyle ok
  • интеграционные тесты работают
  • такие как jmeter и пройденное пройденное тестирование
  • развертывание на тестовом этапе ok
  • некоторые ручные тесты на этапе тестирования

окончательно развертывается на стадии производства

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

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

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

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

Ответ 2

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

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

Там больше, я знаю, что есть, но сейчас я не могу придумать.

Ответ 3

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

Без особого порядка:

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

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

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

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

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

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

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

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

Получайте удовольствие от штурма замка.

Ответ 4

  • Codestyle (автоматизированный)
  • Автоматизированные тесты (тесты для модулей и интеграции)
  • Ручные тесты (включая тестовые и бета-этапы)
  • Инструмент для тестирования проникновения белых ящиков (автоматизированный)
  • Инструмент тестирования проникновения Blackbox (автоматизированный)
  • Мониторинг ручного исключения/ведения журнала на тестовых/бета-этапах перед развертыванием
  • возможность вернуться к предыдущей версии в любое время
  • обзор кода и "незаконные проверки"

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

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

  • Любые ошибки, отмеченные как "блокирующие", должны быть разрешены для окончательной сборки.

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

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

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

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

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

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

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

Ответ 8

  • Нет видимых ошибок? ОК
  • unit test работать? ok (некоторые игнорируются) ha хорошо ok
  • настроить. ОК
  • регистрация ошибок? конечно!:-) нам нужно это! исправить ошибки!
  • все на cruisecontrol.net приятно.