2012-04-02 2 views
1

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

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

  1. Создайте два HTTP-клиента со свежими сессиями
  2. Запроса/моей/страницы/1 с клиентом 1
  3. Запрос/мой/страница/2 с клиентом 2
  4. POST данные с клиента 2
  5. POST данные с клиентом 1
  6. Issue параллельный запрос/мои/страница/Результаты обоих клиентов
  7. т.д.

Существуют ли какие-либо библиотеки, которые делают этот вид тестирования проще или мне придется свернуть мое в какой-то степени?

Я знаю Селен и ВатиН, но лично не использовал ни один проект. Из чтения документов, ни один из них не является хорошим совпадением.

Возможно, лучший вариант - это просто NUnit и хорошо использовать класс .NET WebClient?

+0

Просто, чтобы обеспечить вас право - Селен может сделать это в теории, но вы бы чтобы сделать большую часть работы самостоятельно. Вы можете управлять несколькими браузерами, но вам придется отправлять параллельные команды самостоятельно. –

+0

Я согласен, что это можно сделать в Selenium, но вы должны «опрокинуть свой собственный» многопоточный тест, чтобы получить мелкозернистый контроль. Просто создайте сеансы n-selenium и контролируйте их через потоки в своем тесте. Существуют также тестовые рамки, которые также поддерживают параллельные параллельные тесты селена, но затем вы теряете мелкозернистый аспект управления. – TGH

+0

@TGH: Да, я видел селен-сетку, но это не звучало так, будто это предлагало уровень контроля, который я ищу. – Lucas

ответ

0

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

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

Чтобы сделать это, я полагаю, вы можете использовать любой из Selenium или WatiN следующим образом (не проверено, это только в моем сознании)

Селен (с WebDriver):

using (var firefox1 = new FirefoxDriver(profile)) 
using (var firefox2 = new FirefoxDriver(profile)) 
{ 
    requestPageOne(firefox1); 
    requestPageTwo(firefox2); 
    postPageTwo(firefox2); 
    postPageOne(firefox1); 
    //// ... 
} 

WatiN

using (var firefox1 = new FireFox(url1)) 
using (var firefox2 = new FireFox(url2)) 
//// ... 
Смежные вопросы