Предположим, вы используете процессы непрерывной интеграции, которые часто обновляют некоторые целевые среды, так что каждый раз, когда происходят некоторые изменения, «вы» можете сразу же проверить свои изменения. Это часть целей КИ, нет?
Но также предположим, что в вашем цикле тестирования участвуют другие люди, например, менеджеры или клиенты. Имеет ли смысл вовлекать других людей в попытки пересмотреть (сломать?) Ваши предстоящие изменения, не так ли?
Но если вы постоянно продолжаете вносить изменения в среду, в которой эти другие люди всерьез пытаются их протестировать, то могут возникнуть многочисленные проблемы, такие как:
they
может тратить свое время на сообщение о проблемах, которые к тому времени, когда они сохраняют (подробно) отчет, не могут даже больше воспроизвести проблему самостоятельно (например, потому что вы случайно столкнулись с той же проблемой и уже устранили ее в своей среде).you
возможно, не сможет воспроизвести проблемы, о которых они сообщили, поскольку среды, в которых они столкнулись с какой-либо проблемой, больше не идентичны (вы (!!!) могли перекрывать их среду).
Так что вы можете сделать (как настроить вещи?), Чтобы избежать таких (разочаровывающих) ситуаций?
источник
Похоже, вы говорите о тестовой среде, которая постоянно используется повторно без надёжной повторной инициализации при каждом выполнении теста. Это делает такой тест ненадежным. Похоже, с точки зрения надежности, с ручным тестированием, если хотите.
ИМХО, вам не следует использовать такое тестирование в целях квалификации CI / CD, так как это фактически сделает недействительным ваш процесс квалификации (по крайней мере, в этой области). Утверждение о том, что программное обеспечение проходит тест X без фактического выполнения теста X для каждой поставленной версии программного обеспечения или без уверенности в том, что
pass
полученный результат не является случайным (из-за ложных срабатываний), подорвет уровень достоверности вашего тестирования. Ложные негативы не наносят ущерба достоверности, но они также нежелательны из-за ненужного «шума», который они создают.Это нормально выполнять такое тестирование вне вашего процесса квалификации CI / CD. Но в таком тестировании вы бы рассматривали неудавшийся результат так же, как обнаруженную клиентом ошибку: вам необходимо надежно воспроизвести проблему, чтобы иметь возможность разработать исправление для нее и подтвердить, что исправление работает. И вы не можете сделать это, если тестирование не является надежным.
Если вы планируете решить проблему, то в идеале вы должны сначала разработать автоматизированный, надежный контрольный пример для воспроизведения проблемы. Который вы использовали бы для разработки исправления и подтверждения его эффективности (результат теста должен перейти из FAIL в PASS). Вы также можете (должны?) Поместить этот тестовый сценарий в процесс квалификации CI / CD, чтобы предотвратить повторение в будущем, если это необходимо, для повышения общего уровня качества выпуска программного обеспечения.
источник
inside
Иoutside
ссылки относительно цикла проверки ДИ. По сути, я подвергаю сомнению причину существования среды QA - большинство тестов, проводимых там, должны быть надежными и в конечном итоге выполняться как часть проверок CI, особенно в контексте непрерывного развертывания, - поскольку вы хотите выполнять их на каждой итерации CI (успешно по крайней мере, до этого момента) в любом случае.Обычный подход заключается в создании разных сред:
DEV - это то место, где команда разработчиков бездельничает. Здесь создаются все изменения настроек, разворачивается новая версия и так далее. Здесь место, где CI полностью интегрирован.
PREPROD / QA - это место, где «играют» QA / test / validation, команда делает тесты. Эта среда обычно замерзает во время испытаний. Интеграция CI с этой средой заключается только в предоставлении новой версии продукта, конфигураций и т. Д.
ПРОИЗВОДСТВО - это нужно объяснять :)?
источник
Если вы выполняете CI / CD, это означает, что перед развертыванием (CD) происходят некоторые автоматические тесты (CI). Если вы обнаружите много проблем в тестовой среде, это означает, что они не будут обнаружены тестами, выполняемыми до развертывания; это указывает на недостаточное автоматизированное тестирование. Если у разработчиков возникают проблемы, когда в тестовой среде возникают проблемы, им необходимо улучшить свои автоматизированные тестовые наборы, чтобы предотвратить это. Это также улучшит качество и надежность в целом, вплоть до производства.
источник
Чтобы добавить ответ Ромео Нинова, внутри среды вам нужно постараться максимально разделить приложения. Это частично, почему Docker был настолько успешным для dev / test. Это позволяет вам почти притворяться, что вы не делитесь средой вообще.
Другой вариант - иметь четко определенные серверы, на которых работают приложения, которые отделены от остальной инфраструктуры, которая составляет вашу среду. То есть. Все механизмы управления средой или ее поддержки работают на отдельных долгоживущих серверах. Затем вы подключаете новые недолговечные серверы на основе известного образа для тестирования приложения, и, если в базовый образ вносятся какие-либо изменения, вам необходимо применять эти изменения везде для каждого нового компонента. Что означает тестирование изменений против всего.
Если команда appdev запрашивает изменение, которое нарушает чье-либо приложение, то не повезло, им нужно внутренне создать смягчающий элемент в своем коде и отделить свои конкретные требования от предлагаемых сред.
источник