nightwatch.jsを使用したJavaScript機能テスト
Eric Elliottは、JavaScriptテストに関する記事を書きました:JavaScriptテスト:ユニットテスト、機能テスト、および統合テストは、さまざまなタイプのテストとどのテストを使用するかを説明します。
この記事では、JavaScriptの機能テストをより詳細に調べ、nightwatch.jsライブラリを使用して実証します。
開始する前に、機能テストとは何か、そしてそれが重要な理由を確認しましょう。簡単に言えば、機能テストは、アプリケーションがユーザーの観点から期待どおりに機能するように設計されています。
単体テストや統合テストなどの技術的なテストについては話していません。ここでの目標は、ユーザーがプラットフォームへのログイン、製品の購入など、特定のシナリオをシームレスに実行できるようにすることです。
キーポイント
- nightwatch.jsは、node.jsに基づくエンドツーエンドのテストフレームワークであり、Webブラウザーの自動化に依存しているため、スクリプト化されたシナリオを作成してから自動的に実行できます。
- nightwatch.jsはnode.jsをマシンにインストールする必要があり、Javaで実行されているSelenium WebDriverサーバーが必要なSelenium WebDriver APIに依存しているため、Java開発キット(JDK 7)をインストールする必要があります。ユーザーの環境。
- nightwatch.jsの構成は、プロジェクトのルートにある
nightwatch.json
ファイルまたはnightwatch.conf.js
ファイルに配置できます。生産環境。 - nightwatch.jsは、テストされたページまたはページスニペットをオブジェクトに包むページオブジェクトメソッドをサポートして、基礎となるHTMLと共通構成を抽象化し、シナリオを簡素化し、テストスイートのメンテナンスを容易にします。
nightwatch.jsはじめに
nightwatch.jsは、node.jsに基づいたエンドツーエンドのテストフレームワークとして自分自身を説明しています。 Webブラウザーの自動化を促進するために設計されたプロジェクトであるSeleniumに依存しています。
ユーザーフレンドリーな構文を使用して、nightwatch.jsはシナリオを「スクリプト」し、ブラウザによって自動的に実行されることがあります(必ずしもヘッドレスではありません)。
インストールnightwatch
nightwatch自体はnode.jsモジュールです。つまり、マシンにnode.jsをインストールする必要があります。最も簡単な方法は、NVMなどのバージョンマネージャーを使用することです。 NightWatchはNPMに配布されるため、他のモジュールをインストールするようにインストールできます。-g
でグローバルにインストールするか、--save-dev
を使用して現在のプロジェクトにインストールできます。
npm install --save-dev nightwatch
NightwatchはSelenium WebDriver APIに依存するため、Selenium WebDriverサーバーが必要です。 Javaで実行されます。つまり、環境にJava Development Kit(JDK 7)をインストールする必要があります。 Oracle WebサイトからJDKをダウンロードできます。
ダウンロードとインストールが完了した後、java -version
を使用して、Javaがマシンで利用できることを確認できます。最後のステップは、Seleniumダウンロードページから瓶としてパッケージ化されたSelenium Standaloneサーバーをダウンロードすることです。プロジェクトのbin
フォルダーに入れておくことをお勧めします。
npm install --save-dev nightwatch
わかりました、準備はできました。始めましょう。
構成nightwatch
想像できるように、ナイトウォッチには多くの構成があります。幸いなことに、始めるためにすべてを知る必要はありません。構成は、プロジェクトのルートディレクトリのnightwatch.json
ファイルまたはnightwatch.conf.js
ファイルに配置できます。後者を使用することをお勧めします。これは、より柔軟で、コメントを追加できるためです。
<code>your_project/ | |– bin/ | |– selenium-server-standalone-2.53.1.jar | `– package.json</code>
注:構成ファイルがより小さな構成オブジェクトに分割され、JSONファイルがこれを許可しない場合、私は個人的に読みやすいと思います。
この場合、特定のセレン構成と特定のテスト設定を使用して、テストがtests
フォルダーにあることをナイトウォッチに伝えます。それを一つ一つ見てみましょう:
var SELENIUM_CONFIGURATION = { start_process: true, server_path: 'bin/selenium-server-standalone-2.53.0.jar', host: '127.0.0.1', port: 4444 }; var FIREFOX_CONFIGURATION = { browserName: 'firefox', javascriptEnabled: true, acceptSslCerts: true }; var DEFAULT_CONFIGURATION = { launch_url: 'http://localhost', selenium_port: 4444, selenium_host: 'localhost', desiredCapabilities: FIREFOX_CONFIGURATION }; var ENVIRONMENTS = { default: DEFAULT_CONFIGURATION }; module.exports = { src_folders: ['tests'], selenium: SELENIUM_CONFIGURATION, test_settings: ENVIRONMENTS };
で実行するように指示します。これはたまたまナイトウォッチのデフォルト値です。また、ダウンロードして127.0.0.1:4444
フォルダーに保存されたSeleniumサーバーを使用して自動的に起動することを確認します。 bin
注:より高度な使用については、すべてのSeleniumオプションのリストを確認してください。
実際のテストセットアップを続行します:
var SELENIUM_CONFIGURATION = { start_process: true, server_path: 'bin/selenium-server-standalone-2.53.0.jar', host: '127.0.0.1', port: 4444 };
オプションは、キーが各環境の名前であるオブジェクトが別の構成オブジェクトにマッピングされるオブジェクトを期待しています。この場合、カスタム環境を(まだ)セットアップしていないため、デフォルトの環境を使用します。後で、ステージングまたは生産テスト環境を作成できます。 test_settings
注:より高度な使用については、すべてのテストオプションのリストを確認してください。
var DEFAULT_CONFIGURATION = { launch_url: 'http://localhost', selenium_port: 4444, selenium_host: 'localhost', desiredCapabilities: FIREFOX_CONFIGURATION }; var ENVIRONMENTS = { default: DEFAULT_CONFIGURATION };
を使用して)またはオペレーティングシステム(version
を使用)を指定できます。 platform
注:より高度な使用法については、すべての機能オプションのリストを確認してください。
わかりました、今では正しい構成ができました。最初のテストを書く時が来ました!
ナイトウォッチテストの執筆
テストでは、電子メールフィールド、パスワードフィールド、および送信ボタンを備えたにあるログインページを検討します。フォームを送信した後、ユーザーは「ニュースフィード」を表示するページにリダイレクトする必要があります。 /login
構成では、テストがtests
という名前のフォルダーにあることを指定します。これを作成して、tests
フォルダーとlogin.js
という名前のファイルを作成しましょう。
npm install --save-dev nightwatch
このファイルは、シナリオを説明するオブジェクトをエクスポートします。各キー(複数の場合)は、実行する手順を含む関数にマッピングされたテストの名前です。
<code>your_project/ | |– bin/ | |– selenium-server-standalone-2.53.1.jar | `– package.json</code>
テスト関数は、シーンを説明するために必要なAPIを提供するオブジェクトを公開します。最初に行うことは、ログインURLに移動することです。次に、フィールドに記入してボタンを押します。最後に、「ニュースフィード」テキストが表示されているかどうかを確認してください。
var SELENIUM_CONFIGURATION = { start_process: true, server_path: 'bin/selenium-server-standalone-2.53.0.jar', host: '127.0.0.1', port: 4444 }; var FIREFOX_CONFIGURATION = { browserName: 'firefox', javascriptEnabled: true, acceptSslCerts: true }; var DEFAULT_CONFIGURATION = { launch_url: 'http://localhost', selenium_port: 4444, selenium_host: 'localhost', desiredCapabilities: FIREFOX_CONFIGURATION }; var ENVIRONMENTS = { default: DEFAULT_CONFIGURATION }; module.exports = { src_folders: ['tests'], selenium: SELENIUM_CONFIGURATION, test_settings: ENVIRONMENTS };
注:セレンセッションが適切に閉じられるように、必ず.end()
を使用してコマンドリストを終了します。
これはとても簡単です!これで、テストを実行して機能するかどうかを確認できます。
var SELENIUM_CONFIGURATION = { start_process: true, server_path: 'bin/selenium-server-standalone-2.53.0.jar', host: '127.0.0.1', port: 4444 };
注:Firefox 47のリリースにより、Firefoxdriverの拡張ベースのバージョンが動作を停止しました。これは、Firefox 47.1およびSelenium 2.53.1で修正されています。別のブラウザを使用してテストを実行するには、プロジェクトのWikiを確認してください。
私たちができる最後のことは、毎回ナイトウォッチバイナリにアクセスしないようにすることです。
package.json
var DEFAULT_CONFIGURATION = { launch_url: 'http://localhost', selenium_port: 4444, selenium_host: 'localhost', desiredCapabilities: FIREFOX_CONFIGURATION }; var ENVIRONMENTS = { default: DEFAULT_CONFIGURATION };
多くの機能的なテストを行うと、多くの重複情報が得られるため、メンテナンスが行われます(はい、テストスイートにもメンテナンスが必要です)。これを防ぐために、ページオブジェクト
を使用できます。エンドツーエンドのテストの世界では、ページオブジェクトアプローチは、ページ(またはページフラグメント)をオブジェクトに包むことを含む一般的なパターンです。目標は、基礎となるHTMLと共通構成を抽象化して、シナリオを簡素化することです。
幸いなことに、ナイトウォッチにはページオブジェクトを簡単に処理する方法があります。最初に行う必要があることは、構成にオプションを追加することです。
は理にかなっていると思いますが、必要なフォルダーを指定できます。
page_objects_path
tests/pages
このフォルダーで
var FIREFOX_CONFIGURATION = { browserName: 'firefox', javascriptEnabled: true, acceptSslCerts: true };
login.js
オプションに依存します。このように、ページオブジェクトにはコンテキストがなく、環境に関係なく機能します。
ページオブジェクトを使用するようにテストを変更することは非常に簡単です。まず、クライアントを介してページオブジェクトからページを取得する必要があります。各ページオブジェクトは、ページオブジェクトファイル名にちなんで名付けられた関数として公開されます(例:login()
)。
CSSセレクターをエイリアスに置き換えて、@
シンボルでプレフィックスして、カスタム名を参照していることを示します。それでおしまい。
npm install --save-dev nightwatch
ページではなく、クライアント自体のセッションを終了する方法に注意してください。
複数の環境を使用して
さまざまな環境で機能テストを実行する能力は、ローカル作業がユーザーのパスを壊さないこと、またはステージング環境と生産環境も同じように機能することを保証するために非常に便利です。特定の環境でテストを実行するには、CLIの
オプションを使用できます。このオプションを省略すると、デフォルトの環境(既に設定中)が使用されます。 --env
<code>your_project/ | |– bin/ | |– selenium-server-standalone-2.53.1.jar | `– package.json</code>
オプションは環境によって異なります。 launch_url
var SELENIUM_CONFIGURATION = { start_process: true, server_path: 'bin/selenium-server-standalone-2.53.0.jar', host: '127.0.0.1', port: 4444 }; var FIREFOX_CONFIGURATION = { browserName: 'firefox', javascriptEnabled: true, acceptSslCerts: true }; var DEFAULT_CONFIGURATION = { launch_url: 'http://localhost', selenium_port: 4444, selenium_host: 'localhost', desiredCapabilities: FIREFOX_CONFIGURATION }; var ENVIRONMENTS = { default: DEFAULT_CONFIGURATION }; module.exports = { src_folders: ['tests'], selenium: SELENIUM_CONFIGURATION, test_settings: ENVIRONMENTS };
概要
これらすべてを要約しましょう。 nightwatch.jsは、エンドツーエンドの機能テストを作成するためのJavaScriptフレームワークです。 Selenium WebDriver APIに依存しており、異なるブラウザを自動的に実行できます。テストの作成には、主に一般的なユーザーシナリオの定義が含まれます。この目的のために、シンプルだが非常に完全なAPIがあります。
ここから私はあなたにそれを任せ、あなたがあなたの最大のプロジェクトのために機能的なテストの作成を開始することを奨励します。
nightwatch.js faq(faq)
JavaScriptテストのnightwatch.jsの主な目的は何ですか?nightwatch.jsは、node.jsで書かれた強力で使いやすいWebアプリケーションおよびウェブサイトのテストソリューションです。継続的な統合をセットアップし、自動テストを作成するプロセスを簡素化します。 nightwatch.jsは、node.jsユニットテストの書き込みにも使用できます。テストをすばやく書き込むことができるクリーンな構文を提供し、コマンドラインテストランナーが組み込まれており、テストを順次または並列、グループ化、またはスタンドアロンで実行できるようにします。
nightwatch.jsは、他のJavaScriptテストフレームワークと比較してどうですか?
nightwatch.jsは、その単純さと使いやすさのために際立っています。簡潔で明確な構文があり、ライティングテストの複雑さが低下します。他のテストフレームワークとは異なり、nightwatch.jsにはテストランナーが付属しており、他のツールは必要ありません。また、CSSとXPathセレクターをサポートしているため、Webページ上のさまざまな種類の要素を扱う際に普遍的になります。
nightwatch.jsはエンドツーエンドのテストに使用できますか?
はい、nightwatch.jsはエンドツーエンドのテストに最適なツールです。これにより、ユーザーのWebアプリケーションとの対話をシミュレートするテストを作成し、すべてのコンポーネントが期待どおりに連携するようにします。 nightwatch.jsを使用すると、フォームの提出、ページナビゲーション、さらには複雑なプロセスなど、さまざまなシナリオをシミュレートできます。
非同期検査に対処する方法は?
nightwatch.jsは、単純なコールバックメカニズムを使用して、非同期テストを処理します。 nightwatch.jsの各テストコマンドは、定義された順序で非同期に実行されます。テストランナーは、次のコマンドを続行する前に、各コマンドが完了するのを待ちます。これにより、すべてのコマンドが非同期であっても、正しい順序で実行されることが保証されます。
他のテストライブラリでnightwatch.jsを使用できますか?
はい、nightwatch.jsは他のテストライブラリで使用できます。 Mocha、Jasmine、Qunitなどの他のライブラリとシームレスに作業するように設計されています。これにより、複数のテストライブラリを利用して、Webアプリケーション用の包括的なテストスイートを作成できます。
私のプロジェクトにnightwatch.jsを設定する方法は?
nightwatch.jsのセットアップにはいくつかのステップが含まれています。まず、マシンにnode.jsとnpmをインストールする必要があります。その後、NPMを使用してnightwatch.jsをインストールできます。インストールが完了したら、test設定とオプションを指定するnightwatch.jsの構成ファイルを作成する必要があります。その後、テストの作成を開始できます。
nightwatch.jsはクロスブラウザーテストに使用できますか?
はい、nightwatch.jsはクロスブラウザーテストをサポートしています。自動ブラウザー用のツールであるSelenium WebDriverとシームレスに統合します。つまり、nightwatch.jsを使用して複数のブラウザで実行できるテストを作成して、Webアプリケーションがさまざまなプラットフォームで適切に機能するようにすることができます。
nightwatch.jsでテストをデバッグする方法は?
nightwatch.jsは、いくつかのデバッグテストオプションを提供します。 node.jsでビルトインデバッガーを使用するか、Chrome Devtoolsなどの外部ツールを使用できます。 nightwatch.jsは、テストが失敗したときに問題を識別して修正しやすくするために、詳細なエラーメッセージとスタックトレースも提供します。
モバイルテストにnightwatch.jsを使用できますか?
nightwatch.jsは主にWebテストに使用されますが、人気のあるモバイルテストフレームワークであるAppiumと統合することでモバイルテストにも使用できます。これにより、Webテストと同じ構文とツールを使用してモバイルアプリケーションのテストを作成できます。
nightwatch.jsを使用して並行してテストを実行する方法は?
nightwatch.jsは、並列テストの実行をネイティブにサポートしています。構成ファイルで並行して実行するテストを指定できます。テストを実行すると、nightwatch.jsはテストを複数のワーカープログラムに自動的に割り当て、全体的なテスト実行時間を高速化します。
出力は、元の意味を保存しながら、フローと読みやすさを改善するために、元の画像のフォーマットと配置を維持しています。
以上がnightwatch.jsを使用したJavaScript機能テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。
