WedX - журнал о программировании и компьютерных науках

Новый экземпляр WebDriver для каждого метода тестирования?

Как лучше всего создавать экземпляры webdriver в Selenium-webdriver? Один раз для каждого метода тестирования, для каждого тестового класса или для каждого тестового прогона?

Их развертывание кажется довольно (очень!) Дорогостоящим, но если держать его открытым между тестами, существует риск утечки информации между методами тестирования.

Или есть альтернатива - один экземпляр webdriver - это одно окно браузера (исключая всплывающие окна), или есть метод для запуска нового окна / сеанса из данного экземпляра драйвера?

Спасибо Мэтт

03.07.2011

Ответы:


1

Я обнаружил, что повторное использование экземпляров браузера между методами тестирования значительно сэкономило время при использовании реальных браузеров, например. Fire Fox. При запуске тестов с HtmlUnitDriver пользы очень мало.

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

Одна вещь, которую вам определенно следует сделать, если вы собираетесь повторно использовать экземпляры браузера, - это очищать / сохранять файлы cookie между запусками.

driver.manage().deleteAllCookies();

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

22.09.2011

2

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

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

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

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

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

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

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

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

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

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


    Для любых предложений по сайту: [email protected]