what is component testing
ソフトウェアテストではモジュールテストとも呼ばれるコンポーネントテストとは何ですか。
コンポーネントは、あらゆるアプリケーションの最下位の単位です。したがって、コンポーネントのテスト。名前が示すように、これはアプリケーションの最小単位または最小単位をテストする手法です。
コンポーネントテストは、プログラムテストまたはモジュールテストとも呼ばれます。
アプリケーションは、多くの小さな個々のモジュールの組み合わせと統合と考えることができます。システム全体をテストする前に、各コンポーネントまたはアプリケーションの最小単位を徹底的にテストすることが重要です。
Windows10用の最適化ソフトウェア
この場合、モジュールまたはユニットは個別にテストされます。各モジュールは入力を受け取り、何らかの処理を行い、出力を生成します。次に、出力は期待される機能に対して検証されます。
ソフトウェアアプリケーションは本質的に巨大であり、システム全体をテストすることは困難です。テストカバレッジに多くのギャップが生じる可能性があります。したがって、統合テストまたは機能テストに移行する前に、コンポーネントテストから始めることをお勧めします。
また読む=> ユニット、統合、機能テストの違い
学習内容:
- コンポーネントテスト
- コンポーネントテストの目的
- コンポーネントレベルのテストへの入力
- コンポーネントテストは誰ですか?
- コンポーネントテストで何がテストされますか?
- コンポーネントテストはいつ完了しますか?
- コンポーネントテストテスト戦略
- スタブとドライバー
- 例
- コンポーネントのテストケースを書く方法は?
- コンポーネントテストとユニットテスト
- コンポーネント対インターフェース対統合対システムテスト
- 結論
- 推奨読書
コンポーネントテスト
これは一種のホワイトボックステストです。
そのため、コンポーネントテストではバグを探し、個別にテスト可能なモジュール/プログラムの機能を検証します。
コンポーネントテストには、テスト戦略とテスト計画があります。また、コンポーネントごとに、テストケースでさらに細かく分類されるテストシナリオがあります。次の図は同じことを表しています。
コンポーネントテストの目的
コンポーネントテストの主な目的は、テストオブジェクトの入出力動作を検証することです。これにより、テストオブジェクトの機能が、目的の仕様に従って正しく完全に正常に機能していることが保証されます。
コンポーネントレベルのテストへの入力
コンポーネントレベルのテストへの4つの主要な入力は次のとおりです。
- プロジェクトテスト計画
- システム要求
- コンポーネント仕様
- コンポーネントの実装
コンポーネントテストは誰ですか?
コンポーネントテストは、QAサービスまたはテスターによって実行されます。
コンポーネントテストで何がテストされますか?
コンポーネントテストでは、システムコンポーネントの機能的または特定の非機能的特性の検証を考慮に入れる場合があります。
リソースの動作のテスト(メモリリークの特定など)、パフォーマンステスト、構造テストなどが可能です。
コンポーネントテストはいつ完了しますか?
コンポーネントテストは、ユニットテストの後に実行されます。
コンポーネントは作成されるとすぐにテストされるため、テスト対象のコンポーネントから取得された結果が、現在開発されていない他のコンポーネントに依存している可能性があります。
開発ライフサイクルモデルによっては、コンポーネントのテストをシステムの他のコンポーネントとは別に実行する場合があります。分離は、外部からの影響を防ぐために行われます。
したがって、そのコンポーネントをテストするには、スタブとドライバーを使用しますソフトウェアコンポーネント間のインターフェースをシミュレートするため。
統合テストは、コンポーネントテストの後に行われます。
コンポーネントテストテスト戦略
テストレベルの深さに応じて、コンポーネントテストは2つの部分に分けられます。
- 小規模でのコンポーネントテスト(ctis)
- 大規模なコンポーネントテスト(CTIL)
コンポーネントテストが他のコンポーネントと分離して行われる場合、それは小規模なコンポーネントテストと呼ばれます。これは、他のコンポーネントとの統合を考慮せずに行われます。
コンポーネントテストがソフトウェアの他のコンポーネントと分離せずに行われる場合、それは一般にコンポーネントテストと呼ばれます。これは、コンポーネントの機能フローに依存しているため、コンポーネントを分離できない場合に発生します。
依存関係のあるコンポーネントがまだ開発されていない場合は、実際のコンポーネントの代わりにダミーオブジェクトを使用します。これらのダミーオブジェクトは、スタブ(関数と呼ばれる)とドライバー(関数を呼び出す)です。
スタブとドライバー
スタブとドライバーについて簡単に説明する前に、 コンポーネントテストと統合テストの違い。 理由は–スタブとドライバーは統合テストでも使用されるため、これら2つのテスト手法の間に混乱が生じる可能性があります。
統合テスト手法は、2つのコンポーネントを順番に組み合わせて、統合システムを一緒にテストする手法です。あるシステムからのデータは別のシステムにトラバースされ、統合システムのデータの正確性が検証されます。
単一のコンポーネント/モジュールを他のコンポーネントに統合する前に徹底的にテストするモジュールテストとは異なります。したがって、コンポーネントテストは統合テストの前に実行されると言えます。
統合とコンポーネントの両方の使用 スタブとドライバー 。
'運転手' 呼び出し元の関数が存在しない場合に最下位のモジュールの関数を呼び出すために使用されるダミープログラムです。
「スタブ」 最上位モジュールからの入力/要求を受け入れ、結果/応答を返すスニペットのコードと呼ぶことができます
前に説明したように、コンポーネントは個別に独立してテストされます。そのため、現在開発されていない他のコンポーネントに応じて、コンポーネントのいくつかの機能が存在する可能性があります。したがって、これらの「未開発」機能を備えたコンポーネントをテストするには、データを処理して呼び出し元のコンポーネントに返す刺激エージェントを使用する必要があります。
このようにして、個々のコンポーネントが徹底的にテストされていることを確認しています。
ここにそれがあります:
- C1、C2、C3、C4、C5、C6、C7、C8、C9 —————はコンポーネントです
- C1、C2、C3が一緒になってサブユニット1を作ります
- C4とC5が一緒になってサブユニット2を作ります
- C6、C7、C8が一緒になってサブユニット3になります
- C9だけでサブユニット4になります
- サブユニット1とサブユニット2を組み合わせて、ビジネスユニット1を作成します。
- サブユニット3とサブユニット4を組み合わせて、ビジネスユニット2を作成します。
- ビジネスユニット1とビジネスユニット2を組み合わせてアプリケーションを作成します。
- したがって、この場合のコンポーネントテストは、C1からC9までの個々のコンポーネントをテストすることです。
- ザ・ ネット サブユニット1とサブユニット2の間の矢印は、統合テストポイントを示しています。
- 同様に、 ネット サブユニット3とサブユニット4の間の矢印は、統合テストポイントを示しています
- ビジネスユニット1とビジネスユニット2の間の緑色の矢印は、統合テストポイントを示しています。
したがって、次のことを行います。
- 成分 C1からC9のテスト
- 統合 サブユニットとビジネスユニット間のテスト
- システム アプリケーション全体のテスト
例
これまで、コンポーネントテストが ある種のホワイトボックステスト手法 。まあ、それは正しいかもしれません。しかし、これは、この手法がブラックボックステスト手法で使用できなかったことを意味するものではありません。
swfファイルの使用方法
ログインページで始まる巨大なWebアプリケーションを考えてみましょう。テスターとして(アジャイルの世界でも)、アプリケーション全体が開発され、テストの準備が整うまで待つことができませんでした。市場投入までの時間を増やすには、早期にテストを開始する必要があります。したがって、ログインページが開発されていることを確認したら、テストできるようになっていることを主張する必要があります。
ログインページをテストできるようになったらすぐに、すべてのテストケース(ポジティブおよびネガティブ)を実行して、ログインページの機能が期待どおりに機能していることを確認できます。
この時点でログインページをテストする利点は次のとおりです。
クラウドコンピューティングを利用している企業のリスト
- UIは、使いやすさ(スペルミス、ロゴ、配置、フォーマットなど)についてテストされています。
- 使用してみてください ネガティブテストテクニック 認証と承認のようなものです。これらの場合、欠陥を見つける可能性は非常に高くなります。
- SQLインジェクションのような技術の使用 非常に早い段階でセキュリティ違反をテストすることを保証します。
この段階でログに記録する欠陥は、開発チームにとって「学んだ教訓」として機能し、これらは連続するページのコーディングに実装されます。したがって、早期にテストすることで、まだ開発されていないページの品質を向上させることができます。
他の連続するページはまだ開発されていないため、ログインページの機能を検証するためにスタブが必要になる場合があります。 例えば 、資格情報が正しい場合は「ログ記録が成功しました」という簡単なページが必要な場合があり、資格情報が正しくない場合はエラーメッセージポップアップウィンドウが必要になる場合があります。
あなたは私たちの以前のチュートリアルを通過することができます 統合テスト スタブとドライバーに関するより多くの洞察を得る。
コンポーネントのテストケースを書く方法は?
コンポーネントテストのテストケースは、ソフトウェア設計やデータモデルなどの作業成果物から派生します。各コンポーネントは、一連のテストケースを通じてテストされます。各テストケースは、入力/出力の特定の組み合わせ、つまり部分的な機能をカバーします。
以下は、ログインモジュールのコンポーネントテストケースのサンプルです。
他のテストケースも同様に書くことができます。
コンポーネントテストとユニットテスト
コンポーネントテストと単体テストの最初の違いは、最初のテストはテスターによって実行され、2番目のテストは開発者またはSDETの専門家によって実行されることです。
ユニットテストは詳細なレベルで実施されます。一方、コンポーネントのテストはアプリケーションレベルで行われます。単体テストでは、個々のプログラムまたはコードの一部が指定どおりに実行されているかどうかが検証されます。コンポーネントテストでは、ソフトウェアの各オブジェクトは、システムの他のコンポーネント/オブジェクトとの分離の有無にかかわらず、個別にテストされます。
したがって、コンポーネントテストは単体テストと非常に似ていますが、より高いレベルの統合で、アプリケーションのコンテキストで実行されます(単体テストのようにそのユニット/プログラムのコンテキストだけでなく)。
コンポーネント対インターフェース対統合対システムテスト
成分 、私が説明したように、は独立してテストされるアプリケーションの最低単位です。
アン インターフェース 2つのコンポーネントの結合層です。 2つのコンポーネントが相互作用するプラットフォームまたはインターフェイスのテストは、インターフェイステストと呼ばれます。
さて、インターフェースのテストは少し異なります。これらのインターフェースは主に APIまたはWebサービス したがって、これらのインターフェイスのテストはブラックボックスの手法とは似ていません。むしろ、を使用して何らかのAPIテストまたはWebサービステストを行うことになります。 SOAP UI または他のツール。
インターフェイスのテストが完了すると、 統合テスト 。
統合テストでは、テストした個々のコンポーネントを1つずつ組み合わせて、段階的にテストします。統合中に、個々のコンポーネントを1つずつ組み合わせると期待どおりに動作し、1つのモジュールから別のモジュールに流れるときにデータが変更されないことを検証します。
すべてのコンポーネントが統合されてテストされたら、 私たちは実行します システムテスト アプリケーション/システム全体をテストします。このテストは、実装されたソフトウェアに対してビジネス要件を検証します。
結論
私はそれを言うだろう ユニットテスト およびコンポーネントのテストは並行して行われます。
開発チームによって行われる単体テストとは異なり、コンポーネント/モジュールのテストはテストチームによって行われます。統合テストを開始する前に、コンポーネント全体のテストを実行することを常にお勧めします。
コンポーネントテストが堅実である場合、統合テストでの欠陥は少なくなります。問題はありますが、それらの問題は統合環境または構成の課題に関連しています。統合されたコンポーネントの機能が正常に機能していることを確認できます。
このチュートリアルが、コンポーネント、統合、およびシステムのテストを理解するのに役立つことを願っています。それでも質問がある場合は、コメントでお気軽にお問い合わせください。