测试工作的开展思路
测试工作的开展思路
01从需求出发无论什么样的软件产品,其设计开发的目的必然是为了满足一定的需求,这种需求或者是用户提出的,或者是某个关联系统提出的。因此,软件产品最终是为了交付给用户使用的,也因此可以满足需求是对于软件产品质量的基本保证,其它如扩展性、维护性等等其实也算是更为广义的需求。所以,我们开展软件测试工作必须从需求出发。
02测试依据是测试设计?我们进行测试设计的依据是对于软件产品需求的全面和深入分析,但是需求决不全是软件测试的依据。
因为我们不仅要验证需求,而且要验证设计。比如,程序实现的异常(指针越界、字符串copy越界等等)判断,是保证软件产品可以正常运行的必要实现,但是我们在需求中是无法描述和分析出来的。那么进行测试的依据是软件产品的设计或者是代码吗?
当然也不是。因为如果依据开发人员的设计或代码来进行测试的话,设计或代码正确,但是不符合需求逻辑的错误就无法发现。而且,如果依据设计或代码进行测试的话,那么也就违背了我们进行软件测试的基本假设——有罪推断。
所以,我们进行软件测试的依据应该是:我们根据对需求的全面深入分析和对设计实现的了解,两相综合产生的测试设计。正因为如此,测试是否充分和有效的根源也是测试设计。所以,我们的工作重点也是测试用例设计。
03测试人员只是验证质量?首先要明确的是,测试人员无法保证软件产品的质量,软件产品的质量是通过参与软件过程的各方联合共同保证的。有两个原因:① 由于软件测试人员不是产品设计人员和开发人员,所以无法做到比他们更了解产品需求和产品设计,如果他们都无法保证需求和设计没有问题,那么测试人员就更无法保证了;
② 软件测试位于软件开发生命周期的末端,如果依靠测试人员来发现所有的bug来保证质量的话,那么风险就会后置,导致问题修复的成本增加,同时也增加了修复问题带来新问题的风险,因为在项目末端是不可能投入过多的成本来进行那怕接近全面覆盖的测也正因为如此,我们是无法决定一个软件产品质量的好坏的,只有PM设计出产品需求,RD编码完成,我们才能够通过我们的工作,促进PM、RD改进他们的产品、系统,从而达到产品、系统的高质量。所以,我们才要参与需求评审和设计评审,大家一起努力,各个阶段由专业化的人员来保证阶段的质量,将问题尽量在前期发现。
04测试的内容一定是确定的软件测试只能验证质量,那么所要验证的内容必然是确定的,或者说是概率确定的,否则也就无从验证了。因此,模糊不确定的需求我们无法验证,输出结果没有任何规律的程序设计我们也无法验证,这就是软件产品的可测性判断。也因此,我们进行需求评审和设计评审时是一定要保证这个基本点的。
05测试的目标不是没有bug综上所述,进行软件测试的目标不是通过测试使得软件产品不存在bug(这是不可能达成的),而是我们根据确定的需求、确定的设计和确定的测试用例验证出的结果不存在bug。
同样的,测试人员的目标也不是在测试执行过程中去找bug,而是运用测试思维,使用一定的测试方法,尽可能早地在需求阶段、设计阶段将所有的bug找出来,真正测试执行阶段只是验证不存在用例所描述的那样的bug,而不是通过用例去发现bug。