单元测试的边界

这里说的边界不是说测试中常常看到的边界值,而是说明哪些事情应该是一个单元测试应该做的,哪些是单元测试不应该做的。
如果“单元测试”里面出现了以下的情况,那么它就不是一个单元测试应该做的

  • 需要跟数据库打交道
  • 访问了网络
  • 跟文件系统有交互
  • 它不能像你其他的单元测试那样运行
  • 你必须要经过一些特殊的配置才能使它运行起来

但是不是说如果测试代码里面包含以上行为就不是一个好的测试;相反,这些行为对于测试来说都是非常有意义的。但是,我们需要把这些测试和“真正的”单元测试区分开来,那些真正的单元测试可以“独立”地运行,而不会依赖于其他外部的组件。这样的单元测试才是真正的对被测软件的测试,而不是对数据库是否连同并且运行正常,或者是网络环境是否良好的检测。这就是所谓的“正交性”。

这样做的好处是,单元测试不需要访问数据库,这样测试运行的速度会更加快;使得单元测试更加健壮,因为它与其他系统之间的耦合度降低了!

2 thoughts on “单元测试的边界”

  1. 你说与数据打交道,不是单元测试该做的事情。

    我有个疑问:如果我要测试一个插入的方法,执行测试后,势必要写记录到数据库中。这种情况下,怎么避免与数据库打交道了?

  2. 我个人认为,如果和数据库打交道,那么不是严格的单元测试,但是依然可以用单元测试的方法,单元测试的框架来做。其实我觉得,只要有脑子里面有这样的区分概念就可以了。我是希望尽可能地做到被测试的代码能与其他系统有较好的隔离。但是也不是要说如果不是严格的单元测试,就要怎么怎么地了。
    就好像我们都知道QA和Tester是不一样的,但是在很多时候我们对于这些称呼都是混着的,但是我们心中还是知道这两者的区别的嘛 :)
    谢谢关注。

Leave a Reply

Your email address will not be published. Required fields are marked *