软件测试技术发展综述报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综述报告
报告题目:_软件测试技术发展现状综述__
学生姓名:
学号:_ _
专业:软件工程
导师:
2014年3月
软件测试技术发展现况综述
摘要:从世界上第一行程序代码被编制出来,实际上软件测试问题就已经出现了。随着软件复杂度的增加,软件测试的重要性逐渐引起了人们的重视。本文基于此,阐述了计算机软件测试技术的发展历程、国内外软件测试行业发展现状、软件测试的方法和过程以及发展趋势等方面。
关键字:软件测试软件测试技术发展趋势
引言
随着社会的不断进步和计算机科学技术的飞速发展,计算机及软件在国民经济和社会生活等方面的应用越来越广泛和深入。作为计算机的灵魂,软件在其中起着举足轻重的作用。软件的失效有可能造成巨大的经济损失,甚至危机人的生命安全。软件开发的各个阶段都需要人的参与。因为人的工作和通信都不可能完美无缺,出现错误是难免的。与此同时,随着计算机所控制的对象的复杂程度不断提高和软件功能的不断增强,软件的规模也在不断增大。人们在软件的设计阶段所犯的错误是导致软件失效的主要原因。软件复杂性是产生软件缺陷的极重要的根源。
作为软件工程重要组成部分的软件测试是软件质量的有力保证。软件测试对于软件质量的重要意义,不仅仅在于发现软件系统中存在的错误,更体现在经过各种测试技术和方法对软件产品进行测试后,可以提高对软件质量的信心。因为无法预知软件中究竟会有多少错误存在么,所以即使在测试后仍然无法保证软件系统中不在存在错误。但是,通过软件测试,能够对软件系统出错的可能性以及错误可能导致后果的严重程度能有准确的估量。同样,通过测试可以将存在错误的几率限制于可以接受的程度之下。这些都大大提高了软件质量的可靠性,增加
了对软件产品的信心,尤其是对于涉及到高安全性、高可靠性的软件系统。
软件测试概述
一、软件测试的定义
对软件测试的定义长期以来就存在着很多不同的观点:
1.网络词典中软件测试被定义为“软件测试是一个过程,用于确定开发的软件系统的正确性,完备性以及软件的质量。实际上,软件测试无法绝对保证软件的正确性,这种保证只能通过形式化的验证来实现。软件测试能够发现错误,却无法证明软件中不再存在错误”。
2.软件测试是对系统或程序的执行以期发现其中的错误。
3.软件测试是任何以衡量程序或系统的属性和能力为目标的活动,并且用以确定这些活动是否得到预期的结果。
4.IEEE提出的软件工程标准术语中,对软件测试的定义为“对软件系统或软件系统组件进行检测和评估的过程,通过人工或自动的方式来验证是否满足了特定的规定和需求,确认实际运行结果与所期望的运行结果之间的差异”。
可见,从不同的观点出发,对于软件测试的理解也不尽相同。尽管在软件测试的具体定义上存在上述众多的不同见解,但对软件测试所需达到的目的却都是一致的,即都强调对软件正确性的保证。
二、软件测试方法和过程
软件测试方法根据是否要运行程序可划分为两大类,即静态方法和动态方法。静态方法不执行程序,只通过分析源程序代码发现和修正程序结构上的错误或数据存取中的差错。动态方法使用测试数据和追踪程序执行过程的测试工具,通过执行程序检查程序的运行状态与结果是否正确,来发现程序中存在的逻辑错误和算法错误。
静态方法的特征是不需要运行被测试的程序,而是通过其他手段达到检测的目的。静态分析是对被测试程序进行特性分析的方法的总称。静态分析由于无需程序的执行,因此可以应用在软件开发生命周期的各个阶段,即使在系统的需求分析和概要设计阶段,也能很好地被运用。此外,一些依靠动态测试难以发现或不能发现的错误,也可以使用静态方法来分析和检查。静态分析和动态检测是互为补充的,对错误的检测有各自的特点。静态分析方法中,主要有下述几种:软件审查、静态排演和检查。近来的研究中,还有一些较新的静态分析方法,例如基于数据流的程序静态自动分析,基于有限状态机的验证和分析模型等。这类静态分析方法主要查找与时间相关,资源竟争等引起的难以动态测试到的错误。
动态测试通过在抽样测试数据上运行程序来检验程序的动态行为和运行结果以发现缺陷。动态测试包括生成测试用例、运行程序和验证程序的运行结果三部分核心内容,以及文档编制、数据管理、操作规程及工具应用等辅助性工作。动态测试最重要的问题是生成测试用例的策略。它是动态测试有效、高效的关键。测试用例包括输入数据和期望结果。一般说到测试用例生成时,由于期望结果构造的困难性,都侧重或仅生成输入数据,并称之为测试数据。
软件测试的过程分为单元测试、组装测试、确认测试、系统测试等几个阶段。单元测试可以运用白盒测试(控制流、数据流测试)、黑盒测试(等价类划分、因果图、边值分析)等多种测试技术。组装测试主要采用黑盒测试中的等价类划分、边值分析,白盒测试中的数据流测试,域测试,调用对覆盖等测试技术。组装测试
的策略是指进行单元组装的方法和步骤。组装测试的策略有渐增式组装和非渐增式组装两类,而前者又分为自底向上和自顶向下两种方式。确认测试主要采用黑盒测试中的状态测试、事务流测试等测试技术。
软件测试技术的发展历程
1975年,Good enough等首次提出了软件测试理论,同年Huang全面讨论了测试过程和测试准则。1982年在美国北卡莱纳大学召开了第一次软件测试技术会议,这次会议成为软件测试发展史上的一个重要里程碑。随后,各国学者在测试理论和测试方法上百花齐放,使得软件测试理论和方法逐步应用到软件开发过程中来。但从实际应用效果看来,无论是测试技术还是测试方法都远远不能满足现在软件测试的需求。总的来说,软件测试技术的发展经历了三个阶段: 1.初期阶段(60年代初--70年代初)。
这个阶段的主要工作是个别方法的探索和不同方法的收集,这个时期的代表著作是Hetze1的“程序测试方法”。在这一阶段,高级语言相继诞生并得到广泛的应用,程序的复杂性也增强了。但是,由于受到硬件系统的制约,软件相对而言仍占次要地位,对软件正确性的把握主要依赖于编程人员的水平。因此,测试理论和方法在这一时期发展相对缓慢。
2.发展阶段(7O年代初--70年代末)。
这个阶段的主要工作是逐步建立了软件测试的理论基础,代表著作是Myesr 的“软件测试技巧”。随着计算机处理速度的提高和内存、外存容量的快速增加,软件的规模越来越大,软件的复杂性也急剧增加,软件在计算机系统中的重要性越来越高。许多软件测试理论和测试方法相继诞生,逐渐形成一套体系。
3.成熟阶段(70年代末--现在)。
这个阶段的主要工作是建立了各种测试工具和环境,大大丰富了测试.的理论和方法,代表著作是Beiezr的“软件测试技术”与“软件系统测试和质量保证”。20世纪80年代初期,IT行业开始大发展,软件趋向大型化、高复杂度,软件的质量越来越重要。软件测试再也不是一个一次性的、而且只是开发后期的活动,而是与整个开发流程融为一体。软件测试已成为一个专业,需要运用专门的方法和手段,由专门人才和专家来承担。
软件测试技术的现况和发展趋势
一、国外软件测试技术发展现状
国际上,软件测试是一件非常重要的工程工作,测试也作为一个非常独立的职业。在IBM、Microsoft等开发大型系统软件公司,很多重要项目的开发测试人员的比例能够达到1:2甚至1:4.在软件测试技术方面,自动化测试系统正朝着通用化、标准化、网络化和智能化的方向迈进。20世纪90年代中期以来,自动测试系统(ATS)开发胭脂的指导思想发生了重大变化,以综合通用的ATS代替一系列,采用共同的硬件及软件平台实现资源共享的思想受到高度重视。其主要思路是:采用共同的测试策略,从设计过程开始,通过“增值开发”的方式是使后一阶段测试设备的研制能利用前一阶段的开发成果;TPS要能够移植,软件模块可以重用;使用商业通用标准、成熟的仪器设备,缩短研发时间,降低开发