收藏 分享(赏)

论文范文 基于规约的构件黑盒测试支持平台的设计与实现.doc

上传人:cjc2202537 文档编号:1198788 上传时间:2018-06-17 格式:DOC 页数:57 大小:551KB
下载 相关 举报
论文范文 基于规约的构件黑盒测试支持平台的设计与实现.doc_第1页
第1页 / 共57页
论文范文 基于规约的构件黑盒测试支持平台的设计与实现.doc_第2页
第2页 / 共57页
论文范文 基于规约的构件黑盒测试支持平台的设计与实现.doc_第3页
第3页 / 共57页
论文范文 基于规约的构件黑盒测试支持平台的设计与实现.doc_第4页
第4页 / 共57页
论文范文 基于规约的构件黑盒测试支持平台的设计与实现.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

1、硕士研究生学位论文题目: 基于规约的构件黑盒测试支持平台的设计与实现1基于规约的构件黑盒测试支持平台的设计与实现摘 要随着软件测试的开销在整个软件开发过程中所占的比重不断增大,高效的自动化测试越来越突显其在软件测试过程中的重要性。自动化测试除了能有效的降低测试开销、提高测试复用的水平、还可以弥补手工测试中测试充分度低,测试用例数量难以提高等不足。近年来,为了更好的实施测试自动化过程,大量的测试工具软件被开发出来。但随着软件本身的不断发展变化,新的测试对象、测试实施环境的改变都会导致原有的测试方法与测试工具不再适用。EJB 构件技术是近来年被广泛应用的商业化构件技术,它的应用同样带来了软件开发与

2、测试形式的转变。构件的开发与复用过程各自独立,开发者所发布的构件信息中能用于黑盒测试的往往有限。构件分布式的使用方式也使得测试过程的实施更加复杂化。为更有效的实施针对 EJB 构件的测试自动化,本文提出了一个以规约的自动化验证为核心的 EJB 构件黑盒测试方案。规约由构件测试者提出,是对构件功能的一种描述,用于指明在输入数据满足一定约束的条件下,构件的输出所应满足的约束。测试系统将依据这样的规约,生成可执行的 EJB 构件远程客户端检测程序与相应的测试数据,并自动化执行测试,通过在测试执行中判断规约是否被违反来达到对构件功能的验证。系统同时也实现了一种基于规约变异的测试数据分析方法,通过分析已

3、有测试数据杀死规约变异体的能力来估计测试所能达到的充分度,并在此基础上对测试数据进行一定的筛选与优化。为方便用户的使用和更全面的支持测试过程,本文还提出了一个基于Internet 的开放式构件黑盒式测试平台的设计。通过访问 Web 页面,用户可以方便的设定测试目标、组织和实施测试过程。平台提供对构件相关的测试信息与测试结果的统一管理,多用户间可以借助于测试平台实现测试信息的充分共享。在本文的最后,给出一个实例研究,并对将来的改进方向做了一些探讨。关键词:测试自动化、测试平台、构件规约、前/后置条件、测试数据生成、测试程序生成、测试充分度2The Design and Realization o

4、f Supporting Platform of Component Black-box Testing Based on SpecificationAbstractWith the increasing proportion of software test cost in the whole course of software development, efficient test automation is becoming more and more important in the process of software test. Automation test can not

5、only reduce the test cost, increase the level of test reusing, but also make up the disadvantages of low test coverage in manual test, and the low amount of the test data. In recent years, in order to put the process of the software test automation into practice, a great number of testing tools have

6、 been developed. But with the increasing development of software itself, the change of new test subjects and test environments will lead to the decreasing use of the utilization of the original test methods and tools. EJB technique is a business component technique which is widely used in recent yea

7、rs, its utilization also brings the changes of software development and software test. The development and reusing process of components are independent respectively, the component information, which is published by the developer used in black-box test tends to be very limited. The way of using make

8、s the process of test more complicated. In this thesis, in order to carry out test automation about EJB component more effectively, we put forward an EJB component black-box test project with the core of test automation of specification-based. Specification, put forward by the component tester, is a

9、 description of the function of the component, which aims to restrict the component output when the input data meets a certain restriction. Test system will, according to such a specification, create a test driver which included the called of the method of remote EJB object and corresponding test da

10、ta, carry out the test automation, and test a function of components by judging whether the specification is disobeyed in test process. The system also achieves a way of analyzing test data based on specification mutation, by analyzing the ability of test data killing specification mutant, estimates

11、 the test coverage, on which to filtrate and optimize the test data. In order to make it convenient to use and support the test process in a more comprehensive way, the author also puts forward a design based on the open component black-box testing platform by Internet. By visiting the Web page, the

