Каковы некоторые аргументы против использования Непрерывной Интеграции?

Первая часть, 02/15/2019 2 AM может быть проанализирована с библиотеками, такими как Moment.js , Luxon или Date-fns .

Однако один не может анализировать сокращения часовых поясов в глобальном масштабе. Каноническим примером является сокращение CST, которое можно интерпретировать как Центральное стандартное время США, Центральное стандартное время Австралии, Стандартное время Китая или Стандартное время Кубы. Существует также много других неясностей.

Следовательно, только когда вы уже знаете все сокращения, с которыми вы столкнетесь, и то, как вы хотите их интерпретировать, вы можете сопоставить сокращение со смещением часового пояса. Например, если вы заботитесь только о времени в континентальной части США, вы можете отобразить следующее:

EDT = -4
EST = -5
CDT = -5
CST = -6
MDT = -6
MST = -7
PDT = -7
PST = -8

Но тогда, если вы хотите добавить на Аляске и Гавайях, вам может потребоваться добавить: [1116 ]

AKDT = -8
AKST = -9
HADT = -9
HAST = -10
HST = -10

Заметьте, как HST и HAST используются для Гавайев? Оба обычно используются там. Даже если вы решите, что хотите HST, вам все равно нужны HAST и HADT для Алеутских островов на Аляске, которые находятся в другом часовом поясе, чем остальная часть Аляски.

А как насчет других территорий США, включают ли они ваши данные?

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

22
задан TraumaPony 18 October 2008 в 06:49
поделиться

6 ответов

(Стоит отметить, что "непрерывной интеграцией" я имею в виду , автоматизировал , интеграция с автоматизировала , процесс сборки и автоматически запускает тесты, и автоматически обнаруживает отказ каждой части.

также стоит отметить, что "непрерывная интеграция" просто значит для соединительной линии или тестового сервера. Это не означает, "продвигают каждое живое изменение".

существует много способов сделать непрерывную интеграцию неправильно.)

<час>

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

, Если Ваша сборка и/или тесты занимают много времени тогда, непрерывная интеграция может стать дорогой. В этом случае запустите тесты, очевидно, связанные с Вашим изменением перед фиксацией (инструменты анализа покрытия, как Devel:: CoverX:: Покрытый может помочь обнаружить, какие тесты идут с тем, какой код), сделайте свое интеграционное тестирование после фиксации с помощью чего-то как SVN:: Уведомьте и предупредите разработчиков, если это перестало работать. Заархивируйте результаты испытаний с помощью чего-то как , Тлеют . Это позволяет разработчикам работать быстро, не имея необходимость сидеть без дела, наблюдая выполненные наборы тестов при тихой ловле ошибок рано.

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

Разъединение часто помогает, вспыхивая подсистемы в независимые проекты. Меньший объем делает для более легкого понимания и более быстрых сборок и тестов. Каждая фиксация может сделать полную сборку и тест, не причиняя беспокойство программисту. Тогда все подпроекты могут быть собраны вместе, чтобы сделать интеграционное тестирование.

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

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

23
ответ дан 29 November 2019 в 04:34
поделиться

Я не думаю, что существуют любые оборотные стороны к нему. Но ради аргумента, вот статья Eric Minick о UrbanCode ("Это - о тестах не сборки".) Он критикует инструменты, которые основаны работа Martin Fowler высказывание, что они не позволяют достаточному количеству времени для тестов.

, "Чтобы быть действительно успешным в CI, Fowler утверждает, что сборка должна самотестировать и что эти тесты включают и единицу и от начала до конца тестирование. В то же время сборка должна быть очень быстрой - идеально меньше чем десять минут - потому что она должна работать на каждой фиксации. Если существует значительное количество сквозных тестов, выполняя их во время изготовления при хранении целого процесса, менее чем десять минут нереалистичны.

Добавляют в спросе на сборку на каждой фиксации, и требования начинают чувствовать себя невероятными. Опции являются или более медленной обратной связью или удалением некоторых тестов".

12
ответ дан 29 November 2019 в 04:34
поделиться

У James Shore был большой ряд записей в блоге на опасностях думать, что использование инструмента CI как CruiseControl означало выполнение непрерывной интеграции:

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

9
ответ дан 29 November 2019 в 04:34
поделиться

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

первый - когда король просто не имеет смысла. Я в настоящее время разрабатываю несколько маленьких внутренних приложений. Приложения обычно очень тривиальны, и целый жизненный цикл разработки составляет приблизительно неделю или два. Для надлежащей установки все для CI, вероятно, удвоило бы это, и я, вероятно, никогда не буду видеть те инвестиции назад снова. Можно утверждать, что я верну его в обслуживании, но эти приложения так вероятны быть отброшенными, как они обновляются. Следует иметь в виду, что Ваше задание должно, вероятно, поставить программное обеспечение, не достигают 100%-го покрытия кода.

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

4
ответ дан 29 November 2019 в 04:34
поделиться

При запуске это требует времени для установки всего.

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

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

0
ответ дан 29 November 2019 в 04:34
поделиться

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

-4
ответ дан 29 November 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: