什么是单元测试?据吾所了解,就是编写一套测试一个类的代码以验证类的正确,可以独立运行。然后很多管理者跟着起哄,要搞单元测试。实际结果如何?以吾经历这么多年,吾明确回答:
吾木有看到一个如理想中的单元测试。
在永中的时候,从美国请了个人来指导。实际上最后单元测试变成了集成测试。为什么呢?原因很简单,这么庞大的软件,互相依赖,想单独测试一个类根本不可能。当时负责研发的总监不满意,吾就拿这个反问,他总是回答“有办法”,自己没有方案,也找不到人有方案,也不知道哪里有方案。吾负责解析计算系统的时候,独立搞了十几个小时的一套测试案例,其实也是集成测试。
后来去了中兴搞SIP通讯(终端),当时的组长要求搞单元测试。几个人(应该说水平都很好)一起研究了很久,找了一些软件,也找了一些解决办法,搞了一个所谓的单元测试。实际上也没什么用,也照样遇到类依赖问题。当时唯一可以称得上符合要求的是吾负责的一个测试案例。而这个测试安全之所以达标,并不是因为吾水平特别高,而是因为这个类读取一个配置文件,可以不依赖于其他类。
据此,一旦有人要求学术上的单元测试,吾就指责瞎指挥。有本事汝搞好啊,或者汝找到一个达标的测试案例啊。
那么,是不是说不搞单元测试?也不是。吾想法是:
每个功能完成时,程序员要提交一个测试报告。为什么呢?因为有很多独特的细节,只有程序员自己知道,甚至程序员也不知道。
为集成测试,增加一部分案例。
使用自动化(软件机器人),进行集成测试。