12、 user can conveniently set testing goals, organize and carry out testing process. The platform supplies unified management about corresponding test information and test results for components, so that the different users can share the test information by the test platform. Finally, the author does a

13、 practical research, and probes into the improving direction in future.Key Word: test automation, test platform, component specification, pre-condition, post-condition, test data generation, test driver generation, test coverage3目 录第一章 引言 .11.1 软件测试与软件测试自动化 .11.2 构件及构件测试自动化 .21.3 现有自动化测试工具分析与比较 .41.

14、3.1 传统的商业化测试软件 .41.3.2 针对面向对象开发方法的软件测试工具 .41.3.3 PKUJDbCT 基于软件合约的自动化验证与测试工具 .51.4 本文的目标和主要工作 .61.5 论文的组织 .6第二章 相关背景 .82.1 相关测试技术 .82.1.1 基于合约的相关软件技术 .82.1.2 变异测试 .102.2 EJB 构件技术及测试问题 .122.2.1 EJB 构件技术 .122.2.2 EJB 构件技术对测试的影响 .15第三章 基于规约的 EJB 构件黑盒自动化测试技术 .163.1 基于构件规约的测试方法 .163.1.1 前/后置条件形式的构件规约 .173

15、.1.2 规约的形式化定义 .173.1.3 构件规约的检验 .193.2 测试方法的自动化实现 .203.2.1 构件实现信息的自动化提取 .203.2.2 测试数据的生成 .213.2.3 测试程序的生成 .223.3 基于变异测试的测试充分度度量与测试数据精化 .243.4 方法的优势与局限性 .25第四章 测试平台的设计与实现 .274.1 测试平台的设计目标 .274.1.1 测试平台基本构成与目标功能 .274.1.2 体系结构和工作流程 .284.2 数据存储层的设计与实现 .304.2.1 关系数据库与利用 EJB 实体 Bean 实现的数据访问 .314.2.2 利用的 XM

16、L 文件接口实现复杂数据存储 .324.3 业务逻辑层的设计与实现 .324.1.1 测试信息提取与分析部分设计与实现 .344.1.2 测试生成部分设计与实现 .364.1.3 测试执行 .404.4 WEB 形式表示层的设计与实现 .43第五章 实例分析研究 .465.1 待测试构件描述与功能规约 .465.2 基于规约的功能验证 .4745.3 规约变异与测试数据精简 .485.4 小结 .49第六章 结束语 .50参考文献 .51致 谢 .531第一章 引言1.1 软件测试与软件测试自动化软件测试是软件开发过程中用于保证软件质量的一种重要活动,其主要目标是揭示软件产品中所存在的错误与缺

17、陷。早期,软件测试被定义为“发现错误而运行一个程序或者系统的过程”Myers 79。在这一过程中,测试者设计测试用例,在相应的软件上执行测试用例,最后检查、分析执行后的结果,以找出软件中存在的缺陷。但随着软件测试活动对提高软件质量所起到的作用的不断加深,测试逐步发展为“为了度量和提高被测试软件的质量,对测试件进行工程设计、使用和维护的并发生命周期过程”Rick 02。 “尽早开始软件测试,不断进行软件测试”已经成为软件开发活动的重要原则。虽然软件测试并不能保证某个系统的运转 100%的正确,测试用例的执行结果也并不是总能代表软件运行的一般情况,但测试确实能帮助确保一个软件产品满足其需求,因为它

18、能充分保证应用软件做它要做的事。近年来,人们对软件质量的要求不断提高,软件本身的复杂度也越来越高,这些因素最终导致软件测试活动的开销直线上升。软件测试也因此成为软件开发中代价最为昂贵的一种活动,往往会超过项目开发总投入的 50%,在一些大型的软件项目中更是如此。如何有效并且高效的实施软件测试?在软件测试技术发展的历程中,人们就这一问题做出了多方面的尝试,如:寻求更有效的测试技术,不断改进软件测试过程Kit 95, Craig 02等。但从上世纪 90 年代开始,人们普遍意识到通过测试工具实现软件测试自动化也是解决这一问题的重要途径之一。软件测试自动化是在软件测试过程中利用规范的机制和系统化的解

19、决办法使测试任务和操作自动化的活动和努力Gao 03。在下文中,为了描述简便,我们以测试自动化来指代软件测试自动化。总体来看,软件测试人员希望能通过软件测试自动化。实现以下三个方面的目标:1) 将测试人员从繁重的体力劳动中解放出来;2) 加速软件测试过程,减少其在整个软件开发过程中所占的开销;3) 通过在有限时间内达到一定的预定义测试准则,提高测试的质量与效率。虽然无论自动执行还是手工执行都不影响测试的有效性和仿效性,但自动测试通常要比手工测试经济的多。自动化测试可以运行更多、更频繁的测试;可以执行一些起手工测试难于完成或不可能做到的测试;同时也使测试具有一致性和可重复2性。自动测试方法越好,

