Protractor-concepts-of-javascript-testing

提供:Dev Guides
移動先:案内検索

分度器-Javascriptテストの概念

JavaScriptの知識は分度器での作業に不可欠なので、この章ではJavaScriptテストの概念を詳細に理解しましょう。

JavaScriptのテストと自動化

JavaScriptは、最も人気のある動的に型付けされ解釈されたスクリプト言語ですが、最も難しいタスクはコードをテストすることです。 これは、JAVAやC ++などの他のコンパイル言語とは異なり、テスターがエラーを把握するのに役立つJavaScriptのコンパイル手順がないためです。 その上、ブラウザベースのテストには非常に時間がかかります。したがって、JavaScriptの自動テストをサポートするツールが必要です。

自動テストの概念

コードを改善するため、常にテストを作成することをお勧めします。手動テストの問題は、少し時間がかかり、エラーが発生しやすいことです。 手動テストのプロセスは、プロセスを繰り返し、テスト仕様を記述し、コードを変更し、ブラウザを数回更新する必要があるため、プログラマにとっても非常に退屈です。 また、手動テストは開発プロセスの速度も低下させます。

上記の理由により、これらのテストを自動化し、プログラマーがこれらの反復的で退屈な手順を取り除くのに役立つツールを用意することは常に有用です。 テストプロセスを自動化するには、開発者は何をすべきですか?

基本的に、開発者はCLI(コマンドラインインタープリター)または開発IDE(統合開発環境)でツールセットを実装できます。 その後、これらのテストは、開発者からの入力がなくても、個別のプロセスで継続的に実行されます。 JavaScriptの自動テストも新しいものではなく、Karma、Protractor、CasperJSなどの多くのツールがあります。 開発されています。

JavaScriptのテストの種類

目的に応じてさまざまなテストを行うことができます。 たとえば、一部のテストはプログラム内の関数の動作を確認するために作成され、他のテストはモジュールまたは機能のフローをテストするために作成されます。 したがって、次の2種類のテストがあります-

単体テスト

テストは、ユニットと呼ばれるプログラムの最小のテスト可能な部分で実行されます。 ユニットは基本的に、他の部分にそのユニットが依存することなく、単独でテストされます。 JavaScriptの場合、特定の動作を行う個々のメソッドまたは関数はコードの単位になることがあり、これらのコードの単位は孤立した方法でテストする必要があります。

ユニットテストの利点の1つは、ユニットが互いに独立しているため、ユニットのテストを任意の順序で実行できることです。 本当に重要な単体テストのもう1つの利点は、次のようにいつでもテストを実行できることです-

  • 開発プロセスの最初から。
  • モジュール/機能の開発が完了した後。
  • モジュール/機能を変更した後。
  • 既存のアプリケーションに新しい機能を追加した後。

JavaScriptアプリケーションの自動ユニットテストでは、Mocha、Jasmine、QUnitなどの多くのテストツールとフレームワークから選択できます。

エンドツーエンドのテスト

これは、最初から最後まで(一方の端から他方の端まで)アプリケーションのフローが設計どおりに正常に動作しているかどうかをテストするためのテスト方法論として定義できます。

エンドツーエンドテストは、機能/フローテストとも呼ばれます。 単体テストとは異なり、エンドツーエンドテストでは、個々のコンポーネントがアプリケーションとしてどのように連携するかをテストします。 これが、単体テストとエンドツーエンドテストの主な違いです。

たとえば、ユーザーが登録を完了するために有効な情報を提供する必要がある登録モジュールがある場合、その特定のモジュールのE2Eテストは次の手順に従ってテストを完了します-

  • 最初に、フォームまたはモジュールをロード/コンパイルします。
  • これで、フォームの要素のDOM(ドキュメントオブジェクトモデル)が取得されます。
  • 次に、送信ボタンのクリックイベントをトリガーして、ボタンが機能しているかどうかを確認します。
  • 次に、検証のために、入力フィールドから値を収集します。
  • 次に、入力フィールドを検証する必要があります。
  • テスト目的で、偽のAPIを呼び出してデータを保存します。

すべてのステップで独自の結果が得られ、予想される結果セットと比較されます。

ここで発生する問題は、この種のE2Eまたは機能テストは手動でも実行できるのに、なぜこれを自動化する必要があるのか​​ということです。 主な理由は、自動化によりこのテストプロセスが容易になるためです。 任意のアプリケーションと簡単に統合できる利用可能なツールのいくつかは、この目的のために、Selenium、PhantomJS、およびProtractorです。

テストツールとフレームワーク

Angularテスト用のさまざまなテストツールとフレームワークがあります。 以下は、いくつかの有名なツールとフレームワークです-

カルマ

