white box testing complete guide with techniques
ホワイトボックステストとは何ですか?
定義によれば、「ホワイトボックステスト」(クリア、ガラスボックス、または構造テストとも呼ばれます)は、プログラムのコードと内部構造を評価するテスト手法です。
ホワイトボックステストでは、コードの構造を確認します。製品の内部構造がわかっている場合は、テストを実行して、仕様に従って内部操作が実行されていることを確認できます。そして、すべての内部コンポーネントは適切に実行されています。
学習内容:
私の経験
私がソフトウェアテストの分野に携わってからほぼ10年が経ち、これまでのところ、テスターがソフトウェア業界全体で最も熱心であることに気づきました。
この背後にある主な理由は、テスターは常に学習する範囲に何かを持っているということです。ドメイン、プロセス、テクノロジーのいずれであっても、テスターは必要に応じて完全な開発を行うことができます。
しかし、彼らが言うように 「常に暗い面があります」 。
テスターはまた、非常に複雑で開発者の手に負えないと感じるタイプのテストも実際に避けています。はい、「ホワイトボックステスト」です。
カバレッジ
ホワイトボックステストは、コード内の仕様の範囲です。
1.1。 コードカバレッジ
2.セグメントカバレッジ: 各コードステートメントが1回実行されることを確認してください。
3.ブランチカバレッジまたはノードテスト: 可能な限りすべてのコードブランチをカバーしました。
4.複合条件カバレッジ: 複数の条件については、複数のパスと異なるパスの組み合わせを使用して各条件をテストし、その条件に到達します。
5.ベーシスパステスト: コード内のそれぞれの独立したパスは、テストのために使用されます。
6.データフローテスト(DFT): このアプローチでは、可能な各計算を通じて特定の変数を追跡し、コードを介して中間パスのセットを定義します。DFTは依存関係を反映する傾向がありますが、主にデータ操作のシーケンスを介して行われます。つまり、各データ変数が追跡され、その使用が検証されます。このアプローチは、使用されているが初期化されていない変数、宣言されているが使用されていない変数などのバグを発見する傾向があります。
7.パステスト: パステストでは、コード内のすべての可能なパスが定義され、カバーされます。それは時間のかかる作業です。
8.ループテスト: これらの戦略は、単一ループ、連結ループ、およびネストされたループのテストに関連しています。独立および依存のコードループと値は、このアプローチによってテストされます。
なぜWBTを実行するのですか?
確実にするために:
- モジュール内のすべての独立したパスが少なくとも1回実行されていること。
- すべての論理的決定は、真と偽の値で検証されます。
- すべてのループは、その境界および操作範囲内で実行され、内部データ構造の有効性があります。
次の種類のバグを発見するには:
- プログラム外の関数、条件、または制御を設計および実装すると、論理エラーが作業に忍び寄る傾向があります。
- プログラムの論理フローと実際の実装の違いによる設計エラー
- 誤植と構文チェック
このテストには詳細なプログラミングスキルが必要ですか?
私たちは書く必要があります テストケース プログラムロジックを完全にカバーします。
このためには、プログラムをよく知っている必要があります。つまり、テストする仕様とコードを知っている必要があります。このタイプのテストには、プログラミング言語とロジックの知識が必要です。
制限事項
プログラム内のループのすべてのパスをテストすることはできません。これは、大規模なシステムでは徹底的なテストが不可能であることを意味します。
これは、WBTが効果的でないことを意味するものではありません。テスト用の重要な論理パスとデータ構造を選択することにより、実際に可能で効果的です。
ホワイトボックステストとブラックボックステストの違い
簡単に言えば:
ブラックボックステストでは、ユーザーの観点からソフトウェアをテストしますが、ホワイトボックスでは、実際のコードを確認してテストします。
ブラックボックステストでは、内部システムコードを確認せずにテストを実行しますが、WBTでは、内部コードを確認してテストします。
ホワイトボックステスト手法は、開発者とテスターの両方で使用されています。実際に実行されているコード行と実行されていないコード行を理解するのに役立ちます。これは、ロジックの欠落またはタイプミスがあることを示している可能性があり、最終的にはいくつかの悪影響につながる可能性があります。
推奨読書=> ブラックボックステストの完全ガイド
WBTを実行する手順
ステップ1 –ソースコードを通じてアプリケーションの機能を理解します。つまり、テスターはプログラミング言語やその他のツール、およびソフトウェアの開発に使用される手法に精通している必要があります。
ステップ2 –テストを作成して実行します。
テストの概念について議論するとき、「 カバレッジ 」が最も重要な要素であると考えられています。ここでは、ホワイトボックステストのコンテキストから最大のカバレッジを得る方法を説明します。
また読む=> 原因と結果のグラフ –最大のカバレッジのための動的テストケース作成テクニック
ホワイトボックステストの種類と手法
ホワイトボックステストの種類ごとに、いくつかの種類と異なる方法があります。
以下の画像を参照してください。
plsqlインタビューの質問と回答
今日は主に 「ユニットテストホワイトボックステクニック」の実行テストタイプ。
3つの主なホワイトボックステスト手法:
- ステートメントカバレッジ
- ブランチカバレッジ
- パスカバレッジ
ステートメント、ブランチ、またはパスカバレッジは、修正が必要なバグや欠陥を特定しないことに注意してください。実行されないか、変更されないままのコード行のみを識別します。これに基づいて、さらなるテストに焦点を当てることができます。
簡単な例を使って、これらのテクニックを1つずつ理解していきましょう。
#1)ステートメントカバレッジ:
プログラミング言語では、ステートメントは、コンピューターが理解してそれに応じて動作するためのコード行または命令に他なりません。ステートメントは、コンパイルされてオブジェクトコードに変換されると実行可能ステートメントになり、プログラムが実行モードのときにアクションを実行します。
したがって、 「ステートメントカバレッジ」 、名前自体が示すように、これはコードのすべての行が少なくとも1回実行されるかどうかを検証する方法です。
#2)ブランチカバレッジ:
プログラミング言語の「ブランチ」は「IFステートメント」のようなものです。 IFステートメントには2つのブランチがあります:T rueとFalse 。
したがって、ブランチカバレッジ(決定カバレッジとも呼ばれます)では、各ブランチが少なくとも1回実行されるかどうかを検証します。
「IFステートメント」の場合、2つのテスト条件があります。
- 真のブランチを検証するためのものと、
- 偽の分岐を検証するその他。
したがって、理論的には、ブランチカバレッジは、実行時に各決定ポイントからのすべてのブランチが実行されることを確認するテスト方法です。
#3)パスカバレッジ
パスカバレッジは、プログラムのすべてのパスをテストします。これは、プログラムのすべてのパスが少なくとも1回トラバースされることを保証する包括的な手法です。パスカバレッジは、ブランチカバレッジよりもさらに強力です。この手法は、複雑なプログラムのテストに役立ちます。
これらすべてのホワイトボックステスト手法を理解するために、簡単な例を見てみましょう。
また、チェックしてください=> さまざまな種類のテスト
ホワイトボックステストの例
以下の単純な擬似コードについて考えてみます。
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE”
ために ステートメントカバレッジ –コードのすべての行をチェックするために必要なテストケースは1つだけです。
つまり、次のことを意味します。
考えれば TestCase_01は(A = 40およびB = 70)であり、 その後、コードのすべての行が実行されます。
ここで疑問が生じます:
- それで十分ですか?
- テストケースをA = 33およびB = 45と見なした場合はどうなりますか?
ステートメントカバレッジは真の側面のみをカバーするため、疑似コードの場合、1つのテストケースだけではテストに十分ではありません。テスターとして、ネガティブなケースも考慮する必要があります。
したがって、最大のカバレッジを得るには、考慮する必要があります 「」 ブランチカバレッジ 「」 、「FALSE」条件を評価します。
現実の世界では、条件が失敗したときに適切なステートメントを追加できます。
したがって、擬似コードは次のようになります。
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” ELSE PRINT “ITS PENDING”
ステートメントカバレッジは擬似コード全体をテストするのに十分ではないため、最大カバレッジを確保するにはブランチカバレッジが必要になります 。
したがって、ブランチカバレッジの場合、この擬似コードのテストを完了するには2つのテストケースが必要になります。
TestCase_01 :A = 33、B = 45
TestCase_02 :A = 25、B = 30
これにより、コードのすべての行が少なくとも1回実行されていることがわかります。
これまでに導き出された結論は次のとおりです。
- ブランチカバレッジは、ステートメントカバレッジよりも多くのカバレッジを保証します。
- ブランチカバレッジは、ステートメントカバレッジよりも強力です。
- 100%ブランチカバレッジ自体は、100%ステートメントカバレッジを意味します。
- ただし、100%のステートメントカバレッジは、100%のブランチカバレッジを保証するものではありません。
それでは次に進みましょう パスカバレッジ:
前述のように、パスカバレッジは、基本的にループステートメントまたはループと決定ステートメントの組み合わせを含む複雑なコードスニペットをテストするために使用されます。
この擬似コードを検討してください。
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” END IF IF A>50 PRINT “ITS PENDING” END IF
最大のカバレッジを確保するには、4つのテストケースが必要になります。
どうやって?簡単に言うと、2つの決定ステートメントがあるため、各決定ステートメントについて、テストするために2つのブランチが必要になります。 1つは真の条件で、もう1つは偽の条件です。したがって、2つの決定ステートメントの場合、真の側をテストするために2つのテストケースが必要であり、偽の側をテストするために2つのテストケースが必要です。これにより、合計4つのテストケースが作成されます。
これらを単純化するために、以下の擬似コードのフローチャートを考えてみましょう。
完全にカバーするには、次のテストケースが必要です。
TestCase_01: A = 50、B = 60
TestCase_02 :A = 55、B = 40
TestCase_03: A = 40、B = 65
TestCase_04: A = 30、B = 30
したがって、カバーされるパスは次のようになります。
赤い線– TestCase_01 =(A = 50、B = 60)
青い線= TestCase_02 =(A = 55、B = 40)
オレンジ色の線= TestCase_03 =(A = 40、B = 65)
緑の線= TestCase_04 =(A = 30、B = 30)
******************
= >> お問い合わせ ここにあなたのリストを提案する
*****************
ホワイトボックステストツール
以下に示すのは、トップホワイトボックステストツールのリストです。
#1)ベラコード
Veracodeのホワイトボックステストツールは、ソフトウェアの欠陥を迅速かつ簡単に特定し、低コストで解決するのに役立ちます。 .NET、C ++、JAVAなどのいくつかのアプリケーション言語をサポートし、デスクトップ、Web、およびモバイルアプリケーションのセキュリティをテストすることもできます。それでも、Veracodeツールには他にもいくつかの利点があります。 Veracodeホワイトボックステストツールの詳細については、以下のリンクを確認してください。
ウェブサイトへのリンク: ベラコード
#2)EclEmma
EclEmmaは当初、Eclipseワークベンチ内でのテスト実行と分析のために設計されました。これは無料のJavaコードカバレッジツールと見なされており、いくつかの機能もあります。 EclEmmaのインストールまたは詳細については、以下のリンクを確認してください。
ウェブサイトへのリンク: EclEmma
#3)RCUNIT
Cプログラムのテストに使用されるフレームワークはRCUNITとして知られています。 RCUNITは、MITライセンスの条件に基づいて適宜使用できます。これは無料で使用できます。インストールまたは詳細については、以下のリンクを確認してください。
ウェブサイトへのリンク: RCUNIT
#4)cfix
cfixは、C / C ++の単体テストフレームワークの1つであり、テストスイートの開発を可能な限りシンプルかつ簡単にすることのみを目的としています。一方、cfixは通常、NTカーネルモードとWin32に特化しています。 cfixをインストールして詳細を知るには、以下のリンクを確認してください。
ウェブサイトへのリンク: cfix
#5)グーグルテスト
Googletestは、GoogleのC ++テストフレームワークです。テスト検出、死亡テスト、値パラメーター化テスト、致命的および非致命的障害、XMLテストレポートの生成などは、GoogleTestのいくつかの機能ですが、他にもいくつかの機能があります。 Linux、Windows、Symbian、Mac OS Xは、GoogleTestが使用されているいくつかのプラットフォームです。のためにダウンロードは、以下のリンクを確認してください。
ダウンロードリンク: Googleテスト
#6)EMMA
Emmaは、使いやすい無料のJAVAコードカバレッジツールです。これには、いくつかの機能と利点が含まれています。 Emmaをダウンロードして詳細を知るには、以下のリンクを確認してください。
ダウンロードリンク: EMMA
#7)NUnit
テスターのためのSQLクエリインタビューの質問
NUnitは、テスト結果を判断するために手動の介入を必要としない、使いやすいオープンソースのユニットテストフレームワークです。すべての.NET言語をサポートします。また、データ駆動型テストをサポートし、テストはNUnitの下で並行して実行されます。 NUnitの以前のリリースではNUnitライセンスが使用されていましたが、NUnit3はMITライセンスの下でリリースされています。ただし、どちらのライセンスでも、制限なしで無料で使用できます。 NUnitをダウンロードして詳細を知るには、以下のリンクを確認してください。
ダウンロードリンク: NUnit
#8)CppUnit
CppUnitは、C ++で記述されたユニットテストフレームワークであり、JUnitの移植版と見なされています。 CppUnitのテスト出力は、XML形式またはテキスト形式のいずれかです。独自のクラスで単体テストを作成し、テストスイートでテストを実行します。 LGPLの下でライセンスされています。 CppUnitをダウンロードして詳細を知るには、以下のリンクを確認してください。
ダウンロードリンク: CppUnit
#9)JUnit
JUnitは、Javaプログラミング言語でのテスト自動化をサポートする静かでシンプルな単体テストフレームワークです。主にテスト駆動開発をサポートし、テストカバレッジレポートも提供します。 Eclipse PublicLicenseの下でライセンスされています。無料ダウンロードおよびJUnitの詳細については、以下のリンクを確認してください。
ダウンロードリンク: JUnit
#10)JsUnit
JsUnitは、JavaScriptへのJUnitのポートと見なされます。また、クライアント側のJavascriptをサポートするオープンソースの単体テストフレームワークです。これは、GNU Public License 2.0、GNU Lesser Public License 2.1、およびMozilla Public License1.1の下でライセンスされています。 JsUnitをダウンロードして詳細を知るには、以下のリンクを確認してください。
ダウンロードリンク: JsUnit
また、下にリストされているすべてのツールを確認してください 静的コード分析 ここに 。
ホワイトボックステクニックに使用している、よりシンプルまたは高度なツールを自由に提案してください。
結論
ブラックボックステストのみに依存するだけでは、最大のテストカバレッジには不十分です。ブラックボックスとホワイトボックスの両方のテスト手法を組み合わせて、次のことを行う必要があります。 最大の欠陥をカバーする 。
適切に行われた場合、ホワイトボックステストは確かにソフトウェアの品質に貢献します。また、コードについて最も「偏りのない」意見を提供できるため、テスターがこのテストに参加することもできます。 :)
この記事で説明した方法について質問がある場合はお知らせください。