1

ホワイトボックスとブラックボックスのテストについて読んでいます。

間違っていない場合:

ホワイトボックスはソフトウェア プログラムの実装をテストしますが、ブラックボックスは入力と出力をテストします。

両方のケースの簡単なコードの例を教えてください。

前もって感謝します。

では、ここのコードはブラックボックス テストですか?

  class Schalter
  {
     private boolean
     {
       private boolean _istAn;
       public Schalter(boolean anfangsAn)
       {
          _istAn = anfangsAn;        
       }       
       public boolean istAn()
       {
          return _istAn;
       }   
       public void umschalten()
       {
         _istAn = !_istAn;
       }
  }
4

5 に答える 5

9

ブラックボックス -> プログラムに与えた入力に対して正しい出力が得られているかどうかを確認しているだけです。

合計を求めるために 2 桁の数字を入力するよう求めるプロンプトが表示されたとします。

2 つの数字を入力: 2 5 出力: 2 + 5 = 7

ブラックボックスについてはこれですべてです。


それがどのように起こっているかを確認するためにチェックしたいホワイトボックス。

次のような通常のことを行うことができます

int adder(int firstNum, int secondNum)
{ 
    return firstNum + secondNum;
}

これは、次のように言うよりも効率的です。

int adder(int firstNum, int secondNum)
{
    int temp;
    for(int i = 0; i < (firstNum + secondNum + 1); i++)
        temp = i;
    return temp;
}

ホワイトボックス テストでは、コードを見て、どちらがより効率的で読みやすいかを判断します。明らかに最初のものは次のとおりです。

  1. コードはよりシンプルで理解しやすい
  2. 最初のものは、答えを見つけるためのループを含まないため、最初のものよりも多くの処理時間がかかります
  3. 1 つ目は、必要のない余分な変数を作成しません。これは、データを追跡するために必要なメモリが少なくなることを意味します。

これは単純で恣意的な例ですが、大規模なプロジェクトに入ると、単体テストを実行してコードの小さなセグメントが機能するかどうかを判断するときに多くのホワイトボックス テストを実行し、通常は開始時にブラック ボックス テストを実行します。コードの小さなセグメントを大きなプロジェクトに統合して、特定の入力に対して正しい出力がまだ得られているかどうかを確認します。

別の見方をすると、ブラックボックス テストを使用して、悪い出力が得られているかどうかを確認できます。そうであれば、ホワイトボックス テストを行って、コードで何が間違っているかを確認できます。

于 2014-02-28T16:56:39.660 に答える
4

ブラックボックス テストは、プログラムが入力をどのように操作するかを気にしないテスト方法です。出力が指定された入力に対して有効かどうかを確認するだけです。

ホワイトボックス テストは、プログラムが出力だけでなく入力を操作する方法に関心がある場合のテスト方法です。

一例として、アルゴリズムをソートするためのテストを書いている場合が挙げられます。ブラックボックス テストでは、出力が期待どおりに並べ替えられているかどうかを確認するだけです。ホワイトボックス テストでは、ソート アルゴリズムの実装に依存するため、ソートが安定しているかどうかを確認する場合があります。たとえば、Merge Sort は安定していますが、Quicksort の典型的なインプレース バージョンはそうではありません (ただし、安定したバージョンは存在します)。

于 2014-02-28T16:19:10.607 に答える
1

ホワイト ボックス テストは、コードの内部ロジックと構造の詳細な調査です。ホワイト ボックス テストは、ガラス テストまたはオープン ボックス テストとも呼ばれます。アプリケーションでホワイト ボックス テストを実行するには、テスターはコードの内部動作に関する知識を持っている必要があります。

http://www.tutorialspoint.com/software_testing/testing_methods.htmから引用

于 2014-06-13T12:30:54.953 に答える