2012-04-28 12 views
1

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

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

ответ

0

Если вы получаете доступ к данным через DAO (объект доступа к данным), вы можете создать макет этого объекта для проверки кода, я использовал Mockito для этого в проекте. Если код, который вы тестируете, напрямую обращается к базе данных, вам нужно указать его на «тестовую базу данных» ...

Дополнительной особенностью насмешек являются так называемые шпионские объекты, то есть макет обернутый вокруг базового реального объекта, где вы можете переопределить некоторые из методов с помощью кода тестирования, то есть отключить удаление, создать маски и т. д., тогда как все методы, не содержащие mock-overriden, будут переданы непосредственно в основной объект ... проверьте: http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html

+0

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

+0

существует несколько возможных решений: есть расширение JUnit для тестирования базы данных, возможно, будет возможно использовать: http://www.dbunit.org/howto.html. ИЛИ вы можете создать собственный драйвер JDBC для работы в качестве фильтра поверх реального драйвера JDBC, см. Http://www.javaworld.com/javaworld/jw-05-2002/jw-0517-jdbcdriver.html –

+0

нет в первый раз кто-то спросил об этом: http://stackoverflow.com/questions/266370/how-do-i-unit-test-jdbc-code-in-java –

2

RedGate Sql Data Masker http://www.red-gate.com/labs/sql-data-masker/ был разработан для этой проблемы, но он не является бесплатным и не является открытым исходным кодом. Вы можете зацикливаться на некоторой функции рандомизации, чтобы просто генерировать много мусора, хотя похоже, что вы ищете «купить» над «сборкой».

+0

Я пробовал, что это кажется работает только этот SQL Server. – Kai

1

При маскировке необходимо учитывать различные моменты. Например:

  • Знаете ли вы, где ВСЕ чувствительные данные находятся в базе данных;
  • Насколько важна ссылочная целостность;
  • согласованность с течением времени и между необходимыми базами данных;
  • в какой мере вы надеетесь отменить идентификацию каждой информации;
  • Вам действительно нужно маскировать всю базу данных?

Если вы в состоянии удовлетворить эти предметы вручную, то это здорово! Однако, если вы хотите, чтобы это было сделано своевременно, при этом снижая затраты (не говоря уже о защите компании и ее базы данных от воздействия), я предлагаю вам взглянуть на «Лучшая практика для маскирования данных» на www.datamasking .com

Надеюсь, это поможет!