【人物介绍】
大户:MM精密仪器生产公司资深软件测试工程师,5年嵌入式软件测试经历,被测试实验室的同仁称为躺在家里睡觉也能发现Bug的大户,俗称“大户”。
阿笑:某名校理工科研究生毕业,一年多软件测试经历,好学,积极,斗志昂扬,逢人便笑,俗称“阿笑”。
【故事前曲】
前几天,大户提交了一个让开发人员解决起来颇为棘手的深度Bug。
此Bug描述的大意是:大户做了一次仪器静置的探索测试,把一台仪器打开,进入仪器的信息监控界面(监控仪器工作的温度,电流,电压,气压等),然后不操作仪器,即一直放着,72.5小时后,仪器自动上报“通信异常”,停止监控工作了,相当于监控系统瘫痪了。
在共享的Bug库上,阿笑读后尽管明白了Bug单的意思,但犹如丈二金刚,摸不着头脑。表示惊叹之余,问着自己,这是属于什么测试方法,大户怎么就能发现这种让人出乎意料的深层问题呢?他是怎么思考的,这种测试点是如何得知的?……,抱着好奇,及对大户由来已久的技术倾佩,早就想找个机会向大户请教,指点迷津了。
【冬日的暖阳里】
今天,周六,虽是冬日,但属亚热带海洋性气候的深圳,依旧暖阳斜照,站在窗明机净的高层办公楼里,迎着透过茶色窗玻璃的斑驳暖阳,阿笑正傻傻的想着什么……。
突然,阿笑的视线中出现了一个熟悉的身影,让他不由自主的擦起了眼睛,生怕看错。你猜,阿笑看到了什么。
哇噻!那不是大户吗,远远看有点点胖,但不墩,背着公文包正缓缓地走向办公楼。曾听同事提过大户一向在家度周末,贪睡,常足不出户,典型的新兴时代--宅男一号。今天突然出现在公司,定有文章吧。阿笑与大户虽属同一测试部门,但100多号人,分布在不同项目,平时难得在一起。
嗨!请教的机会终于来了~~~,毕竟是周末,准会有空的时候,还是有希望的,~~~~~~,
对,抓住机会,中午约大户一起吃饭,阿笑乐了起来,并打算马上行动起来。
【约会那点事】
(注:大户与阿笑在同一办公楼上班,但不同楼层,他们内部有QQ群,以下是QQ聊天记录。)
阿笑:大户兄弟,久仰大名,平时工作日你太忙,未敢多打扰,今日周末,非常难得看到你。
小弟对你提的那个静置测试的XXbug,几天了,一直云里雾里,特想中午与你一起吃饭,请教一下,不知是否方便。
大户:那个XXbug,是碰巧,给遇上了,没什么技术含量的,呵呵!
阿笑:我不信,为啥我遇不上,牛人就是谦虚呀!
大户:小弟,沉住心,好好测几年,你准能遇上,哈哈……;
阿笑:谢谢大户的指导,但小生还是认为其中有因由,而不是谁都能碰上的,如果大户中午没空,我下次再请教吧;
大户:看你多次找我问这问那,也是一片诚心,好学莫如你,中午12:00见!
阿笑:J,马上回了一个笑脸,太有受宠若惊状,差点忘了约会地点;
阿笑:立马补发“梦现时光屋”见(他们公司附近的一家咖啡屋),不见不散,J.
【梦现时光屋】
中午,12:05,和熙的暖阳普照,位于素有深圳硅谷之称的南山高新产业园区的梦现时光咖啡吧里,大户与阿笑显得很普通,他们选择了吧里安静的一隅坐下。
几分钟的寒喧后。
大户:阿笑,像你这样85后的新生代,对工作上的问题那么执着,爱较真,打破沙锅问到底的人,很少了。
阿笑:没有,没有,像大哥这样的聪明、经验丰富的测试技术牛人是什么时候都是少之又少。
阿笑:不瞒你说,最近在XX项目的测试中,一直在学习James Whittaker的<<探索式软件测试>>,并在项目团队内部进行了一次分享,其中提到的多种漫游测试方法,如卖点测试法,通宵测试法。但总觉得自已在使用时是依葫芦画瓢,没感到有什么特别的效果。
大户:静静地专注地听着……
阿笑:之前有不少同事提到你对探索式测试很有研究,做得特别好,前几天读了你提的关于静置测试的Bug,我想我是坚决想不出来这种测试场景的。很想知道在探索之前,你是如何思考、分析的,是什么原因导致你会想到如此出乎人意料的测试场景。
大户:其实,一开始,我并没有想到要这样做。仪器的信息监控界面很特殊,当我第一次进入此软件界面时,发现数据在不断刷新,这些数据包括仪器的温度,电流,电压等。我很好奇,如这些温度,电流,电压值软件是如何获取的,软件与硬件又是如何交互的,硬件又是如何采集这些数据的,等等,一系列背后的原理我并不清楚。有了疑问并不可怕,怕的是没有疑问。于是找相关专业开发人员交流,找相关设计资料熟悉等,直到把软、硬一体化实现原理搞清楚。这个过程谓之测试对象分析。
阿笑:全神贯注地听着,目不斜视地看着大户……
大户:测试对象搞清楚后,再把分析思路写出来,当成一次小结,边写边思考,最后,从中提取出测试点与测试思路,包括一些测试方法。就这样,仪器信息监控测试对象分析完成后,知道了软件一旦进入此界面,是每隔1.5秒需去查询仪器的状态,即从指定地址读取这些状态值。上位机软件在不断读取这些数据时,下位机程序也在不断采集温度、电流、电压的信号,自动通过AD转换,把转换后的值保存在某寄存器中。整个过程需要板间串口通信来实现,而你知道,串口通信一般速度不会很快,于是自然想到连续长时间进行串口通信的情况下,软件是否会丢帧,数据是否有异常,存在异常的情况下,系统是否有容错等。一系列的问题自然奔出来,等着你验证。大户一边讲时,一边便拿出随身的IPad在画。下图便是上述边讲边画的仪器状态信息显示工作原理简图。
阿笑:听着,看着,若有所思,若有所触……
大户:其实我并无他人言传中的灵丹妙药,面对软件,软件中的显式或隐式的每一功能点,多思考,多给自己提一些疑问。释疑的过程就是探索的过程,这样你会发现测试很有趣。常常,想不发现bug都难。
大户:好了,兄弟,最后送你一个不是灵丹妙药的妙药吧,我把这张图的思维导图给你,适用于任何测试对象的分析,测试点的提取,测试思路的形成,直到测试用例的设计。于是大户在原分析图上又加了几笔,便有了下面这张图。
阿笑:沉浸在大户的精彩分享中…..,并笑着。
大户:傻B,别笑了,要不要“真经”,快说下你的邮箱吧。
阿笑:赶忙报上自己的邮箱……