Насколько я понимаю, Karma – это средство запуска тестов JavaScript, которое может запускать тесты в реальных браузерах. Если это так, то какое тестовое покрытие обеспечивает Selenium помимо Karma?
Какое тестирование покрывает Selenium помимо Karma?
Ответы (3)
Между Кармой и Селеном огромная разница. Selenium имеет встроенный механизм управления браузером, а Karma — нет. Таким образом, Selenium больше подходит для сквозного тестирования, например, с помощью nightwatch.js. Karma предназначена для юнит-тестов, поэтому на ней намного сложнее добиться сквозных тестов, можно добавить например лаунчер phantomjs, но он никогда не будет таким же, как настоящие браузерные тесты с Selenium... Я думаю, что и то, и другое они могут запускать любую среду тестирования js, если у вас есть адаптер... Mocha, jasmine, qunit и т.д...
Вечность спустя:
С помощью Karma можно писать e2e-тесты. Вам нужно создать iframe или открыть новое окно и запустить скрипт, который выполняет навигацию, запускает события, отправляет формы и т. д. из родительского фрейма или окна. Тестируемая страница должна разрешить ваш сервер Karma с CORS или вам нужно отключить безопасность браузера. Я работаю над библиотекой тестирования e2e, которая делает именно это.
Существует несколько версий Selenium, самой новой (я полагаю) из которых является Selenium Web Driver, который позволяет вам создать драйвер, который будет обрабатывать браузер для вас, имитируя действия, которые взаимодействуют с пользовательским интерфейсом так же, как пользователь (через Json провод).
Мое текущее понимание Karma (которое, могу добавить, очень ограничено) заключается в том, что оно в значительной степени зависит от выполнения javascript. Из-за этого Karma должен был бы вызывать события изменения элементов (например, «размытие» и «наведение курсора»), тогда как Selenium просто щелкал бы, табулировался, перемещал курсор. Браузеры Selenium ограничены теми, которые указаны на их веб-странице здесь.
Это зависит от того, что вы тестируете. Если вы используете 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 для автоматизированного тестирования позволит перенести навыки в разработку и наоборот для разработчиков в автоматизированное тестирование.