第009页_1788968474795.txt

第1章引论


THE
The ARTof
ART
SOFTWARE
Testing,1979,如图1-5所示)。Myers认为测试不
OF
应该着眼于验证软件是工作的,相反地,应该用逆
TESTING
向思维去发现尽可能多的错误。他认为,从心理学
SOFTWARE
TETING
的角度看,如果将“验证软件是工作的”作为测试的
目的,非常不利于测试人员发现软件的错误。因
Glentord .myera
此,1979年他给出了软件测试的不同的定义:“测
GLENFORD J. MYERS
试是为了发现错误而执行一个程序或系统的过
程”。从这个定义可以看出,假定软件总是有错误
图1-5
《软件测试的艺术》I、Ⅱ版)
的,测试就是为了发现缺陷,而不是证明程序无错
误。发现了问题说明程序有错,但如果没有发现问
题,并不能说明问题就不存在,而是至今未发现软
件中所潜在的问题。
从这个定义延伸出去,Myers认为,一个成功的测试必须是发现了软件问题的测试,否则
测试就没有价值。这就如同一个病人(因为是病人,假定确实有病)到医院去做相应的检查,结
果没有发现问题,那说明这次医疗检查是失败的,浪费了病人的时间和钱。Myers提出的“测
试的目的是证伪”这一概念和BillHetzel的观点“测试是试图验证软件是正确的”针锋相对,
为软件测试的发展指出了不同的努力方向,产生了新的软件测试理论和方法。
Myers的定义是引导人们证明软件是“不工作的”,以反向思维方式,不断思考开发人员理
解的误区、不良的习惯、程序代码的边界、无效数据的输人和系统的弱点,试图破坏系统、摧毁
系统,目的就是发现系统中各种各样的问题。
人类的活动具有高度的目的性,建立适当的目的具有重要的心理作用。如果测试目的是
证明程序里面没有错误,潜意识里就可能不自觉地朝这个方向去做,在进行测试的过程中,就
不会刻意选择一些尽量使程序出错的测试数据,而选择一些常用的数据,测试容易通过,而不
容易发现问题。如果测试的目的是要证明程序中有错,那我们会设法选择一些易于发现程序
错误的测试数据,这样,测试的结果会更有意义,对软件质量的提高会有更大的帮助。
1.3.3
软件测试的定义
GlenfordJ.Myers的软件测试定义虽然受到业界的普遍认同,但也存在一些问题,例如:
(1)如果只强调测试的目的是寻找错误,就可能使测试人员容易忽视软件产品的某些基
本需求或客户的实际需求,测试活动可能会存在一定的随意性和盲目性。
(2)如果只强调测试的目的是寻找错误,使开发人员容易产生一个错误的印象,即测试人
员的工作就是挑毛病的。
除此之外,GlenfordJ.Myers的软件测试定义还强调测试是执行一个程序或系统的过
程,也就是说,测试活动是在程序代码完成之后进行的,而不是贯穿整个软件开发过程的活动,
即软件测试不包括软件需求评审、软件设计评审和软件代码静态检查等一系列活动,从而使软
件测试的定义具有局限性和片面性。
BillHetzel的软件测试定义可能使软件测试活动的效率降低,甚至缺乏有效的方法进行
测试活动。但是,BillHetzel的软件测试定义也得到了国际标准的采纳,例如,在IEEE 1983
ofIEEEStandard729中对软件测试下了一个标准的定义:使用人工或自动手段来运行或测
定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之
下载此文件