carandcat 2011-09-10
一、软件测试的定义和目的
软件测试是根据软件的规格说明书和实际应用,设计一批测试案例,查找程序是否有存在错误,那么,软件测试的目的是发现尚未找到的错误。
二、程序员不要参于测试
程序开发人员已经习惯于自己的逻辑思维方法,下意识中避免了或绕开了其它逻辑判断的条件,程序当然不会出错。而测试人员可能有别于程序人员的逻辑思维,当两者的逻辑思维不相同时,所以在使用的时候随便去点击,点击一些东西的顺序,输入数据的内容都是随心所欲的,所以可能最与真实客户的思维模式一样,最有可以发现问题。
三、测试的原则
1)要把“尽早地不断地测试”作为测试的座右铭,
在写代码的前期就应该写好测试的案例。这样可以更避免掉好多麻烦
2)测试只能证明错误存在,而不能证明问题不存在;
因为测试案例你只能尽力去写,但是不可能考虑到全部
3)如果程序中查出的错误越多,则未查出的错误也越多。
正如在森林中,你在一小块地方就发现了几只狼,你想想在整个森林中狼会少吗
4)测试应当运用实际数据进行测试,而不是测试人员进行想象中的数据;
其实在开发的过程中,建好表以后,就应该录入真实的数据,也就是在整个代码开发的环节都用真实的数据
5)测试要细心,更要有无情的心;如要不细心,问题越后面越麻烦,一只老鼠坏了一锅好汤。换句话说,我们必须保证在做汤的每个环节都没有老鼠参与进来。如果在第一个环节发现有老鼠,其它的环节我们就没有必要进行了,重新开始第一环节的任务。
四、测试、质量、进度之间的关系
有人认为持久的测试和修改可以提高软件的开发质量。正如守门员一样,你在努力,你只能保证别人踢不进来,0:0是最好的结局。但是你没有办法保证你可以战胜对方。
其实软件开发的整个环节就和一个足球队一样,有守门员,有前锋,有后卫等等,任何一个环节出现问题都可以造成失败。没有办法说那个环节更重要一些。
正如有人要切你的一只手,让你选是左手和右手一样,
你的选择只能是,我一只也不会让你这个王八蛋切走的,每一只对我来都是很重要的
所以说软件的质量是每个环节努力的结果。而不是某个特定环节可以起的作用,所以每个环节都必须尽力,每个环节都是很重要的。
有人认为只要我的时间足够多,软件就会出现零错误。虽然多测试会发现并解决一些问题。但时间并不能解决全部的问题。一个稍微复杂一点的系统,无认通过什么样的手法,通过什么先进的测试理论来指导测试,想彻底消来错误,那是不可能的。君不同微软天天在发布软件升级包,是不是微软的技术不行,设计的测试案例不够多,还是测试的人数不多(全部上网的用户全部在帮他测试),这样算来微软的测试时间并不短,为什么还要天天升级,因为程序的错误是不可能预见式的消灭的。
那如何来平衡这测试和时间之间的关系呢,软件开发的成本以及程序所应用的领域等多个方面来进行综合考虑。对于一般的应用系统,界定一个相对的测试标准,告之程序开发人员和测试人员,让他们进行遵循其游戏规则,不要让程序员老觉得没有修改完错误,测试人员老是认为自己的测试进行得不够。这个游戏规则就是设计足够好而多的测试用例,让用户可以将程序运行起来。
毕竟,设计软件最终的目的是程序在基本满足要求的情况下,合法地获取尽可能多的利润。
同时对于软件开发人员,框架搭的灵活的,模块分的清晰一点,不至于牵一发,而动全身。
发现了问题并不要紧,只要能在用户可以容忍的时间内搞定就可以了,做人不要太有洁癖。