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

ソフトウェアテストとは、ソフトウェアアプリケーションが期待どおりに動作しているかどうかを検証・確認するプロセスです。その目的は、欠陥を発見し、製品の品質を向上させることです。ソフトウェアテストには、ポジティブテストとネガティブテストという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つの要件を、肯定的なケースと否定的なケースのバランスの取れたセットに変換するものです。
- 制限に関する要件を読んでください。 受け入れられるフォーマット、範囲、必須項目をすべてメモしてください。仕様で許可されているものはすべて肯定的なケースとなり、許可されていないものはすべて否定的なケースとなります。
- まず肯定的なケースを書きなさい。 有効なデータを提供し、アクションを実行し、期待される成功結果を基準値として記録します。
- 同じ極限値から否定的な場合を導き出す。 境界値分析と同値分割を使用して、空白フィールド、誤ったデータ型、範囲外の数値を生成します。
- 敵対的な入力を追加する。 含める SQLインジェクション 文字列、期限切れのトークン、不正な形式のAPIペイロードなど セキュリティテスト 弱点が早期に明らかになる。
- 非機能チェックにも適用範囲を拡大する。 A 負荷試験 サポートされるユーザー数は正の値ですが、 ストレステスト その限界を超えると、対応する否定的なケースが存在する。
- 各事件の審理場所を選択してください。 ネガティブなケースを排除する 煙と正気のテストこれらは高速な正のゲートであり、機能的に実行され、 回帰試験 サイクル。
ATMでの現金引き出しは、両者の照合方法を示しています。正しい暗証番号と有効な金額を入力すると、現金とレシートが出てきます。間違った暗証番号を入力すると、拒否メッセージが表示され、カードがブロックされます。
バランスを適切に保つためのベストプラクティス
- 開発開始前に、要件ごとに少なくとも2つのケース(肯定的なケースと否定的なケース)を作成してください。
- 影響度に基づいてネガティブなケースを優先的に処理し、例えば、データ注入や支払いの失敗は、見た目上の入力エラーよりも優先的に処理します。
- エラーメッセージ自体を明確に示してください。単に操作が失敗したことを示すだけでなく、曖昧なメッセージも欠陥とみなされます。
- スペースを空けておく 探索的テスト調査結果をログに記録します 欠陥管理プロセス.
⚠️ 警告: 稼働中の本番環境に対して、決してネガティブテストを実行しないでください。ネガティブテストは意図的に障害を発生させるために存在し、意図的なクラッシュは実際のユーザーとデータに影響を与えます。

.png)
.png)
.png)
.png)