Лучшие практики для интеграции модульного тестирования с непредсказуемым сторонним ресурсом, который вы не можете контролировать - PullRequest
1 голос
/ 06 января 2011

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

В связи с этим у меня возникают следующие проблемы:

  • Мои тесты должны включатьличные данные (имя пользователя и пароль) для входа в систему
  • Данные, которые я ищу, больше не будут действительны в течение 24-48 часов после того, как идентификатор, указывающий на эти данные, был закодирован в тест (s) и нужно будет выбрать новые данные, соответствующие сценарию тестирования

, что вызывает следующие вопросы:

  • Как и где я должен ссылаться на эти данные, чтобы предотвратитьот случайного попадания в систему контроля версий?
  • Есть ли способ запросить этот ввод как предварительное условие для запуска соответствующих тестов?
  • Как мне решить проблему, возникающую в сценариях автоматической сборкине удается выполнить тестирование каждые несколько дней?
  • Каковы наилучшие практики для написания тестов, которые связаны с тего сценарий?

Я использую среду модульного тестирования Microsoft с .Net 4.

Ответы [ 2 ]

2 голосов
/ 06 января 2011

Я сталкивался с этим общим классом проблем раньше, когда писал автоматические тесты.В общем, они связаны с неуправляемым ресурсом.Этот ресурс может быть службой SOAP, сетью или в вашем случае веб-сайтом.

Мой общий подход состоит в том, чтобы иметь тесты, которые могут работать в 2 режимах.

Неуправляемый режим

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

Управляемый режим

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

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

Это не точное решение вашей проблемы, но вы рассматривали возможность тестирования на поддельном веб-сайте?напишите свой собственный «веб-сайт», который существует как часть тестовой среды и ведет себя предсказуемым и последовательным образом.Все, что нужно сделать, это ответить на минимальный набор запросов.

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

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