20、长期使用获得的收益也就越大。因此,测试工具,尤其是自动化测试工具已成为测试活动中不可或缺的一部分。以至于有学者提出测试主要还是以实现特定应用的测试设计为目标的测试自动化系统的开发过程Binder 00。一般而言,测试自动化并不代表对所有任务都自动化实现。但能够自动化实现的任务越多,所实现的任务越难,其实施所带来的收益往往也越大。这也使得可自动化实现的测试任务成为衡量测试自动化过程优劣的一种尺度。文献Gao 03中给出了这样一个衡量软件测试自动化成熟程度的五级模型(图 1-1)。系统化的测试生成系统化的测试执行控制系统化的测试信息管理手工测试Level3:AutomaticLevel2:Repe

21、atableLevel1:InitialLevel4: Optional系统化的测试分析与度量Level0:No test tools图 1-1 软件测试自动化成熟度模型1.2 构件及构件测试自动化在长期软件测试实践活动中,由于软件测试方法的不断发展变化,测试自动化的组织实施与相关工具也会随之改变。而新的软件开发或设计方式的出现更是会导致整个测试过程的改变。近年来基于构件的软件复用技术的广泛应用也引发了这样的问题。构件是指应用系统中可以明确辨识的构成成分,而可复用构件是指具有相对独立的功能和可复用价值的构件杨芙清 99。如何在软件开发中充分利用已有的开发成果、避免重复劳动是软件复用技术所希望解

22、决的问题,而软件构件技术是支持软件复用的核心技术。近年来,构件技术的飞速发展与广泛应用已充分证明了该技术的有效性,同时也将如何有效的对基于可复用构件技术所开发的软件进行充分的测试这一问题摆在了测试人员的面前。文献Weyuker 98认为,构件的测试也可以分为三个阶段:单元测试、集成测试和系统测试。但在不同阶段构件测试活动的参与者以及测试所能依赖的信息也不尽相同。与传统的软件测试相比,其差异性主要体现在Ma 01:1) 构件开发者由于条件约束,只能对构件进行单元测试,不能对构件的执行3环境和用户的使用模式进行完全准确的预测,故不能完全、彻底地对构件进行测试,并且很难确定何时结束测试;2)构件复用

23、者和第三方测试人员则面临着构件集成测试与系统测试,因为无法得到构件的源代码及详细的设计信息,通常只能对构件进行黑盒测试,即通过调用构件的方法,而后观察执行的结果来判断构件的行为是否正确。而这些差异也为软件测试自动化带来了一些新的问题,主要体现在以下几个方面: 构件特有的软件复用方式,导致测试活动被分隔为单元测试与集成(系统)测试两个相对独立的过程,由不同的测试者在不同的时间段分别完成。测试活动原有的集成性被打破。 构件本身通常无法独立运行,这使得测试自动化活动必须要依赖于一定的外部运行环境。 尽管各种商业化构件技术已被广泛应用,但构件功能规约的形式化表述并没有被纳入其各自的规范。缺乏标准的功能

24、规约,使得黑盒测试技术难以有效应用。而随着软件复用技术的逐步深入推广,构件技术也逐渐走向规范化。CORBA、J2EE 等构件交互与复用技术的不断完善,使得构件软件逐步走向规范化,目前已成为商业化软件构件开发的主流模式。这一软件发展中新的变化,使得构件软件测试自动化在原有的特征基础上增添了两个新的特性。一是构件的广泛复用,使得即使是对同一构件软件对象,其测试主体也由两个变为多个。开发者、不同的复用方以及第三方认证机构都有可能根据各自的测试需求来对其组织不同的测试活动。而构件开发者与复用者之间也会出现多对多的关系。这就要求测试信息能够充分共享,以使测试过程能够有机的融合。而测试信息的收集与管理平台

25、,也应具有开放性,以保证能方便的接纳新的测试者。二是商业化的构件软件有着标准的构成形式、规范的接口定义、严格的复用环境与复用方式。这一特征既为构件测试自动化带来其有利的一面,也有其不利因素。标准化的定义为测试自动化去除了一些组织实施过程中的不确定性,使其中的某些任务更容易自动化实现。但由于构件所拥有的测试信息同样也受到了构件规范的严格限制,不能随意的扩充,从而限制了测试所能采用的方式与技术。由于这些新的特征的出现,使得原有的软件自动测试技术与工具难以全面的支持新的面向构件软件的软件测试,从而无法达到理想的自动化测试目标。同时,这些特征也表明,简便的行之有效的黑盒测试方法与工具,可以保证各类测试

