Карантинная среда тестирования для PHP - PullRequest
2 голосов
/ 26 апреля 2011

Я нахожусь в процессе интеграции репозитория Git в рабочий процесс компании, и начальник хочет, чтобы у него была возможность протестировать код php перед развертыванием в рабочей среде.Цель состоит в том, чтобы иметь три среды: dev, test и production.

Таким образом, рабочий процесс будет выглядеть примерно так:

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

Теперь здесь есть пара уловов:

  1. Компания хочет использовать фактические данные из действующего окружения, чтобы лучше судить, правильно ли ведет себя программа в окружении тестирования.Я чувствую себя комфортно, синхронизируя данные, и, по сути, делаю синхронизацию живых БД по ночам с тестовой БД.
  2. Программа отправляет электронную почту клиентам на регулярной основе, поэтому мне нужен способ перехватить любой звонок на почту () и перенаправить эту попытку либо в файл журнала, либо на другой адрес электронной почты.
  3. Программа также обрабатывает биллинг, хотя я довольно уверен, что могу просто переключить интеграцию платежного процессора с реального времени в среду песочницы (т.е. paypal, auth.net и т. д.)

Буду признателен за любые мысли и идеи о том, как это сделать.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 26 апреля 2011

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

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

2 голосов
/ 26 апреля 2011

Я видел подобные подходы, написанные в приложениях ранее, и видел, как реализовано следующее:

  • Стандартный класс "mail", используемый для создания / отправки всех исходящих электронных писем.Таким образом, вы можете легко изменить поведение в средах разработки / разработки.Хороший способ сделать это - отправить всю электронную почту из этой системы либо в общий почтовый ящик, либо на адрес электронной почты вошедшего в систему пользователя (выполнение тестирования) и включить в сообщение заголовок, в котором говорится, что это с тестовой платформы.и кому он был бы отправлен на самом деле, если бы он был на производстве.
  • В других настройках я видел MTA, настроенный на чёрную дыру
  • , четко определенные способы, позволяющие приложению обнаруживатьв какой среде он работает, чтобы он мог понять, как себя вести.Переменные окружения, установленные в конфигурации Apache (я предполагаю, что вы используете Apache), чтобы определить платформу и затем настроить функциональность, которая позволяет вам наследовать от набора общих параметров и перегружать определенными, где это необходимо.Zend Framework Zend_Config действительно хорошо справляется с этим.
  • Чтобы легко тестировать ваш код или заменять компоненты, хороший OO-дизайн и Dependency Injection действительно помогут в том, насколько хорошо вы сможете тестировать вещи.
  • Подумайте об использовании какого-либо инструмента непрерывной интеграции, такого как Hudson или PHP под контролем
  • Подумайте о взгляде на Capistrano или Phing, чтобы упростить развертывание на разных платформах
1 голос
/ 26 апреля 2011
  1. Насколько точными должны быть данные? Нужно ли быть производственными данными или просто , как это? Вы можете избежать импорта, который вы запускаете вручную, когда у вас есть изменение схемы или что-то в этом роде.

  2. Другой альтернативой здесь может быть запуск обновления таблицы БД, содержащей ваши контакты, который добавляет «.invalid» или что-то в конец адресов электронной почты, которые не требуют какой-либо другой конфигурации.

  3. Среда «песочницы» для ваших авторизаций оплаты обязательно будет функцией используемого вами шлюза.

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

0 голосов
/ 26 апреля 2011
  1. Это будет утомительно, если у вас большой набор данных.Если вы используете MySQL, вы можете перехватить журнал бина и повторно запустить его при тестировании, чтобы синхронизировать данные.

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

  3. та же конфигурация, что и выше.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...