web-dev-qa-db-ja.com

SeleniumはKarma以上にどのようなテストをカバーしていますか?

Karma はJavaScriptテストランナーであり、実際のブラウザーでテストを実行できることを理解しています。その場合、SeleniumはKarmaに加えてどのようなテストカバレッジを提供しますか。

33
Jason Weden

KarmaとSeleniumの間には大きな違いがあります。 Seleniumには組み込みのブラウザ制御メカニズムがありますが、Karmaにはありません。したがって、Seleniumは、たとえば nightwatch.js を使用するなど、エンドツーエンドのテストに適しています。 Karmaは単体テスト用に設計されているため、エンドツーエンドのテストを達成するのははるかに困難です。たとえば、phantomjsランチャーを追加できますが、Seleniumを使用した実際のブラウザーテストと同じになることはありません...アダプターがあれば、jsテストフレームワークを実行できます... Mocha、jasmine、qunitなど...

永遠の後:

Karmaを使用してe2eテストを作成することができます。 iframeを作成するか、新しいウィンドウを開いてスクリプトを実行し、親フレームまたはウィンドウからナビゲーション、イベントの発生、フォームの送信などを行う必要があります。テストされたページでは、CORSを使用するKarmaサーバーを許可するか、ブラウザーのセキュリティを無効にする必要があります。私は e2eテストライブラリ に取り組んでいます。これはまさにこれを実行します。

27
inf3rno

Seleniumにはいくつかのバージョンがあり、最新(私は信じています)はSelenium Web Driverです。これにより、ユーザーと同様に(Jsonを介して)UIと対話するアクションをシミュレートすることにより、ブラウザーを処理するドライバーを作成できます。ワイヤー)。

Karmaについての私の現在の理解(追加できるものは非常に限られています)は、JavaScriptの実行に大きく依存しているということです。このため、カルマは要素の変更イベント(「ぼかし」や「ホバーオーバー」など)を呼び出す必要がありますが、Seleniumはクリック、タブアウト、カーソルを移動するだけです。 Seleniumのブラウザーは、Webページで指定されているブラウザー here に制限されています。

11
Nashibukasan

テストする内容によって異なります。ジャスミン/モカ/チャイまたは同等のものを介してユニットテストを記述するためにJavaScriptを使用している場合-KarmaがJavaScriptに大きく依存し、Seleniumは依存しないという引数は冗長です。

私のすべての経験では、専用の自動テスターをほとんど使用していません。Selenium言語はおそらく彼らの選択ですが、メソッドのSeleniumライブラリーは、jqueryのような同等のセレクターエンジンほど記憶するのが簡単ではありません。

専用の自動テスターが言語を習得することの難しさと、開発者がより少ない言語を習得することへの関心の欠如は、企業がより複雑な自動テストに投資するための投資の欠如を永続させます

長年にわたってSeleniumを使用したjqueryの拡張実装がいくつかありますが、実際に大規模なファンはなく、ほとんどがJavaで書かれています。

Webdriverioにはnpmパッケージがあり、jqueryの機能がいくつかあります- https://www.npmjs.com/package/webdriverio-jquery

Karmaにはjqueryエンジン全体をインポートする手段があります- https://github.com/bessdsv/karma-jasmine-jquery

それはテストされているものに依存します。フロントエンドコードをテストする場合は、javascriptを使用するのが理にかなっており、Selenium言語よりもjqueryを使用する方が簡単です。現在、karmaはwebdriverよりもjqueryをサポートしています。

自動化されたテストにjqueryを使用すると、転送可能なスキルを開発に、開発者がその逆に自動化されたテストを実行できるようになります。

0
Steve Tomlin