分度器-はじめに
この章では、分度器の概要を説明します。ここでは、このテストフレームワークの起源と、これを選択する必要がある理由、機能、およびこのツールの制限について学習します。
分度器とは何ですか?
Protractorは、AngularおよびAngularJSアプリケーション向けのオープンソースのエンドツーエンドのテストフレームワークです。これは、GoogleがWebDriverの上に構築したものです。また、「AngularScenarioRunner」と呼ばれる既存のAngularJSE2Eテストフレームワークの代わりとしても機能します。
また、NodeJS、Selenium、Jasmine、WebDriver、Cucumber、Mochaなどの強力なテクノロジーを組み合わせたソリューションインテグレーターとしても機能します。AngularJSアプリケーションのテストに加えて、通常のWebアプリケーションの自動回帰テストも作成します。実際のブラウザを使用してテストを実行するため、実際のユーザーと同じようにアプリケーションをテストできます。
次の図は、分度器の概要を示しています。
上の図では、次のようになっていることに注意してください。
Protractor −前述のように、これは特にAngularアプリ用に設計されたWebDriverJSのラッパーです。
Jasmine−これは基本的に、JavaScriptコードをテストするためのビヘイビア駆動開発フレームワークです。Jasmineで簡単にテストを書くことができます。
WebDriver JS −これはSelenium 2.0 / WebDriverのノードJSバインディングの実装です。
Selenium −ブラウザを自動化するだけです。
原点
前述のように、分度器は「AngularScenarioRunner」と呼ばれる既存のAngularJSE2Eテストフレームワークに代わるものです。基本的に、分度器の起源はシナリオランナーの終わりから始まります。ここで発生する質問は、なぜ分度器を構築する必要があるのかということです。これを理解するには、最初にその前身であるシナリオランナーについて確認する必要があります。
分度器の始まり
Protractorの開発に大きく貢献したJulieRalphは、Google内の他のプロジェクトでAngularシナリオランナーを使用して次のような経験をしました。これはさらに、特にギャップを埋めるために分度器を構築する動機になりました-
「ScenarioRunnerを使用してみましたが、テストに必要なことを実際に実行できないことがわかりました。ログインなどをテストする必要がありました。ログインページはAngularページではなく、ScenarioRunnerはそれを処理できませんでした。また、ポップアップや複数のウィンドウ、ブラウザの履歴のナビゲートなどを処理することはできませんでした。」
分度器の最大の利点は、Seleniumプロジェクトの成熟度であり、Angularプロジェクトで簡単に使用できるようにメソッドをまとめています。Protractorの設計は、アプリケーションのWeb UI、バックエンドサービス、永続層などのすべての層をテストするように構築されています。
なぜ分度器?
私たちが知っているように、ほとんどすべてのアプリケーションが開発にJavaScriptを使用しています。JavaScriptのサイズが大きくなり、アプリケーション自体の数が増えるためにアプリケーションが複雑になると、テスターのタスクは難しくなります。ほとんどの場合、AngularJSアプリケーションでWeb要素をキャプチャすることは非常に困難になり、拡張HTML構文を使用して、JUnitまたはSeleniumWebDriverを使用してWebアプリケーションコンポーネントを表現します。
ここでの問題は、Selenium WebDriverがAngularJSWeb要素を見つけられない理由です。その理由は、AngularJSアプリケーションには、Seleniumロケーターに含まれていないng-repeater、ng-controller、ng-modelなどの拡張HTML属性があるためです。
ここで、Seleniumの上部にあるProtractorがAngularJS Webアプリケーションでこれらの拡張HTML要素を処理および制御できるため、Protractorの重要性が生まれます。そのため、ほとんどのフレームワークは、アプリケーションの実際の機能のテストを行うために使用されていたAngularJSアプリケーションの単体テストの実行に焦点を合わせていると言えます。
分度器の働き
テストフレームワークであるProtractorは、Seleniumと連携して動作し、ブラウザーまたはモバイルデバイスで実行されているAngularJSアプリケーションとのユーザーの対話をシミュレートするための自動テストインフラストラクチャを提供します。
分度器の動作は、次の手順の助けを借りて理解することができます-
Step 1−最初のステップでは、テストを作成する必要があります。それはジャスミンまたはモカまたはキュウリの助けを借りて行うことができます。
Step 2−次に、分度器を使用して実行できるテストを実行する必要があります。テストランナーとも呼ばれます。
Step 3 −このステップでは、Seleniumサーバーがブラウザーの管理に役立ちます。
Step 4 −最後に、ブラウザAPIはSeleniumWebDriverの助けを借りて呼び出されます。
利点
このオープンソースのエンドツーエンドのテストフレームワークには、次の利点があります。
オープンソースツールである分度器は、インストールとセットアップが非常に簡単です。
Jasmineフレームワークとうまく連携してテストを作成します。
テスト駆動開発(TDD)をサポートします。
自動待機が含まれているため、テストに待機とスリープを明示的に追加する必要はありません。
SeleniumWebDriverのすべての利点を提供します。
複数のブラウザによる並列テストをサポートします。
自動同期の利点を提供します。
優れたテスト速度を備えています。
制限事項
このオープンソースのエンドツーエンドのテストフレームワークには、次の制限があります。
WebDriver JSのラッパーであるため、ブラウザーの自動化の業種は明らかになりません。
JavaScriptの知識は、JavaScriptでのみ使用できるため、ユーザーにとって不可欠です。
UI駆動型のテストツールであるため、フロントエンドテストのみを提供します。