Какое тестирование покрывает Selenium помимо Karma?

Насколько я понимаю, Karma – это средство запуска тестов JavaScript, которое может запускать тесты в реальных браузерах. Если это так, то какое тестовое покрытие обеспечивает Selenium помимо Karma?


person Jason Weden    schedule 20.12.2012    source источник


Ответы (3)


Между Кармой и Селеном огромная разница. Selenium имеет встроенный механизм управления браузером, а Karma — нет. Таким образом, Selenium больше подходит для сквозного тестирования, например, с помощью nightwatch.js. Karma предназначена для юнит-тестов, поэтому на ней намного сложнее добиться сквозных тестов, можно добавить например лаунчер phantomjs, но он никогда не будет таким же, как настоящие браузерные тесты с Selenium... Я думаю, что и то, и другое они могут запускать любую среду тестирования js, если у вас есть адаптер... Mocha, jasmine, qunit и т.д...

Вечность спустя:

С помощью Karma можно писать e2e-тесты. Вам нужно создать iframe или открыть новое окно и запустить скрипт, который выполняет навигацию, запускает события, отправляет формы и т. д. из родительского фрейма или окна. Тестируемая страница должна разрешить ваш сервер Karma с CORS или вам нужно отключить безопасность браузера. Я работаю над библиотекой тестирования e2e, которая делает именно это.

person inf3rno    schedule 20.04.2014
comment
Когда я использую программу запуска Chrome от Karma, она запускает экземпляр Chrome. Разве это не то же самое, что использовать Chrome? Не риторический, серьезно не знаю - person Francisc0; 27.03.2017
comment
@Francisc0 Если я хорошо помню, то Karma запускает сервер, который отправляет ваши тестовые файлы в браузер. Так что да, это похоже на запуск Chrome вручную и выполнение ваших тестов. офк. выполнение этого автоматически имеет некоторые преимущества, например. вы можете запустить свои тесты в travis после загрузки его на github, и он напишет, что сборка прошла. Еще одно преимущество в том, что вы можете запускать свои тесты в нескольких браузерах параллельно. - person inf3rno; 26.06.2018

Существует несколько версий Selenium, самой новой (я полагаю) из которых является Selenium Web Driver, который позволяет вам создать драйвер, который будет обрабатывать браузер для вас, имитируя действия, которые взаимодействуют с пользовательским интерфейсом так же, как пользователь (через Json провод).

Мое текущее понимание Karma (которое, могу добавить, очень ограничено) заключается в том, что оно в значительной степени зависит от выполнения javascript. Из-за этого Karma должен был бы вызывать события изменения элементов (например, «размытие» и «наведение курсора»), тогда как Selenium просто щелкал бы, табулировался, перемещал курсор. Браузеры Selenium ограничены теми, которые указаны на их веб-странице здесь.

person Nashibukasan    schedule 20.12.2012
comment
есть ли способ обернуть эти события пользовательского интерфейса, вам не нужно явно вызывать их в jasmine? - person Nikos; 03.01.2014

Это зависит от того, что вы тестируете. Если вы используете javascript для написания модульных тестов - через jasmine/mocha/chai или аналогичный, то - аргумент, что карма сильно зависит от javascript, а селен - нет, является излишним.

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

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

За прошедшие годы было несколько расширенных реализаций jquery с помощью селена, но ни одна из них не имеет большого количества поклонников, и большинство из них написано на java.

Webdriverio имеет пакет npm с некоторыми функциями jquery - https://www.npmjs.com/package/webdriverio-jquery

У Karma есть возможность импортировать весь движок jquery — https://github.com/bessdsv/karma-jasmine-jquery

Это зависит от того, что тестируется. Если вы тестируете интерфейсный код, то имеет смысл использовать javascript, а jquery проще использовать, чем язык selenium, и на данный момент karma поддерживает jquery лучше, чем webdriver.

Использование jquery для автоматизированного тестирования позволит перенести навыки в разработку и наоборот для разработчиков в автоматизированное тестирование.

person Steve Tomlin    schedule 30.12.2016