1

私は試験を受けており、この質問に対する答えを見つけようとしていますが、これまでのところ成功していません。質問は:

例を挙げてください。ホワイト ボックス テストではすべて問題ないと表示されますが、ブラック ボックス テストではエラーがあると表示されます。また、ブラック ボックス テストの例ではすべて問題ないと表示されますが、ホワイト ボックス テストではエラーがあると表示されます。

4

1 に答える 1

2

「ブラック ボックス テスト」とは、ある種の統合テスト (つまり、パブリックに表示される UI のみを使用する) を意味し、「ホワイト ボックス テスト」とは、ある種の単体テスト (つまり、技術内部を公開する) を意味すると仮定します。 :

10ユーザーに表示される結果が請求書などの計算であると予想されるシナリオを考えてみましょう。
これは統合テストでは問題なく機能しますが、単体テストを実行すると、取得を担当する関数10が実際に返され9ます!
これが発生する理由は、統合テストが単体テストよりも多くのコードを実行しているためです。たとえば、次のようにします。

def _function_responsible_for_10
   return 9
end

def output_to_user
  value = _function_responsible_for_10()
  return value + 1
end

return value + 1?を参照してください。これにより、正しい出力が得られますが、間違った方法で得られます。これはたまたまfunction_responsible_for_10このシナリオでのみ機能しますが、後で依存するコードを追加(または変更output_to_user) すると、突然異なる (予期しない) 結果が得られます。さらに悪いことに、_function_responsible_for_10ある時点で を正しく返すように修正することもできますが10、実際にはこのコードが壊れてしまいます!

この例は単純化されており、これは発生する可能性のある問題の1 つにすぎませんが、正しい方向に考えるようになるはずです :-) 他の (おそらくもっと良い!) 例を自分で考えることをお勧めします。

于 2015-01-02T17:01:31.317 に答える