白盒和黑盒测试

syi*_*nop 1 java testing white-box-testing black-box-testing

我一直在阅读白盒和黑盒测试.

如果我没错:

Whitebox测试软件程序的实现,但黑盒测试输入和输出.

有人可以给我一个两个案例的简单代码示例吗?

先感谢您.

那么,这里的代码是黑盒测试吗?

  class Schalter
  {
     private boolean
     {
       private boolean _istAn;
       public Schalter(boolean anfangsAn)
       {
          _istAn = anfangsAn;        
       }       
       public boolean istAn()
       {
          return _istAn;
       }   
       public void umschalten()
       {
         _istAn = !_istAn;
       }
  }
Run Code Online (Sandbox Code Playgroud)

use*_*304 8

Blackbox - >你真的只是检查你输入的程序输入是否正确.

假设您有一个提示,要求您输入2位数来获取数字的总和.

输入2个数字:2 5输出:2 + 5 = 7

这就是真正的黑盒子.


你想要查看白盒子,看看它是如何发生的.

你可以做正常的事情

int adder(int firstNum, int secondNum)
{ 
    return firstNum + secondNum;
}
Run Code Online (Sandbox Code Playgroud)

这比说的更有效:

int adder(int firstNum, int secondNum)
{
    int temp;
    for(int i = 0; i < (firstNum + secondNum + 1); i++)
        temp = i;
    return temp;
}
Run Code Online (Sandbox Code Playgroud)

在白盒测试中,您将查看代码并找出哪些代码更高效和/或更易于阅读.显然,第一个是:

  1. 代码更简单,更容易理解
  2. 第一个不涉及循环以找到答案,这比第一个占用更多的处理时间
  3. 第一个不会创建不需要的额外变量.这意味着需要更少的内存来跟踪数据.

这是一个简单而随意的例子,但是当你进入更大的项目时,你会进行大量的白盒测试,当你进行单元测试以确定代码的较小部分是否有效时,你通常会在启动时进行黑盒测试将代码的较小部分集成到较大的项目中,以检查是否仍然获得给定输入的正确输出.

另一种看待它的方法是你可以使用黑盒测试来查看你是否输出错误,如果是这样,那么你可以进入并进行白盒测试,看看你的代码中出错了.


Viv*_*ath 6

黑盒测试是一种不关心程序如何操作输入的测试方法;您只是检查输出对于指定的输入是否有效。

当您关心程序如何操作输入输出时,白盒测试是一种测试方法。

我想一个例子是,如果您正在编写排序算法的测试。黑盒测试只是检查输出是否按照您的预期进行排序。白盒测试可能会检查排序是否稳定,因为这取决于排序算法的实现。例如,归并排序是稳定的,而快速排序的典型就地版本则不稳定(尽管稳定版本确实存在)。