Vojta Jinaによって作成されたKarmaは、テストランナーです。 もともと、このプロジェクトはTestacularと呼ばれていました。 これはテストフレームワークではありません。つまり、実際のブラウザーでJavaScriptユニットテストを簡単かつ自動的に実行することができます。 Karmaは、AngularJS用に構築されました。これは、Karmaの前に、WebベースのJavaScript開発者向けの自動テストツールがなかったためです。 一方、Karmaが提供する自動化により、開発者は簡単な1つのコマンドを実行して、テストスイート全体が成功したか失敗したかを判断できます。

Karmaを使用する長所

以下は、手動プロセスと比較してカルマを使用するいくつかの長所です-

  • 複数のブラウザーとデバイスでテストを自動化します。
  • ファイルのエラーを監視し、修正します。
  • オンラインサポートとドキュメントを提供します。
  • 継続的統合サーバーとの統合を容易にします。

Karmaを使用することの短所

以下は、カルマを使用するいくつかの短所です-

Karmaを使用する主な欠点は、構成と保守に追加のツールが必要なことです。

JasmineでKarmaテストランナーを使用している場合、1つの要素に複数のIDがある場合、CSSの設定に関する情報を見つけるためのドキュメントが少なくなります。

ジャスミン

JavaScriptコードをテストするための動作駆動型開発フレームワークであるJasmineは、Pivo​​tal Labsで開発されています。 Jasmineフレームワークの積極的な開発の前に、JsUnitという名前の同様の単体テストフレームワークも、組み込みのテストランナーを持つPivotal Labsによって開発されました。 ブラウザテストは、SpecRunnerlファイルを含めるか、コマンドラインテストランナーとして使用することにより、Jasmineテストで実行できます。 Karmaの有無にかかわらず使用できます。

ジャスミンを使用する長所

以下は、ジャスミンを使用するいくつかの長所です-

  • ブラウザ、プラットフォーム、言語に依存しないフレームワーク。
  • 行動駆動型開発とともにテスト駆動型開発(TDD)をサポートします。
  • Karmaとデフォルトで統合されています。
  • わかりやすい構文。
  • 追加の機能としてテストを支援するテストスパイ、偽物、およびパススルー機能を提供します。

ジャスミン使用の短所

以下は、ジャスミンを使用することの短所です-

  • テストの実行中はJasmineで使用可能なファイル監視機能がないため、テストは変更されるたびにユーザーが返す必要があります。

モカ

Node.jsアプリケーション用に作成されたMochaはテストフレームワークですが、ブラウザーのテストもサポートしています。 ジャスミンによく似ていますが、両者の主な違いは、テストフレームワークとしてスタンドアロンで実行できないため、Mochaにはプラグインとライブラリが必要なことです。 一方、Jasmineはスタンドアロンです。 ただし、MochaはJasmineよりも柔軟に使用できます。

モカを使用する長所

以下は、モカを使用するいくつかの長所です-

  • Mochaのインストールと構成は非常に簡単です。
  • ユーザーフレンドリーでシンプルなドキュメント。
  • 複数のノードプロジェクトを含むプラグインが含まれています。

モカを使用することの短所

以下は、モカを使用するいくつかの短所です-

  • アサーション、スパイなどのために個別のモジュールが必要です。
  • Karmaで使用するには、追加の構成も必要です。

QUnit

元々2008年にjQueryの一部としてJohn Resigによって開発されたQUintは、強力で使いやすいJavaScript単体テストスイートです。 一般的なJavaScriptコードをテストするために使用できます。 ブラウザでJavaScriptをテストすることに焦点を当てていますが、開発者が使用するのは非常に便利です。

QUnitを使用する長所

以下はQUnitを使用するいくつかの長所です-

  • インストールと設定が簡単。
  • ユーザーフレンドリーでシンプルなドキュメント。

QUnitを使用することの短所

以下はQUnitを使用することの短所です-

  • これは主にjQuery向けに開発されたため、他のフレームワークでの使用にはあまり適していません。

セレン

Seleniumは、もともと2004年にJason HugginsがThoughtWorksの内部ツールとして開発したもので、オープンソースのテスト自動化ツールです。 Seleniumは、「Seleniumはブラウザを自動化します。 それでおしまい!"。 ブラウザの自動化は、開発者が非常に簡単にブラウザと対話できることを意味します。

Seleniumを使用する長所

以下は、セレンを使用するいくつかの長所です-

  • 大規模な機能セットが含まれています。
  • 分散テストをサポートします。
  • Sauce Labsなどのサービスを通じてSaaSをサポートしています。
  • 簡単なドキュメントと豊富なリソースが用意されているので使いやすいです。

Seleniumを使用することの短所

以下は、セレンを使用するいくつかの短所です-

  • Seleniumを使用する主な欠点は、Seleniumを別のプロセスとして実行する必要があることです。
  • 開発者がいくつかの手順に従う必要があるため、構成は少し面倒です。