26、人员都能有效的实施测试,是全面的提高构件测试自动化水平的有效途径。41.3 现有自动化测试工具分析与比较1.3.1 传统的商业化测试软件该类软件以传统的软件开发设计过程为基础,功能较为全面的覆盖了软件测试自动化中各种不同类型的任务,表 1-1 列举了当前应用范围比较广泛的几种商业化测试软件。表 1-1 商业化软件测试工具功能列表测试信息管理 测试执行控制 黑盒测试生成 白盒测试生成 测试覆盖分析 负载/性能测试 回归测试 代码执行监测DevPartner Studio from Compuware Corporation Insure+ from Parasoft Mercury Intera

27、ctive Rational Software from IBM Segue Software TestWorks from Software Research 从表 1-1 中可以看出,这些工具的功能更偏重于测试信息的管理与测试执行或是运行时刻的检测与捕捉重放,而对于面向对象或基于构件的软件开发方法并没有提供更有针对性的支持。尤其在黑盒测试数据生成技术方面,尽管 IBM 公司的Rational 系列软件可以借助于其软件建模工具 Rational Rose,生成针对软件模型的黑盒测试程序。但这对需要待测试软件具有规范的形式化描述,而对于大多数构件而言,并不具备这样的条件。1.3.2 针对面向对

28、象开发方法的软件测试工具该类工具出现在面向对象的软件开发方法逐渐成熟后。工具针对面向对象的分析设计技术给软件开发所带来的新特性给出了具有针对性的解决方案。下面简要介绍其中比较典型的三种工具: ADLScopeChang 98:一种基于规约的单元测试辅助工具该工具主要通过特定的断言定义语言(Assertion Definition Language, ADL)对 C 语言形式的对象接口进行功能描述。被测试单元的功能规约体现为一组一阶谓词逻辑的断言。断言同样以 C 语言表述。测试过程中,以测试对这样的一组断言所能达到的覆盖程序作为分析测试充分度的准则。该工具对测试的自动化执行、测试结果与测试充分度

29、的分析提供支持。 ObjectTester:以 C+语言实现的类为基本测试对象的测试工具比较内容工具名称5该工具基于对源代码的分析,按照测试者以 Makefile 文件形式提供的测试脚本自动生成类实例,并按特定的接口参数调用实例的所有公有方法,完成测试。有关该工具的介绍参见 。 JUnit/Cactus:一组开源的面向 Java 语言的自动化测试辅助工具JUnit 主要用于在用户定义了基本的单元测试程序后,工具提供特定的测试运行框架,自动化运行相关单元测试任务,并动态的捕捉测试运行中断言被违反的情况,最终自动化生成测试报告。该工具可以方便的支持大规模的回归测试。Cactus 主要用于实现对 s

30、ervlets、JSP、EJB 等分布式应用技术提供容器测试服务。工具自动实现对服务器端测试对象的封装,以捕捉测试对象与所在服务容器间的交互异常。同时该工具还借助于 JUnit 工具实现客户端测试驱动程序的自动化执行。综合分析以上三种工具的特征可以看出,该类测试工具的不足主要体现在以下几点:1) 测试环境封闭,无法满足构件复用者与开发者之间的信息交互;2) 缺乏搭建构件测试所需的辅助测试环境的能力;3) 测试工具主要面向软件开发者提供服务,对于软件复用者的自动化测试难以提供有效支持;1.3.3 PKUJDbCT 基于软件合约的自动化验证与测试工具PKUJDbCT 工具刘江红 04是由北京大学软

31、件工程实验室开发的一种基于 Java语言的合约检查与自动化验证工具。该工具基于合约式设计(Design by Contract)的思想,针对不同软件对象在发生交互时各自所应承担的责任,提供合约描述的语法正确性检查与运行时检测。其主要功能如下:1) 自动提取 Java 语言书写的源程序中以注释形式表述的方法合约;2) 对提取出来的合约进行正确性检查;3) 根据源文件,完成对前置条件、后置条件、不变式、循环变式与不变式形式合约的自动插装,生成具有合约检查能力的源程序;4) 动态执行一定的测试以检验软件实现是否符合合约描述。从以上功能可以看出,以合约的验证为基础,该工具提供了一定的测试执行与验证功能。其对后置条件或是不变式的验证在一定程度上体现了对软件功能的约束。尽管是以注释的形式书写于源程序中,但由于合约主要与软件的功能接口相关,所以仍是一种黑盒方式的验证。不难发现,这种以简单的形式化描述给出一组条件,而后对其进行自动化的运

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报