面向对象的软件测试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科生课程论文---文献综述
题目:面向对象的软件测试
姓名:
学号:
学院:软件学院
专业:软件工程
年级: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 软件测试的测试过程
软件测试过程按测试的先后顺序可分为单元测试、集成测试、确认(有效性)