2011-01-06 4 views
1

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

Таким образом, у меня есть следующие проблемы:

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

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

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

Я использую структуру Microsoft, блок тестирования с .Net 4.

+0

Несмотря на тег «unit-testing», ваш вопрос заключается не в модульном тестировании, а в тестировании системы. – Raedwald

ответ

2

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

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

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

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

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

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

1

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

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

+0

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

+0

@Nathan: достаточно справедливо. В этом случае я сомневаюсь, дает ли модульное тестирование какое-либо значимое преимущество в этом случае. Это немного похоже (ну, это точно так же), пытаясь написать единичный тест, в котором критерии тестирования могут случайно изменяться в любой момент. –

+0

Записываемый код автоматизирует передачу единицы данных через указанный набор состояний на этом веб-сайте. Однако данные возникают на этом веб-сайте. Тесты там проверяют, что взаимодействие все еще работает и что веб-сайт не изменил свои процессы, тем самым нарушив автоматизацию. –

Смежные вопросы