Какой смысл постановки?

18

Я думал, что решил это, но после прочтения « Непрерывной доставки» (отличная книга) я немного растерялся. Они говорят о наличии серверов для:

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

Я всегда думал о постановке, как о предоставлении функции UAT, но они, похоже, имеют отдельный уровень. Итак, в этой схеме какую функцию будут выполнять промежуточные серверы?

Хэмиш Даунер
источник
10
Я не могу сказать, что согласен с этой методологией. UAT всегда должен быть сделан как можно ближе к действующей системе (т. Е. К постановке). Я не могу сосчитать, сколько раз мы делали UAT и каждый жаловался на проблемы со скоростью, которым мы должны тысячу раз объяснить, что «живая система будет быстрее». И затем, когда живая система НЕ работает быстрее из-за ошибки в коде или запроса SQL, вам нужно съесть свои собственные слова.
Марк Хендерсон
UAT = пользовательские приемочные испытания, верно?
Мартин Тома

Ответы:

13

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

UAT обычно использует среду «тестирования», которая значительно отличается от аппаратного / программного обеспечения / конфигурации, которая будет использоваться в производстве.

Например, там, где я работаю, клиенты тестируют все в среде виртуальных машин, работающих на наших серверах. Когда их система заработает, она будет работать на их оборудовании, на их объектах, возможно, интегрируясь с их существующими системами; это не имеет абсолютно никакого отношения к нашим серверам или тестовой среде (за исключением того, что код и некоторая конфигурация были скопированы оттуда ...)

Крис С
источник
Обычно дополнительное тестирование проводится и на промежуточном сервере, а не только в UAT - непосредственно перед началом работы.
Jftuga
3
@jftuga, см. последнее предложение первого абзаца ...
Крис С
@Chris S: Если я вас правильно понимаю, то не существует такого понятия, как «промежуточный сервер», просто рабочий сервер, который находится вне пула и в настоящее время не обслуживает конечных пользователей. Это имеет смысл и является методологией, которой я следую, но я не называю эти серверы «промежуточными серверами», а просто производственными серверами (которых нет в пуле). Поскольку везде, где я работал, где используются промежуточные серверы, они представлены как отдельные серверы, я не думаю, что ваше описание промежуточного сервера является стандартным использованием этого термина. Хорошая идея, но не то, что обычно подразумевается под «промежуточным сервером» (по моему опыту, во всяком случае).
иконоборчество
1
@ Брендон По вашему опыту, что такое «промежуточный сервер»? Это может быть региональной разницей, такой как «подпрыгивание» сервера.
Крис С
Мне кажется, это зависит от организации. Я видел его в качестве UAT-сервера, в качестве сервера для разработчиков, чтобы поместить приложение в среду, предположительно идентичную рабочей, и, возможно, другим вещам. (Лично я считаю, что единственной хорошей стратегией является использование реального производственного сервера для постановки.) Поскольку разные организации разрабатывают свою собственную культуру, я думаю, что они также разрабатывают свой собственный лексикон, и поэтому слова, которые должны иметь стандартное значение во всей отрасли, часто к сожалению нет.
иконоборчество
17

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

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

Итак, вот что мы делаем:

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

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

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

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

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

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

Фил Холленбек
источник
5

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

Примером этого может служить Windows Azure, для развертывания новой версии которой требуется 5-25 минут, но вы можете развернуть ее в промежуточной среде, выполнить тесты, а затем мгновенно поменять производственную и промежуточную среды .

Грег Брей
источник
0

Я только что наткнулся на эту статью о постановочной среде, которая говорит

Постановка - это когда вы проверяете известные-неизвестные ваших систем.

Статью стоит прочитать полностью.

Хэмиш Даунер
источник