早几天产品上线,发现了一个bug,而这个bug之前是不存在的,也就是说是我修改了另一个功能的时候导致了原来正常的一个功能出现了问题。这个bug的 原因很简单,我有一个对象,在页面上会用到,而我现在需要把这个对象存到数据库,里面有一些信息是不需要的,为了避免存入过多的东西到数据库,我在存之前 就清空了这个对象里面的一些数据。我忘记了我是在操作同一个对象,我的这个清除操作同时影响到了这个对象在页面上的展示,其实这个问题不是技术问题,也不 是能力问题,只是因为人都会有一些失误或是不可能时时刻刻都保持细心。那么我们要怎么样去规避这样的问题。
如果没有单元测试,要规避这个问题,我想必需从以下几个方面着手:
1. code review,如果有另一个人去review你的代码,那么发现这种问题的机率会变大,但是以我的经验,review的人通常不会太仔细去看别人的代码,一般只能发现一些很明显的问题。
2. 加强回归测试,这也是有人的因素在里面的,通常回归测试的时候测试人员关心的主要是你修改的功能,其它的功能即使有问题他们也可能不会注意到,很容易被忽略过去,如果有自动化测试可能会好一点。
上面的方法都带着人的主观因素在里面,如果能在一开始写好相应的单元测试,一旦新的修改影响了旧有功能,那么测试一定跑不过,那么很容易就找出问题来了, 不过这里又有另一个问题,单元测试真的不是那么好写的,对开发人员的要求特别高,不过不去试着写就永远写不出好的代码来,为了避免这些bug,我们也应该 努力开始写好单元测试。
本文转自:http://www.spasvo.com/news/html/20131226150844.html