Автоматическое тестирование .NET для длительных процессов - PullRequest
6 голосов
/ 04 ноября 2011

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

Однако данные могут появиться на веб-сайте в течение нескольких часов.

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

Я видел PNUnit , который можно использовать для параллельного запуска всех тестов, но это не кажется мне элегантным решением. Что делать, если есть 1000 тестов? Разве это не создаст множество процессов / потоков на сервере? И как отследить их всех.

Так кто-нибудь решил эту проблему? Вы сами создали решение или есть решение с открытым исходным кодом для этого?

Ответы [ 4 ]

2 голосов
/ 26 ноября 2011

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

1 голос
/ 26 ноября 2011

Похоже, что PNUnit будет хорошим решением. Если вас беспокоит «слишком много процессов / потоков» на сервере, просто дросселируйте, сколько тестов PNUnit может выполнить одновременно (скажем, Max N); Когда тест завершится, запланируйте следующий тест. Я не утверждаю, что PNUnit знает, как это сделать; Возможно, вам придется реализовать этот обычай.

0 голосов
/ 29 ноября 2011

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

Тем не менее, как уже упоминалось выше, вы можете разделить нагрузочные тесты и проверочные тесты данных. Признаюсь, я ничего не знаю о PNunit, но простое добавление потоков не решит задержки в 3 часа для каждого теста туда и обратно.

если вам нужно работать синхронно, вы можете загрузить все данные в ClassInitialize (), а затем спать, пока не настало время проверить и запустить реальные тесты.

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

0 голосов
/ 28 ноября 2011

В Google NUnit-Discuss Google Group сейчас обсуждается именно эта проблема: http://groups.google.com/group/nunit-discuss/browse_thread/thread/645ecaefb4f978fa?hl=en

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

...