ポジティブテストとネガティブテストの例

⚡ スマートサマリー

ポジティブテストとネガティブテストを組み合わせることで、ソフトウェアが受け入れるべきものを受け入れ、拒否すべきでないものを拒否するかどうかを判断します。この記事では、両方のアプローチ、その背後にある技術、実例、そして欠陥の漏洩を最小限に抑えるための実践方法について解説します。

  • 陽性反応: 有効なデータのみを入力し、アプリケーションが仕様書に記載されているとおりに意図したフローを正確に完了することを確認してください。
  • 陰性検査: 無効なデータや極端なデータを入力し、アプリケーションがそれを拒否し、明確なエラーを表示し、安定した状態を維持することを確認してください。
  • 境界値分析: 許容範囲の端をテストし、さらにその範囲の1つ外側をテストすることで、オフバイワンの欠陥を迅速に発見できます。
  • 🧩 同値分割: 入力値を有効なグループと無効なグループに分割し、すべての値をテストするのではなく、各グループから1つの値をサンプリングする。
  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ 適用範囲に関するルール: 各要件につき、少なくとも2つのケース(肯定的なケースと否定的なケースをそれぞれ1つずつ)を記述し、テストされていない受入基準が出荷されないようにしてください。
  • 🛡️ セキュリティ上のメリット: ネガティブケースでは、ポジティブ実行では決して遭遇しないインジェクションの欠陥、期限切れトークン、未処理の例外などが明らかになる。
  • 🤖 自動化への適合性: 回帰値のための安定した正のフローを自動化し、回復力フィードバックのための負の検証チェックを自動化する。

ソフトウェアテストとは、ソフトウェアアプリケーションが期待どおりに動作しているかどうかを検証・確認するプロセスです。その目的は、欠陥を発見し、製品の品質を向上させることです。ソフトウェアテストには、ポジティブテストとネガティブテストという2つの方法があります。

この2つのアプローチは、正反対の問いに答えるものです。つまり、すべてが順調に進んでいるときにアプリケーションは正常に動作するのか、そして何らかの問題が発生したときにも安定性を維持できるのか、という問いです。

陽性検査とは何ですか?

陽性反応検査 これは、有効なデータセットを入力としてソフトウェアアプリケーションに与えることで実行されるテストの一種です。ソフトウェアアプリケーションが、正しい入力に対して期待どおりに動作するかどうかを確認します。

ポジティブテストは、ソフトウェアアプリケーションが期待どおりに動作するかどうかを確認するために実施されます。そのため、ハッピーパステストとも呼ばれます。

例えば、以下に示す数値入力ボックスを考えてみましょう。

陽性反応検査

アプリケーションには、数字のみを受け入れるテキスト ボックスがあります。システムは 99999 までの値の入力を受け入れますが、これ以外の値は受け入れません。ポジティブ テストを実行するには、有効な入力値を 0 から 99999 に設定し、システムが値を受け入れるかどうかを確認します。

ネガティブテストとは何ですか?

陰性検査 これは、無効なデータセットや不適切なデータセットを入力として与えることでソフトウェアアプリケーションに対して実行されるテスト方法です。このテストでは、ソフトウェアアプリケーションが、望ましくない、あるいは不適切なユーザー入力に対して期待どおりに動作するかどうかを確認します。

ネガティブテストの目的は、ソフトウェアアプリケーションがクラッシュせず、無効なデータ入力に対しても安定した動作を維持することを確認することです。そのため、エラーパステストまたは障害テストとも呼ばれます。

例えば、同じフィールドに数字の代わりに文字が入力される場合を考えてみましょう。

陰性検査

ネガティブ テストは、A ~ Z、または a ~ z の文字を入力することで実行できます。 ソフトウェア システムは値を受け入れるべきではありません。そうでない場合は、これらの無効なデータ入力に対してエラー メッセージをスローする必要があります。

どちらのタイプのテストにおいても、以下の点を考慮する必要があります。

  • 入力データ
  • 実行する必要があるアクション
  • 出力結果

陽性検査と陰性検査:主な違い

どちらのアプローチも同じ テストケース 構造。違いは、入力する内容と、合格結果が証明するものにある。

陽性反応検査 陰性検査
またとして知られています ハッピーパステスト エラーパスまたは障害テスト
入力が使用されました 有効で期待されるデータ 無効なデータ、極端なデータ、または予期しないデータ
目標 その機能が期待通りに動作することを確認してください。 機能が拒否すべきでないものを拒否していることを確認してください。
期待される結果 処理は正常に完了しました。 明確なエラーが表示されるが、システムは安定した状態を維持する。
エラー処理 焦点ではない 焦点全体
カバレッジ 狭く、仕様に準拠 幅広く、仕様の範囲外のあらゆるものを探求する
スキップした場合の典型的なリスク コア機能は壊れて出荷されます クラッシュやセキュリティ上の脆弱性が製品版にまで影響を及ぼす

陽性テストの失敗は機能障害を示します。陰性テストの失敗はガードの欠落を示し、ユーザーが発見した後の修復コストははるかに高くなります。

陽性検査と陰性検査に使用される検査技術

実際には、2つの古典的な入力設計手法によって、同じ要件から肯定的なケースと否定的なケースの両方が生成されます。

  • 境界値分析
  • 等価分割

