Облегчает ли какая-либо инфраструктура тестирования веб-сайта параллельное тестирование? - PullRequest
1 голос
/ 03 апреля 2012

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

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

  1. Создание двух HTTP-клиентов со свежими сессиями
  2. Запрос / my / page / 1 с клиентом 1
  3. Запрос / my / page / 2 с клиентом 2
  4. POST-данные с клиентом 2
  5. POST-данные с клиентом 1
  6. Отправка параллельного запроса / my / page / results с обоих клиентов
  7. и т. Д.

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

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

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

1 Ответ

0 голосов
/ 07 июня 2012

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

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

Для этого я предполагаю, что вы можете использовать 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))
//// ...
...