Тестирование взаимодействия с внешними системами - PullRequest
1 голос
/ 30 декабря 2010

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

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

  • Создать дамп только схемы, восстановить локально, а затем вставить тестовые данные в настройку?
  • Пойдете ли вы так далеко, чтобы протестировать функцию архивирования, сравнив размеры файлов, проверив тип файла gzip и т. Д .?
  • Как бы вы протестировали проблемы синхронизации для таких длительных задач? Возможно сохранить полный снимок для локального тестирования для тестирования?
  • Не могли бы вы также создать локальные тестовые репозитории для SVN и других подобных зависимостей?

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

1 Ответ

1 голос
/ 11 января 2011

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

В наших тестовых системах наши обычные сценарии обработки базы данных начинаются примерно так::

case `hostname` in
 *-test) dbname=db1-test ;;
 *)      dbname=db1 ;;
esac

Это позволяет нашим обычным производственным SQL-сценариям ссылаться на правильную базу данных, работающую в производственной или тестовой системе (одна из которых заканчивается на -test).

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

Если у вас нет отдельной тестовой системы или соглашения, позволяющего простой выбор имени dbname, то, возможно, с помощью переменной среды для присвоения имениподходящее имя базы данных или хранилище?RAILs делает это с помощью переменной RAILS_ENVIRONMENT.

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