ホームページ >ウェブフロントエンド >フロントエンドQ&A >JavaScript 単体テストは何に使用されますか?

JavaScript 単体テストは何に使用されますか?

青灯夜游
青灯夜游オリジナル
2021-06-22 15:44:182244ブラウズ

JavaScript における単体テストは、プログラム モジュール (ソフトウェア設計の最小単位) の正当性をテストするテストであり、その目的は、プログラム モジュールを分離し、これらの個々のモジュールが正しいことを証明することです。単体テストにより、開発プロセスの早い段階で問題が確実に発見され、プログラマはコードの断片がまだ適切に動作しているかどうかを簡単に確認できます。

JavaScript 単体テストは何に使用されますか?

#このチュートリアルの動作環境: Windows 7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

1.単体テストとは何ですか?用途は何ですか?

コンピュータ プログラミングにおける単体テスト (モジュール テストとも呼ばれます) は、プログラム モジュール (ソフトウェア設計の最小単位) の正当性をテストするテストです。プログラム ユニットは、アプリケーションのテスト可能な最小のコンポーネントです。手続き型プログラミングの単位は、単一のプログラム、関数、プロセスなどです。オブジェクト指向プログラミングの最小単位は、基本クラス (スーパークラス)、抽象クラス、または派生クラス (サブクラス) のメソッドを含むメソッドです。

理想的なテスト ケースはそれぞれ他のケースから独立しています。テスト中にモジュールを分離するために、スタブ、モック、フェイクなどのテスト ベスト プログラムがよく使用されます。単体テストは通常​​、ソフトウェア開発者によって作成され、作成したコードがソフトウェア要件を満たし、開発目標に従っていることを確認します。

単体テストの目的は、プログラム モジュールを分離し、これらの個々のモジュールが正しいことを証明することです。単体テストにより、開発プロセスの早い段階で問題が確実に発見され、プログラムが「早期に終了」します。開発の初期段階からすべての関数とメソッドの単体テストを作成する必要があります。読みやすい単体テストを使用すると、プログラマはコード スニペットが引き続き適切に動作するかどうかを簡単に確認できます。適切に設計された単体テスト ケースは、プログラム単位の分岐とループ条件へのすべてのパスをカバーします。このボトムアップ テスト パスを使用すると、最初にプログラム モジュールがテストされ、次にモジュールのコレクションがテストされます。変更によりエラーが発生すると、単体テストを利用してエラーを迅速に特定して修復できます。

2. JavaScript 単体テストの現状

単体テストは、JAVA 開発者向けの JUnit などのバックエンド開発では非常に人気があり、人気がありますが、フロントエンド開発で使用されることは非常に少ないです。主な理由は、単体テストはロジック コードのテストに適しており、JAVA などのバックエンド プログラミング言語では非常に便利ですが、フロントエンド開発では UI を扱う必要があり、UI 関連のコードをテストできないためです。しかし、それは確かに非常に面倒で、ロジックコードよりもはるかに難しいため、フロントエンド開発では単体テストが普及していないという事実につながっています。

しかし、単体テストの人気、特にアジャイル開発の推進に伴い、QUnit、Jasmine など、多くの優れた JavaScript 単体テスト フレームワークが登場しました。これらのフレームワークは基本的に Javascript コードを非常にうまくテストできます。もちろん、UI コードのテストも面倒ですが、テスト コードを注意深く構築することで、UI コードの一部をテストできます。ただし、それぞれのフレームワークは万能ではなく、それぞれ得意分野があり、以下では代表的なフレームワークをいくつかピックアップして紹介します。

3. 単体テストに一般的に使用されるフレームワーク

l QUnit フレームワーク

a) はじめに

QUnit は、jQuery チームによって開発された JavaScript 単体テスト ツールで、強力で使いやすいです。現在、すべての JQuery コードは QUnit を使用してテストされており、ネイティブ JavaScript も QUnit を使用できます。

もともと、John Resig は jQuery の一部として QUnit を設計しました。 2008 年に、QUnit は独自の名前、ホームページ、API ドキュメントを持ち、他の人が単体テストに QUnit を使用できるようになりました。しかし、当時の QUnit はまだ jQuery に基づいていました。 QUnit が完全に独立して実行できるようになったのは 2009 年になってからです。

b) 利点

非常に使いやすく、美しい外観と完全なテスト機能 (非同期テストを含む) を備えています。

非常にシンプルで使いやすいです。 . 現在公開されています API は 19 個だけです;

は JS を実行できる限り、他のソフトウェア パッケージやフレームワークに依存する必要はありません。QUnit 自体には JS ファイルと CSS ファイルが 1 つだけあります。もちろん、必要に応じて jQuery などの他のフレームワークと統合することもできます。;

ブラウザでのテストをサポートするだけでなく、Rhino やnode.js などのバックエンドでのテストもサポートします。

c) 欠点

自動化サポートが不十分で、Ant、Maven、自動ビルドなどのツールとの統合が難しく、主にブラウザーでのテストに使用されます。

l Jasmine フレームワーク

a) はじめに

Jasmine はよく知られた JavaScript 単体テスト フレームワークであり、独立しています。明確で理解しやすい構文を備えた動作駆動型の開発フレームワーク。

動作駆動開発 (BDD): 開発者、QA、およびソフトウェア プロジェクトにおける非技術者やビジネス参加者間のコラボレーションを促進するアジャイル ソフトウェア開発テクノロジです。 BDD は、もともと 2003 年に Dan North によって命名されました。これには、テスト駆動開発への対応として、受け入れや顧客によるテストドライブなどの極端なプログラミング手法が含まれています。ここ数年で大きく発展しました。

