单元测试——如何确定代码是否符合功能需求?
很多小伙伴的的固有理解是——我学的是编程开发,不是软件测试,我只需要做好开发就可以了,代码测试并不由我负责。实际上,作为开发者,他们要做的并不仅仅是开发,还要做一部分的测试。这部分测试是基于代码单元进行测试的,所以又叫单元测试。接下来这篇文章,小编就将以单元测试是什么,单元测试的目的和意义,以及常见的单元测试工具与小伙伴们进行讨论。
什么是单元测试
首先,要确定什么是单元。在软件开发项目中,一般把最简单的功能模块称为单元(另一种说法是最小的可测代码模块),简单的理解,比如C语言中的函数,java中的方法,都是单元。单元测试,就是测试这些单元是否满足需求。
单元测试的目的和意义
单元测试的目的很简单,他的动机主要就两点:保护或验证实现功能;保护已经实现的功能不被破坏。简单的来说就是保证单元的功能正常。
虽然单元测试的目的很简单,意义却相当重要。单元测试作为所有测试中最早的测试(用例和需求审查在程序开发之前,不计入讨论),单元测试的质量直接影响后面测试的质量和工作量。另外,单元测试作为最早介入开发的测试,他对bug的预防具有重要意义。
谁来负责单元测试
单元测试应该由开发来负责,但由于国内存在重开发轻测试的情况(开发工作量更高)。也可以采用测试协助开发做单元测试。
测试工具的引入
单元测试只不过是一个测试名称,而不是具体的测试方法,很多开发不一定会使用正规的测试工具。但实际上,测试工具的引入对单元测试的效率提升有着很大的帮助。
没有引入测试工具前,一般单元测试使用main方法来运行代码,这种最原始的方法有着最低的效率。比如新开发了一个方法,要对他进行测试,需要设计好几个测试用例,这些测试用例的代码量随着测试用例的增多,将远超功能代码;另外,每次测试,都要采用肉眼观察的方式来判断测试是否通过,测试效率低下。
引入测试工具后,以上的问题都解决了:使用测试工具,它将自动化调用功能代码,最终要写的测试代码量将控制到一个比较小的水平;测试工具一般都有断言验证功能,使用这个功能可以自动判断测试是否通过(只要提前设置条件),为批量自动化测试和生成测试报告提供了很大帮助。
常见单元测试工具(框架)
这方面最出名的应该是xUnit家族了。java最出名的单元测试框架为JUnit,.Net也有对应的NUnit,C/C++可以使用CPPUnit,PHP也有对应的PHPUnit,当下最火的python对应的是unittest(原名PyUnit,现已被纳入标准python的一个模块)。
小结
接下来要提到的极限编程,他的核心思想之一就是测试驱动开发,实现方式大概就是:先确定需求,然后根据需求写测试用例和对应的测试代码,最后写功能模块。在写功能模块的时候要运行到测试代码完全通过
单元测试作为测试里面的最基础的测试,它的重要性不言而喻。而掌握对应的语言的单元测试工具的使用也作为学习该语言必不可少的一项技能。在一些比较极端的开发团队中甚至对单元测试看得相当重要(以极限编程思想作为指导的敏捷开发团队)。所以掌握单元测试工具是每个合格程序员的必修课,各位小伙伴赶紧学起来吧!
点击junit教程前往Junit教程学习!