Настройка разнообразной среды тестирования базы данных - PullRequest
6 голосов
/ 17 апреля 2009

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

  • MySql
  • Sql Server 2000 до 2008
  • PostgreSQL
  • Oracle 9i & 10g
  • Jet 4.0 (MS Access)
  • MSDE
  • Sybase Adaptive Server Anywhere
  • Sybase Sql Anywhere
  • Progress OpenEdge

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

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

Некоторые мысли:

  • Отдельные виртуальные машины для каждого из продуктов, каждый из которых выделил небольшой объем памяти (проще управлять для определенных сценариев или когда у нас немного разные настройки для отдельных продуктов).
  • Пара виртуальных машин или даже одна виртуальная машина для всех продуктов (т. Е., Возможно, Ubuntu Box для Postgresql & MySQL и сервер Windows 2008 для остальных продуктов) - мне нравится один или два виртуальных машины, потому что это более портативная среда для запуска тестов, то есть в дороге или за ее пределами, поскольку мой ноутбук, вероятно, остановится, запустив 8 или 10 маленьких виртуальных машин.

И, наконец, как вы справились с непомерной стоимостью некоторых из этих коммерческих продуктов, например, Oracle или Progress OpenEdge, и все еще доступны предыдущие версии, т. Е. Существуют ли бесплатные версии для одного разработчика или более дешевые способы приобретения этих продуктов?

Ответы [ 6 ]

6 голосов
/ 22 апреля 2009
  • Мы также используем vmware для наших серверов, по одному хосту vmware на базу данных. У вас должно быть все в порядке с размещением нескольких баз данных на одном VMware.
  • У вас не должно быть особых проблем с дорогими лицензиями на программное обеспечение. Oracle, например, позволяет вам иметь лицензию на разработку для всех своих продуктов. Пока вы не используете производственную БД на вашем ноутбуке VMware, все будет в порядке. Конечно, IANAL.
  • Для Oracle получите Enterprise Edition, если именно это будут использовать ваши клиенты (скорее всего).
  • Обязательно воспользуйтесь снимками VMware. Вы можете настроить базы данных идеально для запуска ваших тестов, запустить тесты, а затем вернуть базы данных в состояние, предшествующее тестированию, готовое к повторному запуску тестов.
1 голос
/ 22 апреля 2009

Выдержка из лицензии Oracle:

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

Таким образом, вы можете скачать полные версии Oracle 9, 10 и 11 и использовать их бесплатно, как указано в лицензии. Проверьте раздел загрузок на www.oracle.com

1 голос
/ 22 апреля 2009

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

Для наиболее точного диапазона тестирования вы, вероятно, захотите иметь отдельную виртуальную машину для каждой конфигурации. Это уменьшит риск конфликтующих конфигураций, а также увеличит гибкость запуска пользовательского набора виртуальных машин (например, Oracle + MySQL + PostgreSQL, а не другие и т. Д.). В зависимости от вашего процесса сборки, он также может позволить вам запускать 10-минутные сборки.

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

1 голос
/ 17 апреля 2009

Oracle имеет бесплатную версию Express Edition. Он не обладает всеми функциональными возможностями Oracle, но если вы также используете Jet, тогда это не должно быть проблемой.

1 голос
/ 17 апреля 2009

То, что мы здесь делаем, - это (в основном) виртуальная машина для каждой требуемой конфигурации, мы также нацелены на разные операционные системы, поэтому имеем примерно 22 конфигурации, которые мы тестируем. Эти виртуальные машины размещены на сервере ESX, и их сценарии запускаются и останавливаются при необходимости, чтобы не все они работали одновременно. Это была партия работы по настройке.

С точки зрения стоимости серверов баз данных, тип программного обеспечения, которое мы создаем, требует топовых версий, поэтому затраты на тестирование были учтены в общих затратах на разработку (нам просто пришлось «смириться»)

0 голосов
/ 29 апреля 2009

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

Коробка Windows Server 2008, на которой размещено следующее:

  • MSDE
  • Jet 4.0 (MS Access)
  • Sybase Adaptive Server Anywhere
  • Sybase Sql Anywhere
  • Progress OpenEdge

На коробке с Ubuntu или Red Hat:

Я не вижу необходимости в тестировании на полноценные версии SQL и Oracle. Бесплатные выпуски урезаны, поэтому существует очень небольшой риск взлома этого кода при запуске его на полной версии этих серверов. Если вы провели тестирование на полном сервере и перешли к бесплатному, то да, некоторые вещи могут сломаться, но при тестировании с наименьшим общим знаменателем вы должны обеспечить хорошее качество.

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