资源描述:
《基于缺陷模式的软件测试技术》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、摘要从软件产业的发展初期到目前的大型软件开发过程,软件测试已成为其中一个不可分割的部分。随着软件规模的日益增大,软件测试问题也日益突出,现代社会对软件的依赖越来越强,高可信软件测试有着广泛的需求,基于缺陷模式的软件测试技术作为高可信软件的重要保证,可以大大降低软件的缺陷密度,提高软件的可信性。本文从测试的基本概念入手,深入剖析软件测试相关理论关键词:软件测试;软件测试的分类;软件测试方法;测试用例;测试工具;151软件测试的发展史l20世纪60年代(软件工程建立前),为表明程序正确而进行测试。l1972年
2、在北卡罗来纳大学举行了首届软件测试正式会议。l1975年JohnGoodEnough和SusanGerhart在IEEE上发表了《测试数据选择的原理》的文章,软件测试被确定为一种研究方向。l1979年,GlenfordMyers的《软件测试艺术》,对测试做了定义:测试是为发现错误而执行的一个程序或者系统的过程。l20世纪80年代早期,“质量”的号角开始吹响。软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容。制定了各类标准。l1983年,BillHetzel在《软件测试完全
3、指南》中指出:测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。l20世纪90年代,测试工具盛行起来。l1996年提出的测试能力成熟度TCMM(TestingCapabilityMaturityModel)、测试支持度TSM(TestabilitySupportModel)、测试成熟度TMM(TestingMaturityModel)。l到了2002年,Rick和Stefan在《系统的软件测试》一书中对软件测试做了进一步定义:测试是为了度量和提高被测软件的质量,对测试软件进行工
4、程设计、实施和维护的整个生命过程。2软件测试的基础理论2.1软件测试的定义软件测试使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。l测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;l这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;l没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。2.2软件测试的描述15测试是软
5、件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Dotherightthing),另一方面是确认软件以正确的方式来做了这个事件(Doitright);第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息;第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。2.3软件测试
6、的目的l测试是为了发现程序中的错误而执行程序的过程;l测试是确保最终用户的产品符合用户的需求;l成功的测试是发现了至今为止尚未发现的错误的测试;2.4软件测试的原则l尽早地进行软件测试,并把软件测试贯穿整个软件生命周期l软件测试应追溯l测试应由第三方来构造l穷举测试时不可能,要遵循good-enough原则l必须确定预期输出结果l必须彻底检查每个测试结果l充分注意测试中的群集现象l其他值得注意到规律和经验3软件测试的内容3.1验证(verification)验证(verification)是保证软件正确地
7、实现了一些特定功能的一系列活动,15即保证软件做了你所期望的事情。(Dotherightthing)l确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;l程序正确性的形式证明,即采用形式理论证明程序符号设计规约规定的过程;l评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。3.2确认(validation)确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方
8、式来做了这个事件(Doitright)l静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;l动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。4软件测试的分类4.1角度分类Ø从是否关心软件内部结构和具体实现的角度划分(按测试分类)l白盒测试l黑盒测试l灰盒测试Ø从是否执行程序的角度l静态测试l动态测试4.2阶段细分Ø从软件开发的过程按阶段划分有15l单元测试l集成测试l确认测试l