单元测试(一)

前言:单元测试对于开发来说非常有作用,是未来重构代码的一个保障。最近工作中有对一个逻辑、测试都比较复杂的代码进行了单元测试,也想了解“测试驱动开发”(TDD:Test-Driven Development),所以现在来总结一下。转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9419037.html

一、单元测试

定义:

  单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证(在面向对象中一般指方法)。

作用:

  减少bug:对于不好用于页面测试的模块,能写单测就再好不过了。如果单测通过,说明在当前测试用例下该方法没问题,如果单测通不过,要么是代码有bug,要么是测试用例写的不对。

  方便重构:所以,这非常方便以后的工作,比如修改代码后或者系统上线前跑一遍单元测试,如果通过,说明我们的修改不会对单测的模块造成影响,如果测试不通过,说明我们的修改与单测的模块产生了影响,接下来就是要么修改代码,要么修改测试用例。这种以测试为驱动的开发模式最大的好处就是确保一个程序模块的行为符合我们设计的测试用例。在将来修改的时候,可以极大程度地保证该模块行为仍然是正确的。

  优化代码:有一种说法,不好写单测的方法都是不太好的方法,因为这样的方法一般都依赖了太多其他的东西,不是特别的独立且小。所以在编写单测的过程中,如果发现单测代码非常难写,那么就要反思代码的合理性,进而推进代码设计的优化,形成正向循环。

为什么要些单元测试?

    目的:

        1. 提高软件质量

        2. 减少bug

        3. 减少重复的工作

        4. 安全的重构已有的代码

        5. 让开发者对程序稳定性更有信心

    重要性:

        1. 运行单元测试是为了保证代码的行为和我们期望的结果一致。

        2. 写单元测试会增加代码工作量,同时也节约了bug修复时间。

        3. 如果没有写单元测试,没有发现bug的情况下,程序在测试人员测试的时候才发现问题或者在线上环境(正式环境)用户使用才发现问题,在去修复bug。开发会花大量的精力去修复bug和走部署流程,测试也会花大量的时间去做了重复的测试。很不划算。

        4. 在线上某些场景下bug导致大量的数据丢失,需要花很大精力去修复数据,或者根本没办修复数据导致严重的后果。

 哪些方法需要写单测?

  并不是所有方法都需要写单测的,只需要编写业务复杂、逻辑复杂、核心功能、使用广泛等方法的单测。

总结:

  单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。

  单元测试的测试用例要覆盖常用的输入组合、边界条件和异常。

  单元测试代码要非常简单,如果测试代码太复杂,那么测试代码本身就可能有bug。

  单元测试通过了并不意味着程序就没有bug了,但是不通过程序肯定有bug。

  对于程序员来说,如果养成了对自己写的代码进行单元测试的习惯,不但可以写出高质量的代码,而且还能提高编程水平。

  在《快速软件开发》一书中已引用了大量的研究数据指出:最后才修改一个 bug 的代价是在 bug 产生时修改它的代价的10倍。

 

猜你喜欢

转载自www.cnblogs.com/yuxiaole/p/9419037.html