BDD の焦点は、利害関係者との議論を通じて、予想されるソフトウェアの動作を明確に理解することです。プログラマーでなくても読める自然言語でテスト ケースを作成することにより、テスト駆動開発アプローチを拡張します。動作駆動型の開発者は、ドメイン内で統一された言語とネイティブ言語を混合してコードの目的を説明します。これにより、開発者は技術的な詳細ではなく、コードをどのように記述するかに集中できるようになり、コード作成者の技術言語をビジネス顧客、ユーザー、利害関係者、プロジェクト マネージャーなどから分離する必要性も最小限に抑えられます。そして言語間を行き来します。

BDD プラクティスには次のものが含まれます。

l さまざまな関係者が達成したい長期目標を確立します。

l 機能インジェクション手法を使用して、これらの目標を達成するために必要な機能を計画します。

l アウトサイドインのソフトウェア開発アプローチを通じて、関係者を実装プロセスに統合します。

l 例を使用して、アプリケーションまたはコードの各単位の動作を説明します

l これらの例を自動化することで、迅速なフィードバックを提供し、回帰テストを実行します。

#l 「すべき」を使用してソフトウェアの動作を説明し、コードの責任を明確にし、コードに関する質問に答えます。 ソフトウェアの機能について質問する

l 「ensure」を使用して、コード自体の有用性と他のユニット (要素) コードによってもたらされる限界的な有用性を区別するソフトウェアの責任を説明します。

l まだ書かれていない関連コード モジュールの代用としてモックを使用する

BDD 機能インジェクション: 企業は、ビジネス上の利点をもたらす複数の異なるビジョンを持っている場合があります。利益とお金の節約、またはお金の保護。開発チームが現在の状況下で最適なビジョンであると判断した場合、そのビジョンをうまく実現するには追加の支援が必要になります。

次に、ビジョンの主な関係者を特定し、他の関係者を参加させます。各関係者は、ビジョンを達成するために何を達成する必要があるかを定義します。たとえば、法務部門は特定の規制を満たすことを要求する場合があります。マーケティング責任者は、ソフトウェアを使用するユーザーのコミュニティに参加したいと考えるかもしれません。セキュリティの専門家は、ソフトウェアが SQL インジェクション攻撃に対して脆弱でないことを確認する必要があります。

これらの目標を通じて、これらの目標を達成するために必要なトピックや機能のおおよそのセットが定義されます。たとえば、「ユーザーが貢献度の値を並べ替えられるようにする」または「トランザクションの監査」などです。これらのテーマから、ユーザーの機能やユーザー インターフェイスの最初の詳細を決定できます。

b) 利点

動作駆動型開発に基づいたテスト フレームワークであり、その構文は自然言語に非常に近く、シンプルかつ明確で理解しやすいです。

Ant、Maven などと簡単に統合してテストを自動化できるほか、Jenkins などの継続的統合ツールとも簡単に統合でき、テスト結果の XML ドキュメントを生成できます。

これには豊富な API があり、ユーザーによる API の拡張もサポートされており、これは他のフレームワークではほとんどできません。

使い方は簡単で、js ファイルを 2 つ導入するだけです

ブラウザでのテストだけでなく、Rhino やnode.js などのバックエンド テストもサポートしています。

Ruby 言語に対する特別なサポートがあり、Ruby プロジェクトに簡単に統合できます

c) 欠点

ブラウザのテスト インターフェイスは QUnit ほど美しくありません。 。

l JsTestDriver

a) はじめに

JsTestDriver は、継続的ビルドと簡単に統合できる JavaScript 単体テスト ツールです。また、複数のブラウザでテストを実行できるため、TDD スタイルの開発が簡単に行えます。 JsTestDriver をプロジェクト内で構成すると、java ファイルの junit テストと同様に、JsTestDriver は js ファイルを直接実行して単体テストを実行できます。 JsTestDriver フレームワーク自体は JAVA jar パッケージであり、ローカルで実行してポートをリッスンする必要があります。

b) メリット

一度に複数のブラウザをテストできる 利用方法は、サービス起動時にパラメータとして複数のブラウザのパスを渡すことです。モバイル デバイスを含む複数のマシン上のブラウザで実行できます。

テストは、レンダリングのために結果を DOM に追加する必要がなく、同時に多くのブラウザで実行でき、ブラウザは未変更のファイルをキャッシュから取得するため、迅速に実行されます。 。

HTML 添付ファイルは必要ありません。1 つ以上のスクリプトとテスト スクリプトを指定するだけで、テスト ランナーは実行時に空のファイルを作成します。

Ant、Maven などと簡単に統合してテストを自動化できるほか、Jenkins などの継続的統合ツールとも簡単に統合でき、テスト結果の XML ドキュメントを生成できます。

Eclipse プラグインと IntelliJ プラグインがあり、JUnit と同様に、これら 2 つの IDE で簡単にテストできます。

他のテスト フレームワークをサポートし、他のテスト フレームワークによって記述されたテスト コードをテストできます。たとえば、QUnit および Jasmine テスト コードを JsTestDriver テスト コードに変換できる対応するプラグインがあります。

c)不做的であること。生成された結果は十分直感的ではありません。

インストールや使用はJAVA環境に依存するので少し面倒です。

l FireUnit

a) はじめに

FireUnit は、Firebug の Javascript に基づいた単体テスト フレームワークです。簡単に言うと、FireUnit は Firebug にタブ パネルを追加し、テストを記録および表示するためのいくつかの単純な JavaScript API を提供します。

b) メリット

シンプルで使いやすい

c) デメリット

機能が少なく、ソース内にテストコードが書かれることが多いコードはリアルタイムで表示できますが、効果は得られますが、結合が強すぎてクリーンアップが困難です

Firefox でのみ実行可能です

[関連する推奨事項: JavaScript の学習]チュートリアル######]######

以上がJavaScript 単体テストは何に使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。