paint-brush
ソフトウェア QA: 組み合わせテスト設計の問題の解決@shad0wpuppet
26,169 測定値
26,169 測定値

ソフトウェア QA: 組み合わせテスト設計の問題の解決

Konstantin Sakhchinskiy5m2024/01/22
Read on Terminal Reader
Read this story w/o Javascript

長すぎる; 読むには

ソフトウェア テスト、特に k ウェイ テストやペアワイズ テストなどの組み合わせテスト設計における課題。間違った入力、堅牢なテスト方法、変数の組み合わせなどの問題について説明します。ケーススタディを使用して、検出されない障害の蔓延を強調し、デフォルト設定と複雑な変数の相互作用を考慮した微妙なテストアプローチの必要性を強調します。重要な点は、堅牢なソフトウェアのための包括的なテスト戦略の重要性です。
featured image - ソフトウェア QA: 組み合わせテスト設計の問題の解決
Konstantin Sakhchinskiy HackerNoon profile picture


ソフトウェア テストでは、テスト ケースの設計がアプリの信頼性と堅牢性を確保するための基礎となります。 k-way テストやペアワイズ テストなどの組み合わせテスト設計手法は、異なる入力変数間の相互作用をテストすることを目的としています。しかし、課題や落とし穴によって、重大なエラーを発見する効果が妨げられる可能性があることが明らかになりました。


この短い記事では、組み合わせテストの設計中に遭遇する可能性のある特定の問題に焦点を当て、慎重な検討が必要なニュアンスを探ります。不正な入力値の例、堅牢なオラクルの重要性、見落とされがちな変数の組み合わせの重要性、変数がどのように相互作用するかについての重要な理解を詳しく掘り下げてみましょう。


入力値の誤った識別

k ウェイ テスト セットは、k 個の変数の値の可能なすべての組み合わせで構成されます。たとえば、Allpairs アルゴリズムを適用すると、変数値のペアの考えられるすべての組み合わせを含む 2 方向テスト セットが生成されます。したがって、k-way フォールトとは、k 個の変数の値の相互作用から生じるエラーを指します。 SYS1 と SYS2 の 2 つのシステムを検査したところ、実稼働リリース後にエラーが判明しました。両方のシステムは、k 値 2、3、4、および 5+ を使用して k-way テストを受けました。


この表には、2 つのシステムの k-way テストの結果が表示されます。

故障の種類

SYS1

SYS2

2ウェイ

30

29

3ウェイ

4

12

4ウェイ

7

1

> 4ウェイ

7

3

見つかりません

34

43


各 k-way セットに対して逐次チェックが実行されました。図 2.1 は、2 つ以下の入力変数の相互作用から生じる誤差が29 in SYS130 in SYS2あることを示しています。 3 つの変数の相互作用による誤差は4*(30+4) in SYS212*(29+12) in SYS1でした。 4 つの変数を含む交互作用の場合、誤差は7*(30+4+7) in SYS2 1*(29+12+1) in SYS1でした。 4 つ以上の変数との相互作用による誤差は3*(29+12+1+3) in SYS1 7*(30+4+7+7) in SYS2でした。特に、SYS1 では43 個のエラーが検出されず、SYS2 では34 個のエラーが検出されませんでした。


この例では、最も重大なエラーは「見つかりません」カテゴリに属していました。さらなる調査により、検出されなかったエラーのほとんどが一方向の障害であることが判明しました。これは、1 つの変数の特定の値が他の変数の値とは関係なくエラーを引き起こしたことを意味します。ペアワイズ テストではこれらのエラーが検出されるはずですが、何らかの理由で検出されないままになっていました。これらのNot Foundエラーは主に、特定の入力値が選択されていないか、誤って選択されているために気付かれなかった一方向の障害です。


