基于构件的软件测试若干问题分析

发表于:2013-1-18 11:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:冯茂岩    来源:51Testing软件测试网采编

分享:

  摘要:论述了构件软件测试中的相关问题,重点讨论了构件软件的缺陷分析,构件软件的测试策略,测试充分性标准,构件测试中存在问题和挑战以及可能的解决方案探讨等。通过研究,体会到构件技术给软件开发带来人们所期望的好处的同时,也带来了新的问题和挑战,人们对构件技术的运用,特别是对构件软件测试制品的运用,应该更加谨慎。

  关键词:软件测试;集成测试;系统测试;测试充分性;

  1、引言

  基于构件的软件工程以集成以前存在的软件构件构造新的软件系统为目的。由于实际的工程实践对软件系统弹性及可维护性的需求越来越高,相对于以往的软件开发模式,基于构件的软件工程有着潜在的有效降低开发成本、加快开发进度、减小维护负担的可能性,因此得到了软件开发行业的重视。另一方面,也带来一些新的问题,如,需要新的方法来评价基于构件的软件系统质量,如何隔离系统中的单个构件的错误,以及如何为针对众多第三方构件的集成模型提出一个有效的测试策略等。而随着软件构件技术的发展,人们意识到基于构件的软件产品的质量是依赖于软件构件的质量和有效的软件测试过程。构件软件是由一组构件组成,构件通过相互作用一起提供期望的行为。目前用于构成软件系统的构件的三个来源为:a)第三方的商用构件;b)遗产代码;c)内部构件库。基于构件的软件开发过程包括构件构架开发、构件组装和系统维护等阶段,所以构件软件测试就应该从开发人员、组装人员和维护人员三个方面来进行有效测试。

  为此,构件软件测试的基本内容包括:(1)单元测试:软件系统中每一个单个的构件都经过测试;(2)集成测试:对由已测试过的构件集成的子系统作为一个实体进行测试;(3)系统测试:对由已测试过的子系统形成的系统作为一个实体进行测试;(4)回归测试:对软件系统所作的任何修改以后都必须进行相应的重新测试。

  构件软件测试的最终目标是:(1)检查构件是否符合规约并实现了功能需求;(2)在开发之前,检查是否对构件指定了正确和完整的结构及交互需求,并在软件系统的实现过程中得到反映。

  2、构件软件的可能缺陷

  构件软件集成中会遇到的两类缺陷:服务相关的缺陷和结构相关的缺陷。服务相关的缺陷可能是语法缺陷、语义缺陷和非功能缺陷;结构相关的缺陷(即与系统结构相关的缺陷)可能来源于有问题的连接件,有问题的公共基础设施和有问题的拓扑结构。

  (1)语法缺陷:由于交互作用的语法决定了请求的结构,所以对一个请求进行服务的必要条件就是请求构件和服务构件交互的语法形式是一致的。

  (2)语义缺陷:是指对构件行为的假设(明确或隐含)出现冲突;错误的实现或者不适当的执行流都会导致语义缺陷。一般来说,语义缺陷有以下几种:误解的行为缺陷、误解的参数缺陷、误解的事件产生缺陷和误解的交互协议缺陷等。误解的行为缺陷是指当一个构件向另一个构件请求服务时,期望的服务和提供的服务不一致。误解的参数缺陷是指一个构件错误解释了某个服务的参数。误解的事件产生缺陷是误解的行为缺陷的相反的情况,即响应某个事件的构件识别出事件,但对事件含义的假设是错误的。每个构件都能够由多个请求序列激发,但是不是所有的序列都是正确的,也不是所有的序列都会产生期望的行为。误解的交互协议缺陷就是指一个正确的请求流产生一个没有预料到的行为。

  (3)非功能缺陷:主要是指来源于非功能需求带来的缺陷。在构件软件中,主要的非功能需求涉及接U(如用户友好,可用性)、性能(如时间和内存)、服务质量(如可靠性)、过程(如高质量构件产生的标准)和成本等。

  (4)有缺陷的连接件:有缺陷的连接件可能包含一个不匹配协议缺陷或者不兼容数据模型缺陷。不匹配协议缺陷是由于使用的连接件协议中缺乏一致性导致的。不兼容数据模型缺陷是由于连接件不能传递迫切需要的数据导致的。

  (5)存在于公共基础设施中的缺陷:构件公共基础设施支持构件的执行和部署。每个构件都会对系统的本质、可用服务和结构等作一些假设,但是对独立开发假设来说,它是不可能预测由其它构件所作的假设。当开发一个基于构件的系统时,这些假设可能发生冲突。

  (6)存在于拓扑结构的缺陷:在部署阶段,构件装配人员定义基于构件系统的拓扑结构,把构件连接到一起。构件开发人员并不知道现在开发的构件将来如何被使用。所以构件装配人员将独自面对这种与系统的拓扑结构相关的任何问题。

  3、构件软件可测试性

  一个理想的可测试软件构件不仅是可配置的和可执行的,而且支持标准的构件测试设备。和普通构件不同的是,可测试的构件应该具有下列特征:

  (1)可测试构件必须是可跟踪的:可跟踪的构件在构造时内置一个跟踪机制,用于按照系统的方式来监控构件的不同行为;

  (2)可测试的构件必须有一组内置的接口,便于和一些定义明确的测试设备交互。这可以节约测试人员要花在构件测试方面的精力,并且有助于控制构件的可跟踪性;

  (3)尽管可测试的构件具有明显的功能特征、数据和接口,它们还必须具有一个定义明确的测试构架模型和一些内置的测试接口,以便支持对构件测试套件和构件测试床的交互。

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号