单元测试 = 白盒测试? 这是很多人的想法. 一听到白盒测试, 认为他是单元测试. 或者认为单元测试时, 是要用白盒测试的方法来进行.
  事情是这样吗? 让我们继续看下去:
  当我们要测试这个程序时
  Stack push(Stack s, int key)
  你会怎么测试呢? 你可能会考虑以下几种状况
  (1) 空的 stack, 第一次 push
  (2) 不是空的 stack, 然后 push 东西
  (3) stack 是满的, push 个东西看会不会有问题
  (4) 不是空的 stack, 然后 push 一个字符
  (5) 不是空的 stack, 然后 push 一个指标
  你所做的大多是根据程序思考逻辑, 或者是根据输入的值域来做参考, 来建立测试个案.
  这些方式其实都是黑盒测试(用到了 use case testing 和 Equivalence Class Testing等方法, 可自行去网络上找详细介绍), 也是不管程序内部如何被实作. 只根据行为和输入值域来开立测试.
  那真正的白盒测试会是怎么进行呢?
  基本上, 可以测试的状况有无限多种. 而白盒测试是要根据程序内容来决定要怎样挑小可测试的集合.
  那程序内有甚么东西, 可以让我们来做挑选的判断呢? 一般常见的是根据程控逻辑. 例如: 是否经过所有的叙述(statement); 是否经过程序所有分支等等.
  如果以经过所有的叙述为例, 对于下面的程序
  01: Stack push(Stack s, int key)
  02: {
  03:     if(isFull(s)){
  04:        printf("Stack is full !! ");
  05:     }else{
  06:         s.top = s.top + 1;
  07:         s.element[s.top] = key;
  08:         printf("Success push %d in the Stack ", key);
  09:     }
  10:     return s;
  11: }