ソフトウェアにおけるパステストと基本パステスト(例付き)

ソフトウェアテストにおけるパステストとは何ですか?
パス テストは、プログラムのソース コードを使用して、考えられるすべての実行可能パスを見つける構造テスト方法です。 これは、コード内にあるすべての障害を特定するのに役立ちます。 この方法は、コンピュータ プログラムを通じてすべてまたは選択されたパスを実行するように設計されています。
複雑なプログラムには、多くの実行パスが存在します。それらすべてをテストすることは困難かつ時間もかかり、しかもほとんどのパスは重複しています。基本パステストは、すべてのステートメントとすべての分岐を少なくとも一度は実行する最小限のパスセットを特定することで、こうした重複を削減します。
ソフトウェアエンジニアリングにおけるベーシスパステスト
基底パスのテスト ソフトウェアエンジニアリングでは、 ホワイト Box テスト プログラム内で通過できるフローまたは論理パスに基づいてテスト ケースを定義する方法。 基本パス テストの目的は、独立したパスの数を定義することであるため、必要なテスト ケースの数を明示的に定義してテスト カバレッジを最大化できます。
In ソフトウェア工学, ベーシス パス テストでは、プログラム内のすべての可能なブロックの実行が含まれ、最小限のテスト ケースで最大のパス カバレッジを実現します。 ブランチテストとパステストのハイブリッド方式です。
簡単な例を挙げれば、その考えが具体的に理解できるだろう。
上記のフローグラフには条件文が含まれているため、制御は複数の経路で出口に到達できます。これを網羅するには、3つの独立した経路が必要です。
- パス1:1,2,3,5,6、7
- パス2:1,2,4,5,6、7
- パス3:1、6、7
制御フローグラフの描き方
基本パステストのすべてのステップは制御フローグラフに依存するため、その構築方法について正確に理解しておくことが重要です。
- ノード: 常に同時に実行される一連のステートメントを円で表したもの。分岐のないステートメントの連続は、単一のノードに集約される。
- エッジ: 制御が1つのノードから次のノードへ移行する様子を矢印で表したもの。制御の移動はエッジによってのみ行われる。
- 述語ノード: 条件を含むノードで、そこから2つ以上のエッジが伸びているもの。これらが複雑度を決定づける要因となる。
- 地域: 辺と節点によって囲まれた領域。領域の数に1を加えた数が、サイクロマティック複雑度に等しい。
2つの決定事項を含む短いモジュールを考えてみましょう。
if (a > b) { // node 1, predicate max = a; // node 2 } else { max = b; // node 3 } if (max > limit) { // node 4, predicate alert(); // node 5 } return max; // node 6
グラフには6つのノードと6つのエッジがあり、エッジの公式を用いるとV(G) = 6 – 6 + 2 = 2となります。述語カウントを用いると、同じ答えがより早く得られます。2つの決定に1を加えたものが、2つの分岐を合わせた3つの独立したパスとなります。どちらの形式でも確実に計算できるものを使用し、もう一方の形式と照合してください。
ほとんどのミスを防ぐ2つのルール。 まず、複合条件として (x > 0 かつ y > 0) の場合 短絡評価によって2つ目の決定が行われるため、述語ノードは1つではなく2つとしてカウントされます。次に、ループは、反復回数に関係なく、述語ノードを1つ提供します。
基本パスのテスト手順
基底パスのテストに含まれる基本的な手順は次のとおりです。
- 制御グラフを描画します (さまざまなプログラム パスを決定するため)
- 計算 循環的複雑性 (独立したパスの数を決定するためのメトリック)
- パスの基本セットを見つける
- 生成する テストケース 各道を実践する
基本パステストの利点と限界
基本パステストの利点
- 冗長なテストの削減に役立ちます
- プログラムロジックに注目
- これは、恣意的なテストケースの選択を分析的な基準に置き換えるものです。
- 基本セットを実行するテスト ケースは、プログラム内のすべてのステートメントを少なくとも XNUMX 回実行します。
基本パステストの限界
- 不足しているコードが見つかりません。 実装されなかった要件にはパスが存在しないため、テストは生成されません。基本パスのテストは、要件ベースのテストと組み合わせて実施する必要があります。
- パス数は急速に増加する。 入れ子になったループや複合条件は複雑さを急速に高め、V(G)が20を超えるモジュールは、この方法では現実的にカバーできなくなります。
- 報道内容の正確さは、報道内容の正確さとは異なる。 パスを実行することは、コードが正しく実行されることを証明するだけであり、正しい結果を生成することを証明するものではありません。各テストには、意味のあるアサーションが依然として必要です。
- データ依存パス。 一部の経路は、特定の入力の組み合わせによってのみ到達可能であり、そのような組み合わせを構築することは困難または不可能な場合がある。

