第五届B'QConf小记

上一篇 / 下一篇  2012-04-14 19:43:19

特别鸣谢ThoughtWorks中国提供场地并组织这次活动。感谢TW的同学为此次活动付出的努力。

进入正题。第一个topic是淘宝的锐刃同学介绍的蜕变测试和适应性的自动化回归
先说适应性的自动化回归测试ART(AdaptiveRandomTesting)。回归测试时,有时需要在大样本的测试用例集中,挑选一个测试用例子集用于回归测试。ART这种测试方式就是一种挑选子集的方式。对每一次回归测试的子集,挑选规则是,子集应当在全集平均分布。这里的平均分布不太好理解,你可以这样去想像这种挑选子集的方式:假设测试用例全集所覆盖的路径和结点会织成一张平面上的大网,每一个用例会对应这张网上的一片区域(一个用例总不可能把所有路径都覆盖到吧?),自然用例全集会覆盖这张网的所有路径。而子集就是就是这张网上平均分布的一些区域。说到这里,希望能解释清楚这个平均分布的概念。每一次回归测试时,按照这种方式挑选一些子集,但是待下次再回归测试时,子集和上一次回归测试时又不一样。这样一来,每一次回归测试的用例都不一样,但用这种方式run过几次回归测试后,最终会把所有的用例都覆盖到。

接下来说说蜕变测试。按我理解,就是找两个测试用例,他们是同构或近似同构的,所以测试结果也应当是相同或近似的,而不应该出现大的偏差。或者说,一个测试用例可以近似化归(reduce)到另一个测试用例上。可以通过这种方式,来验证程序逻辑的实现是否正确。再或者说,程序应当“自洽”,而不应当出现自相矛盾的结果。当然,如果程序逻辑“自洽”了但是和需求不一致,用这种方式是测不出来问题的。

第二个topic是TW的xiao ran同学带来的"Testing Before the Last Mile"
在这个topic里xiao ran分享了很多他经历过的典型案例,比如在实际项目中,客户是如何打破合同的,客户如何否定之前在发布节奏和功能上的约定。印象比较深的一处讨论是,如何对待没有时间做设计这个问题。相同的结果,区别可能就在于,是约束条件导致的确实没有时间做设计,还是确实不愿意或不屑于做设计。讲到这儿的时候我就想起了刚刚发生的一件事。在最近的某次release之前,某运维同学在合并代码时发现了一个冲突,原因是两个开发人员本来在开发不同的模块,最后却恰巧都用到了同一个目录下同一个文件名。最后推荐了两本书,据说是每一个经历过上线前sleepless nights的工程师,在看过这两本书后都应当“内牛满面”,可惜书名被我给忘记了(好吧,瞧我这忘性)。

第三个topic,某传统石化行业软件从业人员He Hongjie同学带来的“Specification By Example”. 
如果你用过fitness,就容易理解他在说什么(貌似鄙人样样通样样松的风格也不全都一无是处,哈哈),如果有过传统行业软件的经历,也曾对那些无处不在的domain knowledge一头雾水或生死两茫茫,就更容易对他曾经的遭遇感同身受。听完之后觉得不过瘾,又找到他细聊了一下。一个体会是,他们最后能够在公司内尝试和推广这种方式,一个重要条件是有来自高层的支持,可以自上而下的推进这一变化,而高层愿意支持,很大程度上又是因为项目越做越难,客户抱怨越来越多。反过来想,如果项目做的还算顺利,所有问题都还在积累期且尚未到爆发的时候,估计没几个公司的高层会重视和支持这种变化。想到这一点,顿觉伤感,面对紧张的项目排期和还算顺利的项目,自己可能得不到多少机会和授权来推行那些“正确的事情”。

所以,对测试以及所有其它项目人员来说,除了技术上的挑战外,还有来自人和文化上的挑战,而这可能是更难处理甚至更要命的约束和瓶颈。这一点也在此次conference最后的问答环节也得到了很好的体现。比如一哥们说他打算做做基于UI的测试自动化,而且是只跑主流程,即对业务逻辑上端到端的那种主要场景进行测试。但是他无法推行单元测试,原因也无外乎以下几点:
×不需要改动code,对其它部门的影响最小,阻力自然也最小。
×历史代码中,糟糕死板的设计(如果还有设计的话),在页面和逻辑中到处乱飞的sql
×效果来得快(当然走的也快,就像ons,短暂激情过后,紧跟着的是无边的寂寞和空虚)
此哥们的想法被twer众一致否决,理由是,放着低成本高收益的单元测试都不做,还搞毛基于UI的自动化测试。讨论到这里时,我忍不住报以会心的微笑。此哥还说,本来搞了一个CI工具,但是后来却被开发人员神奇的绕了过去。在大家不断的和讨论和此对案例做根本原因分析后,问题最终被被定位到了人和文化这个层面上来(其实看到了故事的开头,我就猜到了结尾。对了,这可不是我在事后诸葛亮哈)。Xiao Ran同学对这一情况提供了一些建议。其实都是很好的建议,但是根据我曾看到过或听到过的案例,在某些文化中,这些建议注定沦为远水解近渴,老鼠给猫系铃铛,无法落地,而且有可能你所有的进路都会被封死。既然生活在某神奇国度中,这些其实我不说大家都懂的。

最后,我想摘录几段刘瑜女士在回顾其小说《从头再来》时说过的几段话:
还有大学一个好朋友峰,毕业后考研没有考上,分回了老家的省会。在学校的时候,他特别爱读书、爱“讨论问题”,属于那种在校园的核桃林里,和哥们争论祖国的前途争到口干舌燥的有志青年。分回老家后,偶尔出差到北京,人是日渐发胖,意志却是一次比一次消沉,及至最后有种坐以待毙的宿命感。有一次我们在北京的一个小饭馆里吃饭,他说起他们单位,有人把人民日报撕碎、放在脚底下踩的事情,然后说:“底下的人,其实都很幻灭。”

但是另一方面,我不想说,一个人可以把自己的一切过错推卸给环境,可以不负责任地生活。这也是为什么文中我用了一长段,来探讨萨特。萨特一辈子都在问,人到底是环境的奴隶,还是自己的主人?萨特的回答是,人是自由的,每个人都是自己的作品。说白了, 就是说,如果你成了一堆狗屎,那肯定是你选择了做一堆狗屎,所以没啥好废话的,你就是一堆狗屎,除非你决定不再做一堆狗屎。  

最后说两句“从头再来”  --DrunkPiano(刘瑜) 

TAG:

 

评分:0

我来说两句

Open Toolbar