软件测试正反两方面的争辩
软件测试领域先驱 Bill Hetzel 博士 1993年在美国的北卡罗来纳大学组织了历史上第一次正式的关于软件测试的会议。从此以后,软件测试开始频繁出现在软件工程的研究和实践中,也可以认为,软件测试作为一个学科正式诞生了。
1973年正式将软件测试下了一个定义:软件测试就是为程序能够按预期设想运行而建立足够的信心。
Bill hetzel 觉得这个定义不够清楚,理解起来比较困难,所以在1983年将软件测试定义修改为:软件测试就是一系列活动,这些活动是为了评估一个程序或软件系统的特性或能力,并确定是否达到了预期结果。
Bill hetzel 可以说是软件测试的奠基人,但是他的观点还是受到业界的一些权威的质疑和挑战,其中代表人物要数Glenford J.Myers(软件测试的艺术作者)Myers认为测试不应该着眼于验证软件是工作的,相反,应该用逆向思维发现尽可能多的错误。so?就引来了争辩
Myers提出的”测试的目的就是证伪“和Bill hetzel提出的”测试是试图验证软件是正确的“争锋相对。
我心里比较支持Myers的定义,如果只是需要证明软件是正确的,在测试过程中就不会刻意选择一些尽量使程序出错的测试数据,而选择一些常用的数据,测试容易通过确不容易发现错误,而如果我们要证明的是程序有错误,那么我们会想法设法选择一些容易出错的数据,这样测试的结果更有意义,对软件质量的提高会有更大的帮助。
两个人的都会多少存在一些问题
Myers观点中强调测试的目的是寻找错误,就可能使测试人员忽视软件产品的某些基本需求或客户的实际需求,测试活动存在一定的随意性和盲目性
如果测试目的是寻找错误,会让开发人员认为测试人员的工作就是挑刺挑毛病的
两种观点应该相辅相成,侧重点不一样,在各行业要求不一样,so,按要求来。
最终定义就是:使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
测试和开发的关系:
1、需求验证对应验收测试,客户需求的确认测试
2、系统架构设计的验证对应系统非功能性测试
3、产品详细设计的验证对应功能测试
4、代码的验证对应单元测试和集成测试
也就是说,如果只是在某一两方面(如代码测试、功能测试)完成对软件产品的测试,都说明测试不完整。
测试驱动开发方法(TTD)——测试在先、编程在后的开发方法
TTD从根本上改变了开发人员的编程态度,要求每行代码都是有效代码,写完所有代码就意味着真正完成了编码任务。
遇到的问题:为什么要开展软件测试活动?
为了保证软件的质量
什么是软件测试?
使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果和实际结果之间的关系
如何理解软件测试:
多方面来看软件测试,质量,风险,经济,安全等,抓请着重点
软件测试和开发的关系?
V模型
软件测试和质量保证的关系?
软件测试是质量保证的重要手段之一。