近遇到一件烦心的事情。在这样冷的冬天的某个早上6点多,被门铃声吵醒,披了件衣服出去开门,发现一个阿姨站在门口,说是我们家楼下的,然后很急促的说发现他们家漏水了。后来弄清楚了情况,是他们家小卧室的房顶渗水,甚至有少量的水滴下来,自然怀疑是我们家的水管问题。她家小孩在上高中了,难怪每天早上起这么早,也难怪之前都没怎么见过她。

  他们家的小卧上面是我们家的小卧、厨房和餐厅,从外面看不出有什么异常,不过从逻辑上讲多半应该是我们家的问题,因为我们家更上面是房顶了,而且漏水的地方在屋顶的比较中央的地方,应该也不太可能是隔壁家的问题。大概因为QA做久了,第一感觉是一个隐藏的bug被发现了,或者说在某种条件下触发了。

  好吧,既然是一个bug,那来分析一下。

  后果和对用户的影响自然不用多说了,因为当天把物业喊了过来,聊了半天。

  首先大概能确认是我们家的厨房和餐厅这一块,或者说这个模块,出了问题。因为和水有关,进一步的分析,有几个方面,进来的自来水,还有是挂在厨房的热水器,烧好的热水会分流到洗碗池,并且通过墙内和地下的暗管,经过餐厅的地下,通到卫生间淋浴的地方。结合近的活动来看,漏水的前,用过淋浴,所以可能和这一块有关,当然,冷水管也是要通过去的。所以还不能断定是那一条管路的漏水导致的,在目前的情况下也只能用黑盒的方法来分析了。

  其实更精确的debug工具也是有的,物业的人提到说以前小区自来水管道出问题的时候,自来水公司的人让了检测是那一段出了问题,有听诊的工具,通过漏水的声音可以找到漏水的地方,不过据说这个方法比较昂贵,针对个人用户家里的问题他们也不一定肯上门。这个倒是很有趣的,我忽然在想有没有别的定位方法。比如红外的方法,因为有可能漏的是热水,所以在冬天里,漏出水的地方温度应该不同;或者可以在水里添加一个染色或者轻微放射性的东西,这样可以方便定位了。不过后来想想都不太靠谱,人家修桥铺路等工程估计是有可能用这样的方法。不过说来,遇到问题的时候,debug的工具和方法还是很重要的。

  在定位问题的时候,还发现一个问题:没有文档。因为房子有些年头了,而且是几年前从别人那里买的二手房,没有什么装修图纸之类的东西。不得已之下,只有去骚扰前房主了,人家还算耐心的讲了一些之前他装修的时候怎么弄的,大概是先从墙里面垂直落地,然后沿着墙走一段,然后走直线过去。不过“走一段”这种描述也是比较含糊的,也不知道一段有多长。忽然一下子能体会那些做sustain的同事了,把一些老的产品或者feature接过来,出了问题也没有文档可以查,当然,看相关的code也是一种手段,不过很难再知道一些设计的考虑和意图,特别是遇到一些奇怪的代码,而我这边只能猜了。

  这里其实还有一个问题,那是如果这是个bug,为什么现在才报出来?是的,我也很困惑这个问题,像那天一大早被吵醒一样,也觉得很无辜,因为住了几年,这样用都没有出那样的问题,怎么突然某出问题了,老化应该也不至于这么快和突然。后来才想起另一件事情,前几天因为装管道煤气,燃气公司的人在厨房靠近热水器的地方钻了一个很大的洞,穿透了墙,为了以后管道可以进来。于是我们猜测很有可能是在钻孔的时候把墙里面水管接头的地方给震坏了,导致了漏水。当然,这也只是猜测。

  既然是bug,还有一个属性是能不能重现,重现也还是一种debug的方法,虽然有时候很麻烦。因为怀疑是热水器导致的,那不用看看,只能到别人家去洗澡了,够惨的。然后楼下的阿姨说他们家的屋顶慢慢干了,这段时间,冷水还是照用,所以看起来和冷水管道没有关系。然后某天又用了一次热水器,后来发现又渗水了。所以看起来基本上可以大致定位问题了。

  因为这个问题,还到网上搜索了一下,发现漏水还是相当普遍的问题,看了很多的帖子,也有很多的纠纷,所以因为及时的采取了措施和态度诚恳,没有和楼下闹僵,阿姨虽然比较唠叨,但是人也还好。后来和一个武汉的同学聊天,说他们家也漏,而且是被漏的,和楼上的扯了很久也没有很好的解决。他们家的房子是05年之后的高层,很新的房子了,而且据说某知名开发商在当地的房子一样漏水。此处略去抨击和bs开发商的话若干。聊到这些,我想到另一个问题,那是关于质量的一个特性,房子也好,软件也好,或者别的什么,质量这个东西都是很难以快速和全面的判定的。很多的质量问题只有在正式的使用,甚至用了很久才会暴露出来。这里且不谈什么道德良心的问题,从另一个方面,作为测试人员,有时候也会面临这样的一种困境,因为对测试的重视程度很多时候是和对质量的重视程度直接相关的,而差的质量的后果和影响有些时候要等上一段时间才能发现,而这个世界上绝不缺乏急功近利的人。但是如果一个企业或者品牌要长久的发展,恐怕不能用懈怠的方法,关于这一块,近也又不少的感受和思考,后面再写。

  好吧,我们还是拉回来说这个bug。既然后果,重现的步骤,以及可能的原因都清楚了。那么还又一个问题是如何修。

  既然要修不能重蹈覆辙。因为以前的solution大的问题是可测性和可维护性太差,很多都不可见。所有决定找一个可测性和可维护性都比较好的方案,那是再装一个走明管的电热水器。其实也不是完美的方案,但是在有些方面又改进,至少出了问题很容易定位和修正。