一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:
  1输出的出错信息难以理解;
  2记录的错误与实际遇到的错误不相符;
  3在程序自定义的出错处理段运行之前,系统已介入;
  4异常处理不当;
  5错误陈述中未能提供足够的定位出错信息。
  边界条件测试是单元测试中后,也是重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。
  单元测试过程
  一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。
  应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub),下图显示了一般单元测试的环境。驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”打印“进入-退出”消息。
  驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块不能完成某些模块的测试任务,这些模块的单元测试只能采用下面讨论的综合测试方法。
  提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。 
  关于驱动函数和桩函数
  测试这样一个函数:
  def func(a,b)
  return a+b
  要测试它,得执行它. 所以要写程序:
  a = 1
  b = 2
  result = func(a,b)
  这三行代码的目的是执行被测的函数, 称之为驱动.
  看另外一个函数:
  def func2(a,b):
  anotherFunc(a,b)
  这个函数调用了另外一个函数(anotherFunc), 没有anotherFunc的话, 这个函数是执行不了的.
  所以要自己写一个anotherFunc.
  def anotherFunc(a,b):
  print a+b
  这个是桩函数 ,现在func2可以测了.
  hqy得个人理解:
  桩函数是一个被测试模块中包含了很多附属模块,当被测模块被作为一个单独的模块测试时,附属模块需要用桩函数来代替,从而使被测模块可以模拟真实的环境
  驱动函数是测试单元模块时(或者从底层开始往上测试时),因为单元测试模块可能没有接受界面,从而需要编制一个驱动程序来测试这个单元模块