分度器-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を使用する主な欠点は、構成と保守に追加のツールが必要になることです。

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

ジャスミン

JavaScriptコードをテストするためのビヘイビア駆動開発フレームワークであるJasmineは、Pivo​​talLabsで開発されています。Jasmineフレームワークが積極的に開発される前に、JsUnitという名前の同様の単体テストフレームワークも、テストランナーが組み込まれているPivotalLabsによって開発されました。ブラウザのテストは、SpecRunner.htmlファイルを含めるか、コマンドラインテストランナーとして使用することで、Jasmineテストを実行できます。カルマの有無にかかわらず使用することもできます。

ジャスミン使用の長所

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

  • ブラウザ、プラットフォーム、言語に依存しないフレームワーク。

  • ビヘイビア駆動開発とともにテスト駆動開発(TDD)をサポートします。

  • Karmaとデフォルトで統合されています。

  • 構文がわかりやすい。

  • 追加機能としてテストを支援するテストスパイ、偽物、パススルー機能を提供します。

ジャスミンを使用することの短所

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

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

モカ

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

モカ使用の長所

以下は、Mochaを使用することのいくつかの長所です-

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

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

以下は、Mochaを使用することのいくつかの短所です-

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

QUnit

QUintは、もともとjQueryの一部として2008年にJohn Resigによって開発されたもので、強力でありながら使いやすいJavaScriptユニットテストスイートです。一般的なJavaScriptコードのテストに使用できます。ブラウザでのJavaScriptのテストに重点を置いていますが、開発者が使用すると非常に便利です。

QUnitを使用する長所

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

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

QUnitを使用することの短所

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

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

セレン

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

Seleniumを使用する長所

以下は、Seleniumを使用することのいくつかの長所です-

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

Seleniumを使用することの短所

以下は、Seleniumを使用することのいくつかの短所です-

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