代码改变世界

认识单元测试

2018-06-17 14:29  userrrr  阅读(240)  评论(0编辑  收藏  举报

 

  单元测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,JAVA单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

  在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在像C++这样的面向对象的语言中, 要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型地划分为一个菜单或显示界面。

经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review),静态分析(Static analysis)和动态分析(Dynamic analysis)。静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。

 

 

 那我们应该怎样使用单元测试?

  单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为,从而做出调整,提高代码的质量。

先编写产品函数的框架,然后编写测试函数,针对产品函数的功能编写测试用例,然后编写产品函数的代码,每写一个功能点都运行测试,随时补充测试用例。所谓先编写产品函数的框架,是指先编写函数空的实现,有返回值的直接返回一个合适值,编译通过后再编写测试代码,这时,函数名、参数表、返回类型都应该确定下来了,所编写的测试代码以后需修改的可能性比较小。

在实践工作中,进行了完整计划的单元测试和编写实际的代码所花费的精力大致上是相同的。一旦完成了这些单元测试工作,很多BUG将被纠正,开发人员能够进行更高效的系统集成工作。

在java中可以使用JUnit来实现单元测试;如上述所言,需要针对已经构建的函数框架,对需要测试的函数编写对应的代码,然后Run as JUnit test,检测程序运行的结果是否与预想的结果相同。

 

 

 

  单元测试的好处是显而易见的,它可以在不影响程序的本身的情况下对程序的正确性做出选择,并且并不仅限于测试整个程序结果的正确性,它可以逐个检测程序中的单个函数的正确性,让我们对自己所编写的程序有更深的了解,并且可以非常清晰的让我们看到程序的错误出现在哪儿,又应该从哪里进行修改。