《软件测试》课侧记——从“开括号闭括号”说起

  • 邱 吉 (信息科学与工程学院)
  • 创建于 2008-07-09
  • 2222
2008年7月1日早晨,8:10,中关村园区教学楼S301,顾毓清老师的《软件测试》。
 
顾老师:“上课之前我想跟大家说说上次课提出的公交车刷卡系统的问题。课后有一位地理所的同学找我讨论,他想到了用开括号闭括号的方法来解决公交车上下车刷卡计价的问题,我觉得这种思路是可以用来解决这个问题的,这位同学思维很有逻辑性。那么,我有个问题要问,如果是你编程,你怎么在程序中识别配对的括号呢?”
 
因为这是一个本科就学过的计算机基础知识 ,他寻找的同学很容易就给出了正确的答案――“使用栈”。
 
“由此我想到了另外一个有趣的问题,你能想到这样的例子么?在使用栈判断后结果为开闭括号匹配时,但程序实际上不是严格的括号匹配呢?”
 
一阵沉默后,课堂里响起了窃窃私语声,顾老师走到教室一角,挨个问着同学。
 
面对这样一个发散性的问题,大部分同学都笑着摇了摇头。老师还是继续耐心的挨个问着大家。
 
终于,另一个角落里有同学举起了手,顾老师快步走上前去。“我觉得,如果程序里面有输出一个括号的情况,那么这个程序就符合您刚才说的情况。”
 
顾老师:“很好!这位同学回答正确,思路很好,是我也没有想到的。但是还有另外一种情况,大家再想一想。”
 
又过了大约一分钟,老师笑着放弃了等待。
 
“注释!大家怎么没有想起注释来呢?刚才这位同学说的很好。我提这个问题,是为了告诉大家,写程序的时候,需要保持这种总是思考程序可能出现的各种情况的头脑,这是一种严密的逻辑思维,并且是发散的,需要你自己把所有的可能性想出来,只有这样,你实现的算法才能比别人实现的更胜一筹,而不是仅仅保证一般情况下的正确性。”
 
哦!原来如此。这是一个再简单不过的道理:软件设计和测试中,保持逻辑的缜密和全面周到,是每一个学习过软件编写的同学都曾得到过的教导。可是上面那短短的几个字,又怎么会有今天这堂课这几分钟的冥思苦想不得其解,到听到答案豁然开朗,直到觉悟出老师的目的后而得到深深感悟呢?这时候,你才不得不从心底了里佩服讲台上这位已经68岁却能从坚持一早上上4节课,上课时不是端坐讲台而是在同学中间巡回,提出问题,等待答案的老者:他有着丰富的软件开发经验,经常把课程和自己的工作经历结合起来讲给大家;他也是一位长期工作在第一线的学者,把自己总结的科研心得“理论和应用的关系”毫无保留的介绍给大家;他更是一位思想自由的交流者,课堂里似乎没有师与生,长与少的区别,只因同学的课后讨论,他就会在下一堂课把同学请上讲台,给大家介绍他最新的工作进展。
 
他,就是这样的一位让大家喜爱的老师;而他的课,就是这样的让大家感受到别致和新颖,实用和难忘。
 
 
责任编辑:邱 吉

相关链接