本科生课程论文---文献综述题目:面向对象的软件测试姓名:学号:学院:软件学院专业:软件工程年级:2010教师:王灿辉2013年05月20日面向对象的软件测试摘要:软件测试在整个软件项目开发过程中有着举足轻重的地位,测试技术的发展对于缩短测试周期、降低成本、提高质量都有着十分重要的意义。
本文介绍了软件测试的关键技术,并对面向对象软件测试技术进行了简单的研究,讨论了面向对象软件测试的测试策略、方法及测试技术。
随着软件产业的发展, 市场对软件质量的不断提高,软件测试不断受到重视。
几乎每个中大型IT企业的产品在发布前都需要大量的质量控制、测试和文档工作。
软件测试的重要性已成为企业生存与发展的核心。
关键词:软件质量性能测试软件测试面向对象1软件测试的概念1.1什么是软件测试软件测试就是在软件投入运行之前,对软件需求分析、设计规格说明和编码实现的最终审查,他是软件质量保证的关键步骤。
通常对软件测试的定义有两种描述:定义1:软件测试是为了发现错误而执行程序的过程。
定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。
1.2软件测试的意义软件测试的意义在于保证软件产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。
一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。
测试是为了证明软件有缺陷,从而加以改正,而不是保证软件没有缺陷,缺陷是软件与生俱来的。
1.3软件测试技术的发展趋势我国的软件测试仍处于原始的初期,由于种种原因,我国的软件生产尚处于原始的“小作坊”型,离软件工程的需要,即实行工程化管理,用工业化,自动化的方法生产软件还有很大的距离。
软件测试更是属于原始时期的初期,即程序员凭自己的经验对程序进行调试。
因此,以普遍情况而言,我国目前尚无真正意义上的“测试”,这将大大影响高质量软件产品的推出和软件产业的形成。
国外的软件测试,自从上世纪90年代末出现软件工程以来,软件测试工程作为一个专门的领域得到了发展。
七十年代开始,软件测试职业化水平明显增长。
在一些机构,已对多个测试岗位定义了工作范围和目标,“测试经理”、“主测人员”、“测试分析员”和“测试技术员”已成为公认的名称。
但是,只在少数公司内软件测试成为正式职业;在大多数公司,测试是由其他专业的人员兼职。
测试工作者仍在争取与软件开发工作者有同等地位。
2面向对象方法及对测试的影响2.1、面向对象简介面向对象方法是一种把面向对象的思想应用于软件开发过程,指导开发活动的系统方法,简称OO方法。
它是建立在“对象”概念基础上的方法学。
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。
所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
2.2、面向对象方法对测试的影响(一)信息隐蔽对测试的影响。
面向对象的软件系统在运行时刻由一组协调工作的对象组成,对象具有一定的状态,所以对面向对象的程序测试来说,对象的状态是必须考虑的因素,测试应涉及对象的初态、输入参数、输出参数和对象的终态。
对象只有在接收有关信息后才被激活来进行所请求的操作,并将结果返回给发送者。
在工作过程中对象的状态可能被修改,产生新的状态,面向对象软件测试的基本工作就是创建对象,向对象发送一系列消息然后检查结果对象的状态看其是否处于正确的状态。
问题是对象的状态往往是隐蔽的,若类中未提供足够的存取函数来表明对象的实现方式和内部状态,则测试者必须增添这样的函数。
因此,类的信息隐蔽机制给测试带来了困难。
(二)封装性对测试的影响。
为了检查私有和保护属性的函数和数据,测试时要在原来的类的定义中增加一些专用函数来访问这些成员。
而且,测试应考虑到对象的初态、输入、输出和对象的终态,面向对象的封装性使对象状态的观察、测试用例选取、测试点的确定等带来困难。
(三)继承性对测试的影响。
继承使父类的属性和操作可以通过实例化产生的子类和对象所继承。
子类不但继承了父类的特征,还能对其进行重定义。
因此,继承的方法和重定义的方法在子类的环境中都要重新测试。
一般情况下分为单继承、多重继承和重复继承,多重继承和重复继承会出现在多个父类中重名的变量和函数的情况,容易引起混乱,同时使子类的复杂性显著提高,出现隐含错误的可能性大大增加,因此在实际中不提倡这种用法。
(四)多态性对测试的影响。
重载是多态的一种常见形式,它允许几个函数有相同的名字,而所带的参数类型不同。
它使得系统在运行时能自动为给定的消息选择合适的实现代码,但它所带来的不确定性,也使得传统测试实践中的静态分析法遇到了不可逾越的障碍。
而且它们也增加了系统运行中可能的执行路径,加大了测试用例的选取难度和数量。
这种不确定性和骤然增加的路径组合给测试覆盖率的满足带来了挑战。
3 软件测试的内容及测试过程3.1 软件测试的内容软件测试主要工作内容是验证(Verification)和确认(Validation ),下面分别给出其概念:验证(Verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。
(Do the right thing)1、确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;2、程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程;3、评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
确认(Validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。
即保证软件以正确的方式来做了这个事件(Do it right)1、静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;2、动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
3.2 软件测试的测试过程软件测试过程按测试的先后顺序可分为单元测试、集成测试、确认(有效性)测试、系统测试、验收(用户)测试。
1、单元测试:软件单元测试是检验程序的最小单位,即检查模块有无错误,它是在编码完成后必须进行的测试工作。
单元测试一般由程序开发者完成,因而单元测试大多是从程序内部结构出发设计测试用例,即采用白盒测试方法,当有多个程序模块时,可并行独立开展测试工作。
2、集成测试:在将所有的单元经过测试以后,接着进行集成测试。
集成测试也称综合测试,即将已分别通过测试的单元按要求组合起来再进行的测试,以检查这些单元之间的接口是否存在问题。
要求参与的人熟悉单元的内部细节,又要求他们能够从足够高的层次上观察整个系统。
集成测试阶段是以黑盒法为主,在自底向上集成的早期,白盒法测试占一定的比例,随着集成测试的不断深入,这种比例在测试过程中将越来越少,渐渐地,黑盒法测试占据主导地位。
3、确认测试:在集成测试完成之后,分散开发的各个模块将连接起来,从而构成完整的程序。
其中各个模块之间的接口存在的各种错误都已消除,此时可以进行系统工作的最后部分,即确认测试。
确认测试是检验所开发的软件是否能按用户提出的要求进行。
若能达到这一要求,则认为开发的软件是合格的。
确认测试也称为合格测试。
4、系统测试:软件在计算机系统当中是重要的组成部分,因此,在软件开发完成之后,最终还要和系统中的其他部分,比如硬件系统、数据信息集成起来,在投入运行以前要完成系统测试,以保证各组成部分不仅能单独的得到检验,而且在系统各部分协调工作的环境下也能正常工作。
尽管每一个检验有特定的目标,然而,所有的检验工作都要验证系统中每个部分均已得到正确的集成,并完成制定的功能。
系统测试要进行的几种必要测试:恢复测试、安全测试、强度测试、性能测试、正确性测试、可靠性测试、兼容性测试。
5、验收测试:验收测试时检验软件产品质量的最后一道工序。
验收测试通常更突出客户的作用,同时软件开发人员也有一定的参与。
6、测试后的调试:软件测试和软件调试有完全不同的意义。
测试的目的是现实错误,而调试的目的是发现错误或找出导致程序失效的错误原因,并修改程序以修正错误。
通常情况是在测试以后紧接着要进行调试,调试时测试之后的活动。
4 常用的软件测试方法4.1 黑盒测试黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。
在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。
很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
黑盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误:功能不正确或遗漏;界面错误;数据库访问错误;性能错误;初始化和终止错误等。
从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。
这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。
黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。
具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。
4.1.1 黑盒测试的流程1、测试计划首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制订黑盒测试的最高标准,以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。
2、测试设计将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响到测试结果的有效性)。