Karmaが JavaScript テスト ランナーであり、実際のブラウザーでテストを実行できることを理解しています。その場合、Selenium は Karma に加えてどのようなテスト カバレッジを提供しますか。
3 に答える
Karma と Selenium には大きな違いがあります。Selenium には組み込みのブラウザー制御メカニズムがありますが、Karma にはありません。したがって、Selenium は、たとえばnightwatch.jsを使用したエンド ツー エンドのテストにより適しています。Karma は単体テスト用に設計されているため、エンド ツー エンドのテストを実行するのははるかに困難です。たとえば、phantomjs ランチャーを追加できますが、Selenium を使用した実際のブラウザー テストと同じになることは決してありません...アダプターがあれば、任意の js テスト フレームワークを実行できます... Mocha、jasmine、qunit など...
永遠の後:
Karma を使用して e2e テストを作成することができます。iframe を作成するか、新しいウィンドウを開いてスクリプトを実行する必要があります。スクリプトは、親フレームまたはウィンドウからナビゲーション、イベントの発生、フォームの送信などを行います。テストしたページでは、CORS を使用して Karma サーバーを許可するか、ブラウザーのセキュリティを無効にする必要があります。私はまさにこれを行うe2eテストライブラリに取り組んでいます。
Selenium にはいくつかのバージョンがあり、その最新 (私が信じている) は Selenium Web Driver であり、ユーザーが行うように (Json を介して) UI と対話するアクションをシミュレートすることにより、ブラウザーを処理するドライバーを作成できます。ワイヤー)。
Karma についての私の現在の理解 (これは非常に限られているかもしれません) は、JavaScript の実行に大きく依存しているということです。このため、カルマは要素の変更イベントを呼び出す必要があります (「ぼかし」や「ホバーオーバー」など) が、Selenium はクリック、タブアウト、カーソルの移動だけです。Selenium のブラウザーは、こちらの Web ページで指定されているものに限定されます。
何をテストしているかによって異なります。ジャスミン/モカ/チャイまたは同等のものを介してJavaScriptを使用して単体テストを作成している場合、カルマはJavaScriptに大きく依存し、セレンは依存しないという議論は冗長です。
私の経験では、専任の自動テスターはほとんどいませんでした。セレン言語は彼らの選択かもしれませんが、メソッドのセレンライブラリは、jquery のような同等のセレクターエンジンほど簡単に覚えることはできません。
専任の自動テスターが言語を習得するのは困難であり、開発者がより少ない言語を習得することへの関心の欠如は、企業がより複雑な自動テストに投資するための投資の欠如を永続させます
何年にもわたって、セレンを使用した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 を使用すると、開発者のスキルを自動テストに移すことができ、開発者はその逆も可能です。