“测试用例的概念是什么?”古龙先丢了一个问题给令狐冲。
看来令狐冲把那本《独孤九剑》的确是看了挺多遍的,概念脱口而出。
“我们回过头来看看今天上午你所做的工作,应该算是测试的核心活动了对不对?你也有了不少的工作成果,是吧。”
令狐冲使劲的点点头。
“那好吧,你来说说你今天都测试了软件的哪些功能?你觉得你的测试已经很全面了吗?你测试时都使用了哪些数据,每一个步骤都是怎么操作的?”一连串的问题,让令狐冲难以招架。
“你现在的测试水平还处在‘乱拳打死老师傅’的阶段。之所以你今天发现了许多的问题,和你的敏锐聪慧有关,和你的善于联想有关,和你的运气甚至也有关,但是和你的测试水平无关。”古龙毫不客气的批评道。“相信你在学校对编程也学过相当多的课程了,你能想象编程不做设计吗?做测试不写用例和编程不做设计是一样的,应付一个简单的程序,可能不进行设计尚可,但是一旦代码量增加、业务逻辑复杂起来,不做设计将很难能把控程序的开发方向和预想的不产生偏差。而且设计能帮助我们建立一种很好的思维方式----‘系统化思维’。”
“那什么是系统化思维呢?”
“简单点说,系统化思维就是在思考问题的时候,不仅考虑其实体本身,也充分考虑其相关实体及其变化的一种思考方式。这种思维被充分用在软件开发,管理,科学研究等一系列学科中。呵呵,有时经常有人说,某某有大局观,有整体观,这其实就是一种系统化思维的体现。”看看令狐冲还是一副不明白的样子,古龙又开始了他的故事会。“我家曾经请过两个清洁工,做的工作基本都一样,可是一个要做4个小时,一个人却2个小时就完成了。”
“肯定是其中一个在磨洋工,工作效率低下。”
“我仔细观察过,两人的工作效率是差不多的。我家的清洁工作其实并不多,大概算一下,可分为如下几类:清洁厨房,清洁地板,清洁家具。我家的两个清洁工,她们完成这几项工作的时间为:”
“A清洁工使用的时间是四个小时。她的做法是这样的,先把地板全部拖干净了,花费1个小时,然后开始清洁厨房,花费0.5个小时,但是在清洁厨房的时候,又把地板弄脏了,又花了一个小时重新清洁地板,然后开始清洁家具,花了0.5小时,在清洁家具的时候又把地板弄脏了,又花了一个小时清洁地板。算起来,整整花了4个小时。”
“哈哈。这个清洁工也太不会安排工作了。她要是先做其他工作,最后清洁地板的话,不就只用两个小时就完成了吗?”令狐冲对这位清洁工的工作能力表示出了不满。
“来,我给你看样东西吧。”古龙走到了另外一台计算机旁,操作了几下,屏幕上立刻显示出上午令狐冲做软件测试的过程。
“我专门用了抓屏软件,让计算机记录了你的测试过程。我们来看看你是不是像你想象的那么有效的做测试。”屏幕中,令狐冲首先做的测试就是程序中首先要操作的登录功能。令狐冲凭借自己的想象,试验了很多中登录的方式,单从登录的功能测试来看,的确做的比较详细。但是在测试完登录程序之后,由于后面的功能测试需要频繁关闭程序,导致令狐冲又使用的登录功能很多次。令狐冲的脸色有点发红了,似乎他也看出了自己的一些问题。
古龙拿出一张纸,为令狐冲算了一下他的工作时间:
其中令狐冲登录做了5次测试(每次不同数据),功能1做了3次,功能2做了2次,退出做了5次。共计花了5*1+(1+2+1)*3+(1+1+1)*2=23分钟。可是如果做出良好的规划,可以将时间减少5分钟,时间节约了20%以上。古龙看到令狐冲若有所思的样子,于是便拍拍令狐冲的肩膀,继续讲了起来:
“刚才我们分析的场景就是测试用例的其中一个优点。可以通过合理的规划,降低重复工作,提高测试执行的效率。当然,也能通过这种组合式的执行,找到更多的潜在问题。我们还是继续回到故事中,看看乔总当时是怎样凭借测试用例中标的。”