论文部分内容阅读
【摘要】本文研究了构件软件的相关概念问题,构建软件的测试规格,然后,进一步分析了传统的构件软件测试技术,最后,着重研究了当下的构件化软件系统测试技术,为提高构件软件测试技术提供参考。
【关键词】构件软件;测试技术;研究进展
中图分类号: TJ06 文献标识码: A 文章编号:
一、前言
构件软件的测试技术对于我们使用构件软件非常重要,能否正确的研究出构件软件测试技术决定了我们未来能否更好的利用构件软件。因此,对于构件软件,需要制定正确的测试技术对其进行测试,以提高其性能,发现问题,解决问题。
二、构件软件概述
构件是面向软件体系架构的可复用软件模块。构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。1995年,Ian.oraham给出的构件定义如下:构件(Component)是指一个对象(接口规范、或二进制代码),它被用于复用,接口被明确定义。构件是作为一个逻辑紧密的程序代码包的形式出现的,有着良好的接口。像Ada的Package、Smalltalk-80和C++的class和数据类型都可属于构件范畴。但是,操作集合、过程、函数即使可以复用也不能成为一个构件。开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。软件构件技术是软件复用的关键因素,也是软件复用技术研究的重点。
三、构件软件测试规格
构件测试规格C(omponeniTestBnehc,CTB)由构件开发者给出一个测试规格,其中描述了构件的行为(imPlemeniation),接口和相应的测试集,用户可以在实际系统中使用这个规范进行测试。规范是以XML形式提供的可以不受操作系统的限制。提供了一系列构件测试工具,可以把XML形式的规范转化为C或JAVA执行。可以以三种方式生成测试,手工的、计算机辅助的和自动化的,比较灵活:使用XMI语言描述测试规格,可移植性好;支持符号执行,可以通过符号执行得到测试输出而无需实际运行测试;缺点是符号执行速度慢。
四、传统的软件测试 1 软件测试的重要性、目的和原则 为了能够保证交付的软件使客户满意,需要在软件开发、集成和形成系统之后进行充分、全面、有效的测试,软件测试是保证软件质量的重要手段。 测试过程贯穿在软件开发的整个生命周期过程,覆盖范围是很广泛的,包括需求分析,设计文档、程序代码等。目前比较侠义的理解是软件测试就是对程序代码的测试。 软件测试中应该遵循主要原则包括:
(一)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;
(二)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;(三)序员应避免检查自己的程序;
(四)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件;
(五)充分重视测试中的群集现象;
(六)严格执行测试计划,排除测试的随意性;
(七)应当对每一个测试结果做全面的检查;
(八)妥善的保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。 2 传统的软件测试主要方法和技术 通常依照如下方法对软件测试进行分类: (一) 软件开发过程中的测试:包括单元测试;集成测试;系统测试; 验收测试。 (二) 软件产品测试。测试对象是已经或即将产品化的软件。包括:功能测试;性能测试;β测试;Benchmark测试。 (三) 专门的软件测试:包括可靠性测试;标准符合性测试;互操作性测试;安全性测试;强度测试。
五、构件化软件系统测试技术研究 1对构件测试方法的分析 目前,对构件的测试主要是通过以下几个方法: (一)基于构件使用规范说明的测试。以下方法都与构件开发方有着一定联系,本方法按照构件运用方就应用环境与规范给予的数据当作测试用例,只局限于黑盒测试中来使用。 (二)内置测试。对于构件开发方,他们把有着可执行性的测试用例内置于构件内,同时当作构件的常用功能,在构件集成于实际应用环境的情况下,对其中测试用例进行运行,进而进行集成测试; (三)元数据。针对在集成测试的时候,构件信息缺乏等一些问题,构件开发方将关于构件的基本信息通过元数据这一合理形式,给予构件测试或者使用方,确保测试顺利地实施,提升构件的可测试性是它的核心内容; (四)可测试体系结构。由构件开发方会提供与构件相配套的可测试体系,这样构件使用方在实施测试的情况下,能对测试用例进行直接执行,和上述各个方法相比,不同的是,该测试信息通过规范的形式附加于构件之上,当运行的时候,没有占用内存。 (五)证明策略。一般情况下,由于构件证明不同的承担方,构件证明主要包括以下几类:首先是构件使用方构件证明,其次是第三方构件证明,最后为构件开发方构件证明。
2 构件测试技术中存在的一些主要问题 对于构件集成测试,很难对其实施,主要有两方面的原因:异构性的存在以及相关信息的缺少。针对异构性,其表现为:同一个构件处于相同规范下,具有不相同的实现方法;不相同的构件能使用不同平台的不同程序语言进行实现;由于构件使用方与开发方两方很少进行交换信息,便导致了信息缺乏,构件开发方主要对开发构件的应用环境没有足够了解,所以,它进行的构件测试只可以面对假设的应用环境,但是实际环境和假设的环境之间一定具有差别,在实际的应用中,各个构件在动态交互过程中可能会出现数据交换不能有效兼容等问题。从另一方面,构件的源代码因为相对构件运用方法有着某些未知性,于是,對其实施静态分析是很难进行的。更别说对相关数据依赖以及控制依赖关系的获得,进行有关测试用例的构造,进行测试,确认出进行测试需要的充分性准则是很难的。所以,在构件测试技术中,应该考虑以下几个问题: (一)怎样利用系统方法对测试驱动程序与插针进行构建。对于构件测试驱动程序,其一定是基于脚本的程序,同时仅仅对其黑盒功能进行执行。主要有基于场景以及规范的测试驱动程序;各个测试探针进行构件行为或者黑盒功能的合理模拟,在当前,还是主要通过基于操作脚本以及基于模型的方法。 (二)怎样合理构造出可重用的构件。就是开发系统方法以及工具安装可重用的测试程序,进而进行各种测试资源的存储及管理,主要有测试脚本、测试用例以及数据。在当今,两个方向较为突出,一个为于构件内部中进行构件测试的创建,内置测试就是实例;另外方向是使用可直接插拔技术进行一套测试程序的创建,不仅牵涉了测试访问接口以及标准化测试信息格式,还牵涉到测试数据库模式与定义以及开发新的可插拔技术支持构件单元测试。 (三)怎样正确进行可重用及通用的构件测试平台的构建。在一般情况下,测试检索以及执行、测试结果检查以及报告组成了测试执行环境。此测试平台可以根据不同语言及不同技术开发实现的构件是它的主要问题。 (四)怎样合理进行可测试构件的构建。其牵涉到三个问题,就是定义及设计可测构件的测试接口与公共结构、开发系统方法进行可测构件的构建、最小化系统资源及开销。
六、结束语
构件软件测试技术研究需要我们制定正确的测试方法,同时,对于测试的方式方向,我们也需要进行筛选,尽量实现使用最正确的测试方向和测试的方法,这样才能够提高我们对构件软件测试的技术水平,为我们更好的使用构件软件奠定基础。
参考文献
[1]梅宏,杨芙清.构件化软件设计与实现[M].北京:清华大学出版社,2008
[2]许帧.基于构件的软件开发方法及实现[J].软件导刊,2009,11:17-19
[3]郑人杰.实用软件工程[M].2版.北京:清华大学出版社,1999:169.
[4]李延春.软件构件技术的现状与未来[J].计算机工程与应用,2003,3(1):86-96.
【关键词】构件软件;测试技术;研究进展
中图分类号: TJ06 文献标识码: A 文章编号:
一、前言
构件软件的测试技术对于我们使用构件软件非常重要,能否正确的研究出构件软件测试技术决定了我们未来能否更好的利用构件软件。因此,对于构件软件,需要制定正确的测试技术对其进行测试,以提高其性能,发现问题,解决问题。
二、构件软件概述
构件是面向软件体系架构的可复用软件模块。构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。1995年,Ian.oraham给出的构件定义如下:构件(Component)是指一个对象(接口规范、或二进制代码),它被用于复用,接口被明确定义。构件是作为一个逻辑紧密的程序代码包的形式出现的,有着良好的接口。像Ada的Package、Smalltalk-80和C++的class和数据类型都可属于构件范畴。但是,操作集合、过程、函数即使可以复用也不能成为一个构件。开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。软件构件技术是软件复用的关键因素,也是软件复用技术研究的重点。
三、构件软件测试规格
构件测试规格C(omponeniTestBnehc,CTB)由构件开发者给出一个测试规格,其中描述了构件的行为(imPlemeniation),接口和相应的测试集,用户可以在实际系统中使用这个规范进行测试。规范是以XML形式提供的可以不受操作系统的限制。提供了一系列构件测试工具,可以把XML形式的规范转化为C或JAVA执行。可以以三种方式生成测试,手工的、计算机辅助的和自动化的,比较灵活:使用XMI语言描述测试规格,可移植性好;支持符号执行,可以通过符号执行得到测试输出而无需实际运行测试;缺点是符号执行速度慢。
四、传统的软件测试 1 软件测试的重要性、目的和原则 为了能够保证交付的软件使客户满意,需要在软件开发、集成和形成系统之后进行充分、全面、有效的测试,软件测试是保证软件质量的重要手段。 测试过程贯穿在软件开发的整个生命周期过程,覆盖范围是很广泛的,包括需求分析,设计文档、程序代码等。目前比较侠义的理解是软件测试就是对程序代码的测试。 软件测试中应该遵循主要原则包括:
(一)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;
(二)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;(三)序员应避免检查自己的程序;
(四)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件;
(五)充分重视测试中的群集现象;
(六)严格执行测试计划,排除测试的随意性;
(七)应当对每一个测试结果做全面的检查;
(八)妥善的保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。 2 传统的软件测试主要方法和技术 通常依照如下方法对软件测试进行分类: (一) 软件开发过程中的测试:包括单元测试;集成测试;系统测试; 验收测试。 (二) 软件产品测试。测试对象是已经或即将产品化的软件。包括:功能测试;性能测试;β测试;Benchmark测试。 (三) 专门的软件测试:包括可靠性测试;标准符合性测试;互操作性测试;安全性测试;强度测试。
五、构件化软件系统测试技术研究 1对构件测试方法的分析 目前,对构件的测试主要是通过以下几个方法: (一)基于构件使用规范说明的测试。以下方法都与构件开发方有着一定联系,本方法按照构件运用方就应用环境与规范给予的数据当作测试用例,只局限于黑盒测试中来使用。 (二)内置测试。对于构件开发方,他们把有着可执行性的测试用例内置于构件内,同时当作构件的常用功能,在构件集成于实际应用环境的情况下,对其中测试用例进行运行,进而进行集成测试; (三)元数据。针对在集成测试的时候,构件信息缺乏等一些问题,构件开发方将关于构件的基本信息通过元数据这一合理形式,给予构件测试或者使用方,确保测试顺利地实施,提升构件的可测试性是它的核心内容; (四)可测试体系结构。由构件开发方会提供与构件相配套的可测试体系,这样构件使用方在实施测试的情况下,能对测试用例进行直接执行,和上述各个方法相比,不同的是,该测试信息通过规范的形式附加于构件之上,当运行的时候,没有占用内存。 (五)证明策略。一般情况下,由于构件证明不同的承担方,构件证明主要包括以下几类:首先是构件使用方构件证明,其次是第三方构件证明,最后为构件开发方构件证明。
2 构件测试技术中存在的一些主要问题 对于构件集成测试,很难对其实施,主要有两方面的原因:异构性的存在以及相关信息的缺少。针对异构性,其表现为:同一个构件处于相同规范下,具有不相同的实现方法;不相同的构件能使用不同平台的不同程序语言进行实现;由于构件使用方与开发方两方很少进行交换信息,便导致了信息缺乏,构件开发方主要对开发构件的应用环境没有足够了解,所以,它进行的构件测试只可以面对假设的应用环境,但是实际环境和假设的环境之间一定具有差别,在实际的应用中,各个构件在动态交互过程中可能会出现数据交换不能有效兼容等问题。从另一方面,构件的源代码因为相对构件运用方法有着某些未知性,于是,對其实施静态分析是很难进行的。更别说对相关数据依赖以及控制依赖关系的获得,进行有关测试用例的构造,进行测试,确认出进行测试需要的充分性准则是很难的。所以,在构件测试技术中,应该考虑以下几个问题: (一)怎样利用系统方法对测试驱动程序与插针进行构建。对于构件测试驱动程序,其一定是基于脚本的程序,同时仅仅对其黑盒功能进行执行。主要有基于场景以及规范的测试驱动程序;各个测试探针进行构件行为或者黑盒功能的合理模拟,在当前,还是主要通过基于操作脚本以及基于模型的方法。 (二)怎样合理构造出可重用的构件。就是开发系统方法以及工具安装可重用的测试程序,进而进行各种测试资源的存储及管理,主要有测试脚本、测试用例以及数据。在当今,两个方向较为突出,一个为于构件内部中进行构件测试的创建,内置测试就是实例;另外方向是使用可直接插拔技术进行一套测试程序的创建,不仅牵涉了测试访问接口以及标准化测试信息格式,还牵涉到测试数据库模式与定义以及开发新的可插拔技术支持构件单元测试。 (三)怎样正确进行可重用及通用的构件测试平台的构建。在一般情况下,测试检索以及执行、测试结果检查以及报告组成了测试执行环境。此测试平台可以根据不同语言及不同技术开发实现的构件是它的主要问题。 (四)怎样合理进行可测试构件的构建。其牵涉到三个问题,就是定义及设计可测构件的测试接口与公共结构、开发系统方法进行可测构件的构建、最小化系统资源及开销。
六、结束语
构件软件测试技术研究需要我们制定正确的测试方法,同时,对于测试的方式方向,我们也需要进行筛选,尽量实现使用最正确的测试方向和测试的方法,这样才能够提高我们对构件软件测试的技术水平,为我们更好的使用构件软件奠定基础。
参考文献
[1]梅宏,杨芙清.构件化软件设计与实现[M].北京:清华大学出版社,2008
[2]许帧.基于构件的软件开发方法及实现[J].软件导刊,2009,11:17-19
[3]郑人杰.实用软件工程[M].2版.北京:清华大学出版社,1999:169.
[4]李延春.软件构件技术的现状与未来[J].计算机工程与应用,2003,3(1):86-96.