問題の本質は、 Allpairs アルゴリズムを適用する前に発生したエラーが持続するという事実にあります。これは、以前のテスト設計手法が誤って適用された場合、または入力値が誤った場合、Allpairs アルゴリズムまたは直交配列テストの使用に関係なく、アプリケーションのエラーが継続することを意味します。


期待される結果を定義することの弱点: 結果の不確実性

例として、多数のオプション (この形式のようなもの) があり、その結果、多数の入力データの組み合わせがあるアプリケーション モジュールを考えてみましょう。


モジュールでは、 2^12 * 3可能な組み合わせがあるとします。ここでの課題は、Allpairs アルゴリズムを使用してすべての可能な変数値を徹底的にテストできるため、間違った入力値を選択することではありません。しかし、これですべての重大なエラーが見つかるでしょうか?期待される結果に問題があるため、おそらくそうではありません。このような種類のソフトウェア モジュールでオプションの各組み合わせを操作した後、システムをしばらく使用して、オプションが正しく動作し、選択したオプションを適用した後に他に何も問題がないことを確認する必要があります。この場合、見落とされやすい微妙で明白でない問題がないという保証はありません。


各テストの後に、システムの中核機能を徹底的に評価する必要がある場合があります。ここで重要なのは、重大な欠陥は多くの場合、期待するほど明白ではなく、期待される結果ですべてを説明することは事実上不可能になるということです。


最も可能性の高い組み合わせに注意を払わない

2^12 * 3の組み合わせ (上記の例で示したように) のうち、おそらく他のすべてよりもはるかに頻繁に発生するモジュール オプションの組み合わせが 1 つあります。それがデフォルト設定です。 95% の人がこのモジュールのデフォルト設定からオプションを変更しない場合、ほぼデフォルトまたはほぼデフォルトのオプションが十分にカバーされるはずです。 1 つのオプションでデフォルト構成からの逸脱を伴うすべてのバリエーションをテストすると、テスト数は 2 桁になります。デフォルトから 2 つの設定で逸脱する可能性のあるオプションのすべての組み合わせをテストする場合、テスト ケースは約 100 個になります。これらのテスト ケースと全ペア テスト ケースを使用してテストすると、デフォルト オプションの存在を無視するよりも良い結果が得られる可能性があります。ただし、Allpairs アルゴリズムでは、テスターは最も可能性が高く一般的に使用される変数の組み合わせを見落とすことになります。


未知の変数の相互作用

ペアワイズ テストの成功または失敗の重要な要素は、入力変数の組み合わせが出力データにどのような影響を与えるかを理解することにあります。 2 つの異なるテスト済みアプリケーションにペアワイズ テストを適用すると、大幅に異なる結果が得られる可能性があります。アプリケーションによっては、出力データを生成するためにより少ない入力データを使用するものもあれば、より多くの入力データを使用するものもあります。


例として、3 つの入力変数 (X、Y、Z) と 3 つの可能な出力データ (1、2、3) を持つプログラムを考えてみましょう。矢印は、特定の結果を生成するためにどの変数が相互作用する必要があるかを示します。結果 1 を得るには、変数 Y と X が相互作用する必要があります。結果 2 を得るには、変数 Z と X が相互作用する必要があります。この用途では、ペアごとのテストを適用することが適切な選択であり、肯定的な結果が得られる可能性が高くなります。ただし、出力データが 3 つ以上の入力変数の相互作用から生じるシナリオがある場合、ペアワイズ テストでエラーを特定できない可能性が高くなります。単純にペアごとのテストを適用すると、テストされたアプリケーションの重大なエラーを見落とすリスクが高まります。


QA プロフェッショナルとして、これらのニュアンスを理解することが重要です。場合によっては理論的ではありますが、これらの洞察は、アプリの信頼性と堅牢性を確保する、表面を超えた総合的なテスト アプローチの必要性を強調しています。組み合わせテスト設計の複雑さを理解することで、QA 専門家はアプリの複雑なビジネス ロジックを効果的にテストし、高品質のソフトウェアをユーザーに提供できるようになります。