Тестирование расширений браузера

Я собираюсь написать кучу расширений браузера (та же функциональность для каждого популярного браузера). Я надеюсь, что часть кода будет разделена, но я пока не уверен в этом. Наверняка некоторые расширения будут использовать собственный API. У меня нет большого опыта работы с TDD/BDD, и я подумал, что пришло время начать следовать этим идеям из этого проекта.

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

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

2 ответов


Я практикую два разных способа тестирования расширений браузера:

  • тесты
  • интеграционного тестирования

введение

Я буду использовать кросс-браузер YouTube тексты песен Роб W.

на сафари-Ривер, я написал два класса для установки пользовательского расширения Safari. Я опубликовал его и отправил в PR Selenium, поэтому он может быть доступен всем в будущем:https://github.com/SeleniumHQ/selenium/pull/87

на OperaDriver не поддерживает установку пользовательских расширений (технически, это должно быть возможно).
Обратите внимание, что с пришествие Chromium-powered Opera, старый OperaDriver больше не работает.

здесь Драйвер Internet Explorer, и это определенно не позволяет установить пользовательское расширение. Internet Explorer не имеет встроенной поддержки расширений. Расширения устанавливаются через установщики MSI или EXE, которые даже не интегрированы в Internet Explorer. Итак, чтобы автоматически установить расширение в IE, вам необходимо иметь возможность молча запустите установщик, который устанавливает ваш плагин IE. Я не пробовал это пока.


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

шаги, которые я использую:

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

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

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

http://docs.seleniumhq.org/

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

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

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