写代码这事儿,从来都是需要缜密的逻辑推敲的。理想的状况是,能把写的每一个功能函数的调用过程,像放电影的一样,能在脑海里放一遍。一般而言,在一个小型的项目里,当总体的代码量不大时,这种情况是可以做到的。但到项目较大,如:代码量在10w行以上,函数的调用较复杂时,要做到对每一个运行流程都能心里有数,恐怕是比较困难的了。所以,这时测试工作就应运而生了。
通常,我们都过分相信和依赖测试了,本质上而言,相信和依赖测试并没有错,但问题在于,我们所作的测试往往都是不充分的。比如:只作了简要的正常的功能验证,而没有作异常测试。或者,哪怕是正常的功能验证也不能做到充分,尤其是一些较复杂的项目,一个功能函数的修改,往往会牵涉到多个功能模块,而在实际的项目开发中,往往是一个人负责一个模块,自己做测试时,常常只作自己哪块的功能验证,这样难保所有所之相关的模块,在代码修改后其功能都能正常如初。
写到这里,我也不由自主的会想起单元测试来,在以前的项目中用过cppUnit自动化测试框架,那是一个有200来号人参与项目,在国内而言算是较大的了,那会也是刚接触UT,只是按照老大们布置的去做,也没有就它的作用、目的等问题,做过多细致的考虑。如今随着项目经验的丰富,对UT的看法和感触当然就不一样了!用一句简要的话来概括就是:UT中的回归测试功能,对一个较复杂的项目而言,太重要了。尤其是要求高稳定和高可靠的服务器程序,更是如此!
在后续的工作计划里,我会尝试学习和应用一下朋友推荐的gtest,到时有了项目实战的应用心得,再把它一一记录下来吧!