what is thread testing software testing
このチュートリアルでは、スレッドテストとは何か、いつ、どのように実行するか、スレッドベースのテストの種類、および直面する課題について説明します。
スレッドテストは、クライアントサーバーベースのアプリケーションをテストするために使用されるソフトウェアテスト手法です。
スレッドベースのテストは、統合テストの初期段階で実行して、特定のタスク/プログラムまたはスレッドの主要な機能をテスト/検証できるようにする必要があります。
学習内容:
スレッドテストを行う理由
コンポーネントが統合されている場合、システムが期待どおりに機能し、すべてのトランザクションが要件に従って行われるかどうかを確認する必要があります。したがって、スレッドベースのテストが同じことをテストするためにやって来ます。
plsqlインタビューの質問と回答
このテストは、サブシステムからシステム全体、つまりシステム全体に至るまで、すべてのレベルでスレッドを段階的に統合することによって行われます。すべてのシステムアクティビティは、スレッドのみで進行します。
スレッド定義は、開発者と開発者からテスターの間で機能の背景とスレッド実行の詳細を共有するのに役立ちます。
スレッドについて
スレッドは、プロセス内の制御の流れです。これは、実行できるシステムの最小のタスクです。
例
Webブラウザーには、vizを実行している1つ以上のスレッドがある場合があります。画像とテキストを表示するための1つのスレッドと、データを取得するための別のスレッド。場合によっては、すべてのプロセスを処理するために単一のアプリケーションが必要になります。
マルチスレッドを作成することは、同じための最良の解決策です。そうしないと、クライアントによって複数の要求がサーバーに送信され、要求を1つずつ確認するのに時間がかかります。マルチスレッドは、要求に同時に応答するのに役立ちます。
スレッドテストはいつどのように実行されますか
これは、システム統合テストの初期段階で実行する必要があります。
統合テストは、計画された方法でさまざまなモジュールを統合することによって実行されます。統合計画は、モジュールを統合して完全なシステムを作成する順序を指定するものと同じです。
統合テストを実行するための手法を以下に示します。
- ビッグバンアプローチ
- トップダウンアプローチ
- ボトムアップアプローチ
- 混合アプローチ
それぞれのテクニックを詳しく見ていきましょう。
#1)ビッグバンアプローチ
ビッグバンアプローチは、すべてのモジュールが一度に統合およびテストされるため、小規模システムにのみ使用されます。
このアプローチ中に見つかった問題は、統合されたモジュールのいずれかから発生する可能性があるため、特定するのが困難です。したがって、見つかったデバッグの問題は、このアプローチで修正するには非常にコストがかかります。
#2)トップダウンアプローチ
トップダウンアプローチはスタブを使用して実行されます。つまり、トップレベルモジュールがテストされると、直接のサブルーチンが統合されてテストされます。
スタブは、低レベルのルーチンの効果をシミュレートするプログラムであり、テスト対象のルーチンによって呼び出されます。 スレッドテストはトップダウンアプローチを使用します。
#3)ボトムアップアプローチ
ボトムアップアプローチでは、すべてのサブシステムが個別にテストされてから、システム全体がテストされます。すべてのサブシステムを個別にテストする理由は、サブシステムの一部であるすべてのモジュール間のインターフェースをテストするためです。
この手法には、テストドライバー、つまり他のモジュールを呼び出して実際の製品と同じ出力を提供するプログラムが必要です。
#4)混合統合テスト
この手法は、トップダウンとボトムアップの両方のアプローチを組み合わせたものです。したがって、それは混合統合テストと呼ばれます。
スレッドベースのテストを実行するためのキーポイント
- スレッドテストの実行中に、スレッドまたは小さな機能が統合されてテストされます。行われるテストは、サブシステムレベルでの増分テストであり、その後、完全なシステムとして行われます。
- 初期段階では、統合テスターはさらに何をテストするかについての良いアイデアと知識を得ることができます。
- 統合テスターは、スレッド境界内でのみポジティブとネガティブの両方のシナリオを適用して実行する必要があります。彼らは、例外的なケースや境界のケースもカバーするために従うべきスレッドテストアプローチを決定する必要があります。
- 開発者がテスターに提供するスレッド定義は、インテグレーターテスターがそれに応じてスレッドをテストするのに役立ちます。テスターが必要とするその他の情報は、スレッドレビュープロセスで回答できます。
- スレッドプロセスは、エンドツーエンドの開発プロセスではなく、統合プロセスで機能します。
- マルチスレッド機能をテストするには、テストするアプリケーションまたはプログラムの複数のインスタンスを同時にアクティブにします。
- 異なるハードウェアでマルチスレッドプログラムを実行します。
- スレッドテストは、セッションがスレッドで形成されるセッションテストの形式です。形成されたスレッドがセッションである必要はありません。
スレッドベースのテストの種類
2種類のスレッドベースのテストが実行されます。
- シングルスレッドテスト
- マルチスレッドテスト
#1)シングルスレッドテスト
シングルスレッドテストは、一度に1つのトランザクションをテストします。クライアントが要求への応答を取得するまでの待機時間は、一度に1つのクライアントにサービスを提供したり応答したりできるため、少し長くなる可能性があります。
このテストは、テスターがプログラムまたは記述されたコードのロジックを理解してテストするのに役立ちます。
Javaで配列に追加できますか
#2)マルチスレッドテスト
マルチスレッドテストでは、複数のアクティブなトランザクションを同時にテストします。この場合、クライアントの要求に対して個別のスレッドが作成されます。リクエストが行われるたびに、サービスへのスレッドが作成されるか、リクエストに応答します。
シングルスレッドテストで正常に機能していたトランザクションは、マルチスレッドでのテスト中に失敗する可能性があり、他のスレッドや機能に干渉して、期待どおりに機能しなくなる可能性もあります。
マルチスレッドアプローチはシングルスレッドアプローチよりも優れていますか?
マルチスレッドアプリケーションは、アプリケーションのパフォーマンスを向上させるため、シングルスレッドよりも優れています。マルチスレッドを使用すると、多数のリソースが同時に問題/要求を処理できます。
スレッドベースのテストを行う際の課題
スレッドベースのテストを実行している間、テスターはテストのパフォーマンス、時間、およびコストに影響を与えるいくつかの課題に直面します。
- マルチスレッドコードの単体テストケースを作成するのは困難です。
- マルチスレッドテストが異なるハードウェアで実行されている場合、サイズ、ストレージ容量、メモリ、問題などによって異なります。
- シングルスレッドとマルチスレッドの両方のテストシナリオは異なります。
- マルチスレッドテストでは、単体テストの再現性のあるテストをプログラムする必要があります。
マルチスレッドの長所/短所
マルチスレッドには、多くの長所と短所があります。同じことを知っているテスターとして、彼らはそれに応じてテストプロセスをテストし、中断するのに役立ちます。
利点
- マルチスレッドは、ユーザーへの応答性を向上させます。アプリケーションの一部がブロックされた場合でも、アプリケーションはプログラムを実行させることがあります。
- リソース共有は、スレッドが関連または属するプロセスのリソースを共有するため、もう1つの利点です。
- スレッドの作成は、スレッドが属するリソースを共有するため、経済的です。
短所
- 複雑なテストプロセス
- 結果は非常に予測不可能です。
- プログラムを書くことはより難しくなります。
- デッドロックの発生。
デッドロックとは
マルチスレッドが実行されると、リソースが利用できない場合、スレッドは待機状態になります。
要求されたリソースは他の待機中のスレッドによって保持されているため、待機状態はスレッドに対して変更されない場合があります。このような状況が発生すると、デッドロックと呼ばれます。
スレッドとプロセスの違い
スレッドとプロセスの違いを理解しましょう。
S.No | 糸 | 処理する |
---|---|---|
7 | スレッドをさらに分割することはできません。 | プロセスは複数のスレッドを持つことができます。 |
1 | スレッドは軽量プロセスです。 | このプロセスは重量級のプロセスです。 |
二 | サーバースレッドがブロックされた場合、同じタスクの2番目のスレッドが実行され、プロセスを完了することができます。 | サーバープロセスがブロックされた場合、ブロックされたサーバープロセスのブロックが解除されるまで、他のプロセスは実行できません。 |
3 | スレッドは分離せず、メモリを共有します。 | プロセスは分離されています。 |
4 | スレッドの作成、コンテキストの切り替え、終了にかかる時間はスレッド内で短くなります。 | スレッドの作成、コンテキストの切り替え、終了は、プロセスでより多くの時間がかかります。 |
5 | スレッドは、プロセスの特定のタスクを指します。 | プロセスとは、任意のプログラムの実行を指します。 |
6 | 使用されるリソースはスレッド内でごくわずかです。 | プロセスで利用されるリソースはもっとあります。 |
スレッドベースのテストとユーザーベースのテストの違い
S.No. | スレッドベースのテスト | 使用ベースのテスト |
---|---|---|
1 | スレッドは統合され、個別にテストされます。 | テストは、相互に依存しない、つまり独立しているクラスから始まります。 |
二 | 何も影響を受けないことを確認するために、回帰テストが実行されます。 | 独立クラスのテストが完了すると、従属クラスがテストされます。扶養家族は、独立したクラスに依存するものです。このシリーズは、完全なシステムが構築されるまで続きます。 |
3 | スレッドベースのテストは、システムの入力またはイベントを確認するために不可欠なクラスを統合します。 | ユースベーステストは、ユースケースに応答または承認するために不可欠なクラスを統合します。 |
よくある質問
Q#1)スレッドテストとは何ですか?
回答: スレッドベースのテストは、統合テストの初期段階で実行される方法論です。スレッドまたはプログラムは、サブシステムに統合され、段階的にテストされてから、システム全体としてテストされます。
Q#2)最初に行われるテストはどれですか?
回答 :通常、ボトムアップテストが最初に実行され、次にトップダウンテストが実行されます。
Q#3)トップダウンテストとは何ですか?
回答: トップダウンは、スタブを使用してテストが行われる統合テスト手法です。つまり、下位レベルのコンポーネントがまだ統合をテストする準備ができていない場合、実際のモジュールの場合と同じ出力を取得するためにスタブ(一時モジュール)が作成されます。
結論
スレッドベースの統合テストは、主要な機能または特定のタスクやスレッドをテストする際に重要な役割を果たします。この方法論は、クライアントサーバーベースのアーキテクチャに最適です。
スレッドテストを実行している間、テスターは多くの課題に直面する必要がありますが、実行が簡単で信頼できる多くの利点もあります。これにより、テスターはすべてのトランザクションをテストし、期待どおりに、要件どおりに機能しているかどうかを確認できます。
すべてのトランザクション/イベントをテストしてスレッドテストを完了することは不可能です。そのため、シングルスレッドタイプとマルチスレッドタイプに分けられます。