境界値分析

これは、境界値を含むようにテスト ケースを設計するソフトウェア テスト手法の XNUMX つです。 入力データが境界値制限内で使用される場合、それはポジティブ テストと言われます。 入力データが境界値制限の外側で選択された場合、それはネガティブ テストと言われます。

例えば、以下に示す許容範囲をご覧ください。

陽性検査と陰性検査

システムは 0 から 10 までの数値を受け入れることができます。その他の数値はすべて無効な値です。この手法では、境界値 -1,0,1、9,10,11、XNUMX および XNUMX、XNUMX、XNUMX がテストされます。

等価分割

これは ソフトウェアテスト 入力データを多数のパーティションに分割する技術。 各パーティションの値は少なくとも XNUMX 回テストする必要があります。 有効な値を持つパーティションはポジティブ テストに使用されます。 一方、無効な値を持つパーティションはネガティブ テストに使用されます。

例えば、下に示した2つの分割図を調べてみてください。

等価分割

数値 0 から 10 は 2 つ (または 3 つ) のパーティションに分割できます。この例では、-10 から -1 と 0 から 10 の 2 つのパーティションがあります。各パーティションからサンプル値 (5 と -5) を取得してシナリオをテストできます。 同値分割と境界値解析 より多くの例題については、レッスンをご覧ください。

陽性検査と陰性検査の実施方法

以下の手順は、1つの要件を、肯定的なケースと否定的なケースのバランスの取れたセットに変換するものです。

  1. 制限に関する要件を読んでください。 受け入れられるフォーマット、範囲、必須項目をすべてメモしてください。仕様で許可されているものはすべて肯定的なケースとなり、許可されていないものはすべて否定的なケースとなります。
  2. まず肯定的なケースを書きなさい。 有効なデータを提供し、アクションを実行し、期待される成功結果を基準値として記録します。
  3. 同じ極限値から否定的な場合を導き出す。 境界値分析と同値分割を使用して、空白フィールド、誤ったデータ型、範囲外の数値を生成します。
  4. 敵対的な入力を追加する。 含める SQLインジェクション 文字列、期限切れのトークン、不正な形式のAPIペイロードなど セキュリティテスト 弱点が早期に明らかになる。
  5. 非機能チェックにも適用範囲を拡大する。 A 負荷試験 サポートされるユーザー数は正の値ですが、 ストレステスト その限界を超えると、対応する否定的なケースが存在する。
  6. 各事件の審理場所を選択してください。 ネガティブなケースを排除する 煙と正気のテストこれらは高速な正のゲートであり、機能的に実行され、 回帰試験 サイクル。

ATMでの現金引き出しは、両者の照合方法を示しています。正しい暗証番号と有効な金額を入力すると、現金とレシートが出てきます。間違った暗証番号を入力すると、拒否メッセージが表示され、カードがブロックされます。

バランスを適切に保つためのベストプラクティス

  • 開発開始前に、要件ごとに少なくとも2つのケース(肯定的なケースと否定的なケース)を作成してください。
  • 影響度に基づいてネガティブなケースを優先的に処理し、例えば、データ注入や支払いの失敗は、見た目上の入力エラーよりも優先的に処理します。
  • エラーメッセージ自体を明確に示してください。単に操作が失敗したことを示すだけでなく、曖昧なメッセージも欠陥とみなされます。
  • スペースを空けておく 探索的テスト調査結果をログに記録します 欠陥管理プロセス.

⚠️ 警告: 稼働中の本番環境に対して、決してネガティブテストを実行しないでください。ネガティブテストは意図的に障害を発生させるために存在し、意図的なクラッシュは実際のユーザーとデータに影響を与えます。

よくあるご質問

陰性検査 アプリケーションが不正な入力を適切に拒否するかどうかを確認します。破壊的テストはさらに踏み込み、トランザクションの途中でデータベース接続を強制終了するなど、意図的にシステムを障害状態に追い込み、極端な状況下での復旧動作と回復力を測定します。

いいえ。 煙と正気のテスト ポジティブチェックのみを使用してください。ポジティブチェックは、新しいビルドに対する迅速な品質ゲートとして機能するからです。ネガティブチェックは意図的にエラーを発生させるため、チームはより深い機能サイクルの中で実行します。

はい。AIジェネレーターは要件やユーザーストーリーを読み込み、境界値を含む有効な入力セットと無効な入力セットを提案します。生成されたネガティブケースは、規制上の閾値や通貨の丸めルールといったドメインの制限を見落とすことが多いため、テスターがそれらをレビューする必要があります。

はい。AI機能には、プロンプトの挿入、不正なモデル応答、タイムアウト、範囲外の質問などに対する否定的なケースが必要です。出力は実行ごとに異なるため、アサーションでは、固定された期待文字列ではなく、応答形式、安全フィルタ、フォールバック動作をチェックする必要があります。

Selenium ブラウザのフィールド検証を駆動します。 Postman 無効な API ペイロードとステータス コードを対象とし、 JMeter 負荷の高いシナリオにおいて、サポートされる制限を超える負荷をかける可能性があります。検証するレイヤーに合ったツールを選択してください。