(计算机软件与理论专业论文)开放的分布式结构软件自动测试系统的构建.pdf_第1页
(计算机软件与理论专业论文)开放的分布式结构软件自动测试系统的构建.pdf_第2页
(计算机软件与理论专业论文)开放的分布式结构软件自动测试系统的构建.pdf_第3页
(计算机软件与理论专业论文)开放的分布式结构软件自动测试系统的构建.pdf_第4页
(计算机软件与理论专业论文)开放的分布式结构软件自动测试系统的构建.pdf_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 由于软件规模和复杂性的增加,软件测试技术研究和工具开发滞后,软件测试中存在 大量的手工劳动,从而使得软件测试的效率很低,费用很高。而且,由于软件测试仍然是 目前和今后相当长一段时问内保证大型软件质量和可靠性的主要手段。人们需要开发新的 测试方法来提高测试效率。 本文提出了一个开放的分布式结构软件自动测试系统的概念,并详细阐述了这个系统 的三级功能模型。分布式系统结构是在网络环境下充分利用网上有效资源的有效手段,本 文将其引入到软件测试领域,设计了网络环境下的分布式自动软件测试系统,并以o c r 产品测试的应用为例,具体描述了系统的功能实现。 关键词:软件测试,测试效率,分布式结构,软件自动测试 a b s t r a c t w i t ht h e p r o b l e mt h a t d o m a i n sb e c o m em o r ea n dm o r e c o m p l e x ,r e l a t i v e s c a l ea n d c o m p l e x i t yo fs o f t w a r ei n c r e a s e s ,s o f t w a r et e s t i n gt e c h n i q u e sa n dt o o l sa r en o ts u f f i c i e n tf o r t e s t i n g l a r g ed e a lo fm a n u a ll a b o ri n s o f t w a r e t e s t i n gm a k e si t l o we f f i c i e n ta n de x p e n s i v e b e c a u s es o f t w a r et e s t i n gw i l lc o n t i n u et ob ea ni m p o r t a n tm e t h o df o re n s u r i n gc o r r e c t n e s so f l a r g e s c a l es o f t w a r es y s t e m s ,p e o p l es h o u l dd e v e l o pn e wt e s t i n gm e t h o d sf o re n h a n c i n gt e s t i n g p o w e r t h i s p a p e rp r e s e n t s ac o n c e p to fo p e ns y s t e mf o ra u t o m a t i cs o f t w a r et e s t i n gb a s e do n d i s t r i b u t e df r a m e w o r k ,a n de x p o u n d st h i r dc l a s sf u n c t i o nm o d e l d i s t r i b u t e ds y s t e mf r a m e w o r k i s w i d e l y u s e dt om a k ef u l lu s eo ft h er e s o u r c eo v e ri n t e m e t t h i s p a p e rp r e s e n t s a n e t w o r k b a s e da u t o m a t i cs o f t w a r et e s t i n gs y s t e mw i t hd i s t r i b u t i o na r c h i t e c t u r e ,a n dt a k e o c rs o f t w a r et e s t i n ga sa ne x a m p l e i ti m p l e m e n t st h em a i nf u n c t i o no ft h es y s t e m k e y w o r d s :s o f t w a r et e s t i n g ,t e s t i n gp o w e r ,d i s t r i b u t e df r a m e w o r k ,a u t o m a t i c s o f t w a r e t e s t i n g 南开大学硕士生毕业论文开放的分布式结构软件自动测试系统的构建 第零章绪论 在开发软件系统的过程中,面对复杂的问题,人的主观认识不可能完全符合客观事实, 与工程密切相关的各类人员之间的通信和配合也不可能完美无缺。因此,在软件生存周期 的每个阶段,都不可避免的会产生错误。我们力求在每个阶段结束之前,进行检查。但是 检查并不能发现所有差错。而且在编码过程中,还会不可避免的带来新的错误。这样就会 对软件产品的质量造成影响。而软件测试是保证软件质量的关键,它是对需求分析,设计 和编码的最后复审。 软件测试可以用来提高软件产品的质量,但却不可能解决所有的软件质量问题。 d j j k s t r a 观察到“程序测试可以表明缺陷的存在,但决不能证明没有缺陷”,一个正确程 序的彻底测试将穷举每一个输入,并都能通过,而这样彻底的测试是不可能的。所以现在 软件测试的主要任务还是尽可能的发现错误。但是发现错误也许是要花很大的代价,这样 就需要在代价和质量之间做到很好的平衡。在一定的测试代价的前提下,我们为了得到尽 可能高的质量,就需要不断提高软件测试的效率。为了切实提高软件测试的效率,人们应 该从改善测试过程和提高测试方法的效率来着眼。 现代计算机的应用领域越来越广,软件规模也相应的越来越大,软件测试的内容也就 很庞大复杂。传统意义上的软件测试方法大多是利用手工方式来进行的,这种方法不能适 应现代的大规模的软件测试。而现有的自动测试方法和工具也具有一些缺点。以o c r 产 品的测试为例,每一版本的测试都包括大量的数据样本,其中有不同语言、不同字体、不 同字号等等,这些情况的不同组合形成了几万页的数据样张。如此大的数据量仅靠单机的 自动测试也是很耗费时间的,因此设计网络环境下的自动测试系统,充分利用网络上的卒 闲资源,是提高工作效率的必然考虑。 本文所设计的基于分布式结构的软件自动测试系统,它的主要目的在于首先尽量减少 人为干预的测试过程,这样可以最大限度的减少人为错误。其次,可以高效率的利用机器 资源,占用机器的空闲时问。最后可以对软件产品进行充分的测试,网络上的机器类型繁 多,它们可以为软件测试提供不同的平台。另外,由于有多个机器参与测试,使得测试范 围扩大,测试准确性提高。 在本文中讨论了一个开放的基于分布式结构的软件自动测试系统功能模型,它是一个 具有三层结构的模型。各层之间通过网络通信。具体描述了它的各级单元的功能,这些单 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 元组成了一个完整的自动测试系统。详细阐述了其中的关键技术实现方法,并给出了具体 的系统测试数据。 本文的组织结构如下: 第一章是软件测试的知识简介,概要描述了软件测试的内容、方法和流程等等。 第二章是软件测试自动化的相关内容,介绍了几种自动化测试工具和一些常见的分布 式结构的软件自动测试系统。 第三章是本文的核心部分,具体阐述了由作者设计的一个开放式的分布式结构的自动 测试系统的功能模型,并着重指明了其中的关键技术实现。 第四章是介绍了一个基于第三章模型的实际应用系统,这个系统是用来对o c r 产品 进行测试的,并给出了试验数据。 第五章是对整个系统的总结,也提出了一些今后工作的重点所在。 2 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 i i 测试内容 第一章软件测试简介 一般来说,测试内容要考察测试产品的实用性,可靠性,健壮性,性能以及正确 性1 。 1 1 1 实用性 实用性是指一个正确的产品在规格说明所允许的条件下运行时满足用户需要的程 度。换言之,一个功能上正确的软件现在要接受那些按照规格说明是有效的输入。例如, 用户可能会测试软件是否容易使用,软件执行的功能是否有用,或与竞争产品相比该产品 是否经济有效。不管软件正确与否,这些问题都是必须要测试的关键问题。 如果一个软件产品不是经济有效的,就没有购买的意义。除非产品很容易使用,否 则该产品就根本不会被使用,或不能被正确地使用。因此,必须测试产品的实用性。如果 产品达不到这一要求,测试应当中止。 1 1 2 可靠往 可靠性是产品出故障的频率和严重性的度量。换句话说,就是必须知道软件故障发 生的次数和故障所带来影响的破坏程度。当个软件出故障时,一个重要问题是修理这个 故障平均要花多长时间。但更重要的是,要花多长时间来修理故障所带来的后果。这一点 往往被忽视。假如一个运行在通信前台的软件平均每六个月只出一次故障,但是,一旦它 出现故障,它将会删除整个数据库。在最好的情况下,数据能重新初始化到最近的一次的 状态,而通过审计跟踪,能将数据库恢复到当前最新的状态。但是,如果恢复过程需要两 天,则在这期间数据库和通信前台都不能运行,从而使产品的可靠性降低。 1 1 3 健壮性 虽然很难给健壮性给一个精确的定义,但健壮性本质足众多因素的函数。例如:操 作条件的范围,有效输入得到不可接受的结果的可能性以及软件对无效输入的接受效果等 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 因素。一个健壮的软件在输入符合规格说明的数据时,不应出现意外的结果。一个健壮的 软件即使在不允许的操作条件下运行也不会崩溃。为了检测健壮性的这个方面,故意输入 一些不符合输入规格的测试数据,测试人员由此判断软件的反应达到多坏的程度。 1 1 4 性能 性能是产品另一个必须被测试的方面。例如,了解软件对关于响应时间和空间要求 的约束条件的满足程度,这一点至关重要。 例如,对于一个嵌入式计算机系统来说,系统所要求的空件约束也许是软件只能使 用1 2 8 k b 的内存。如果一个软件需要2 5 6 k b 的主存空间,那么即使它再优秀也不能使用。 实时软件的特征是严格的时间约束,如果其约束条件没有满足,信息就会丢失。 1 1 5 正确性 如果一个产品在允许的条件下运行时能满足输出规格说明,而且独立于它所使用的 计算资源,则称这个产品是“正确的”。换句话说,如果给产品提供了满足输入规格的输 入和产品所需的所有资源,而最终的输出符合输出规格说明,则称这个软件是正确的。 但是正确性的这一定义也存在着不足。假定一个软件已成功的通过了各种不同的测 试数据的测试,这是否意味着该软件就可以被欣然地接受呢? 不幸地是,不行。如果软件 是正确地,这只意味它符合它的规格说明。但是,如果规格说明本身就不正确的话又怎么 办呢? 所以,除了要证明产品的正确性之外,还要测试其他更多的东西。 1 2 软件测试过程 文献“1 提出了一个简单实用的软件测试过程模型p o c e r m ,如图1 1 所示。该模 型突出了在一般大型软件系统和软件产品的测试过程中必需的基本测试活动和产生的结 果。 制定测试计划 编制测试大纲 设计和i 生成测试用例 实施测试 生成软件问题报告和结果报告 南开大学硕士生毕业论文开放的分布式结构软件自动测试系统的构建 需求讣忻 较件没f fl 辐 l编码ji 单觉铡c j i =l 件 ” 乐统翻试 发 阶 b 曲渊酞卜_ 段 辅 j嗣潆 h 刚 | | 纠嫩 忡 黎羹 f r爪 山山1 丑0 过删 洲 - t 洲“e i l = 荆 _爿实施剥试 测试侍】朝质量评市卜b 幽测i 逍卜- f 泼过 i 什 个山个 划划 剖实施什划 结果分昕报告 图1 1p o c e r m 模型图 i 需求分析h 软件设计h 骗写代码 踟试阶段l r。r。_-_-_-。1 图1 2f d i w m 模型图 对整个测试过程有效的管理 文献w 提出了另外一种软件测试过程模型f d i w m ,如图1 2 所示。这种过程模型与传统 南开大学硕士生毕业论文 开放的分布式结构软件t t 动测试系统的构建 的比较主要有以下优点: 并行性 完整性 综合以上两种过程模型,本文提出如下的具有一般性意义的测试过程。 1 2 1 制定测试计划 制定测试计划的目的是为了按照如下方式规划一次迭代中的测试工作: 描述测试策略 估计测试工作所需的人力以及系统资源等。 制定测试工作的进展。 测试设计人员根据需求,分析模型,构架描述等为迭代开发一套通用测试策略 种测试,如何进行测试,何时进行测试,以及如何判断测试工作是否成功。 1 2 2 设计测试 设计测试的目的是为了识别并描述每个构造的测试用例以及识别并构造用于详细 说明如何进行测试的测试规程。 设计单元测试用例。在设计好的软件系统中,每个模块完成一个清晰定义的子 功能,而且每个模块又是相对独立的。因此,每个模块可以作为一个独立的测 试单元。单元测试的目的,是保证每个模块作为一个单元能正确运行。 设计系统测试用例。系统测试用于测试系统功能整体上是否正确。每个系统测 试主要测试在不同条件下的用况组合。这些条件包括不同的硬件配置,不同程 度的系统负载,不同数量的参与者以及不同规模的数据库等。测试设计人员在 设计系统测试用例时,应对各种用况组合的优先级进行排序。例如那些对并行 功能需要的用况组合,包含多进程的用况组合,或者是经常性的,并可能以复 杂和不可预知的方式消耗系统资源的用况组合等等。因此,很多系统测试用例 可通过考虑用况,尤其是考虑它们的事件流和特殊需求来发现。 设计回归测试用例。回归测试一般在迭代开发中,在调试之后,在一个可复用 构件的一个新实例的产生期间进行,也可以作为集成的第一步,并支持应用维 护。一些用于早期版本软件测试使用的测试用例可用于后续版本软件的回归测 6 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 试,但并非所有的测试用例都适合于回归测试。要保持适用性并继续为系统质 量保证作贡献,测试用例必须很灵活,能够适应被测试软件的变化。 1 2 3 执行测试 执行测试主要分为执行单元测试,执行系统测试,执行回归测试等这几种。单元测 试按照以下顺序进行: 1 ) 对每一个测试用例通过手工方式执行测试规程,实现与模块十日关的 单元测 试。 2 ) 把测试结果和预期结果比较并研究偏离预期结果的测试结果。 3 ) 把缺陷报告给相关模块的工程师,他负责可能含有缺陷的模块。 4 ) 把缺陷报告给测试设计人员,他们将利用这些缺陷对整个测试工作的结果进行 评估 系统测试是把经过测试的单元装配成一个完整的系统来测试。这个测试中发现的错误不仅 有设计和编码的错误,还可能有需求说明中的错误。因此,它是检验系统是否确实能提供 需求中制定的功能,以及系统的动态特性是否也符合预定要求。图1 3 说明了执行测试的 过程 1 _ 2 4 评估测试和验收测试 系 圈1 3 执行测试过程图 缺陷 测试设计人员将测试工作的结果和测试计划勾画的目标进行对比,并对其作出评 7 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 估。他们准备了一些度量标准,用来确定软件的质量水平,并确定还需要进一步做多少测 试工作。 验收测试是把软件系统作为单一的实体进行测试测试内容和系统测试基本相同。 但是这次测试是在用户的参与下进行的。本测试的目的是,使软件系统能够满足用户的需 要。验收测试分为u 测试和b 测试。d 测试指的是用户在开发场合测试,有开发者陪同。 0 测试指的是多个用户在各自不同场合测试,无开发者陪同。 1 3 软件测试方法 1 3 1 白盒测试方法 利用过程设计的控制结构导出测试用例,来对软件的过程性细节做细致检查。通过 白盒测试方法,可以做到以下几点: , 确保模块的所有独立路径至少执行一次 所有逻辑判断的“真”,“假”两种情况都被测试到。 在循环的边界和运行界限范围内执行所有的循环。 测试内部数据结构以确保它们的有效性。 逻辑覆盖测试是种常见的自盒测试方法,是从程序内部的逻辑结构出发选取测试用例。 此法根据覆盖目标不同分为: 语句覆盖:每个可执行语句至少执行一次,但不易发现判断中逻辑运算的错误。 判断覆盖:每个判断的真假值均执行一次,但不易发现判断内部条件的错误, 即是否应为真,应为假。 条件覆盖:每个判断中每个条件可能取值至少满足一次,但不一定覆盖了分支。 判定条件覆盖:判断中每个条件的所有可能至少出现一次并且每个判断本身 的判定结果至少出现一次。 穷举法:覆盖所有可能的逻辑情况。 1 3 2 黑盒测试法 它用来证明与程序内部工作无关的功能需求的有效性。黑盒测试法在软件的信息域 上通过分割软件输入域和输出域提供完全覆盖测试而得到测试用例。黑盒测试法可以发现 南开大学硕士生毕业论文开放的分布式结构软件自动测试系统的构建 以下几点: 不正确或遗漏的功能。 界面错误。 数据结构错误或外部数据访问错误。 性能错误。 初始化和中止性错误。 可以得到符合下列准则的一组测试用例: 该测试用例能够减少一个以上进行合理测试所必需的附加测试用例数。 该测试用例说明某一类错误的有无,而不只说明与特定的测试有关的一个特定 的错误。 黑盒测试法的内容为: 等价类划分:把程序的输入域划分为若干等价类,从中选、部分代表,等价类 是指某个输入域的集合。对错误来说,该集合中的每个条件是等价的,基本覆 盖了整个输入域。 边界值分析:对输入类和输出类,测试稍高于或稍低于其边界值的一些特定情 况。 原因一结果图:各个输入条件可能出错的情况已经看到,但多个输入情况组 合起来的情况被忽略,提供逻辑原因( 输入条件) 和结果( 活动) 的关系,来 精确的表示逻辑条件和对应活动,并制作原因结果图和判定表来设计测试 用例。 黑盒测试法着眼于程序的外部特征,而不考虑程序的内部逻辑结构。而白盒测试法需要了 解程序的内部结构和处理过程,所以也称为结构测试。在实际工作中往往采用黑盒法和 白盒法楣结合的方式,选取并测试一些数据量有限的重要逻辑路径,并对一些重要的数据 结构的正确性进行完全的检查,这样不仅可证实软件接口的f 确性,同时对于有选择性地 保证软件内部工作也是必要的。另外,人们还提出了一些其他测试方法,如因果图法“ 和类属分割法川1 。 9 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 第二章软件测试自动化 2 1 为什么测试必须自动化 传统的测试通过手工对应用程序随意的使用来进行,对于测试人员来说,尽管这样 很容易上手,但无法预见应用程序的问题的所在,重复性较差,而且受人为因素影响很大。 另外也有使用一系列预先设定好的手工的操作程序来替代随意的操作在这种情况下,不 断重复的工作繁琐而昂贵,增加劳动强度的同时测试人员的工作本身也会产生错误。 自动测试不需要人为的干预来执行一系列的动作。这种方法帮助消除人为的错误并且 可以更快的产生结果。尽管自动测试在测试过程的初期需要花费比人工测试更多的时间和 精力,但随着测试的深入,这些付出与其效果相比是非常微小的。因此可以认为自动测试 实际上是通过较少的开销获得更彻底的测试,最终提高产品的质量。自动测试的优点: 快速而有效的验证错误修补。 能够快速调试。 手工测试产生的测试过程信息通常是不一致和片面的,生成的测试报告也不一 致,而且代价高,速度慢。相反地,测试自动机可以一致地获取并分析测试结果。 测试自动化减少了依赖测试人员的风险。虽然自动测试的能力各不相同,但是, 它能够给测试小组带来测试结果的更大的总体一致性。 提高测试人员的生产效率。 减少手工测试产生的错误。 回归测试,适应性测试,可移植性测试,性能测试和配置测试均要求是自动的可 重复的测试包。使用自动测试,测试人员可以确保同样的测试用于一个应用的不 同版本或者是配置上。 自动比较是评价大量输出的唯一可重复而有效的方法。 运行冗长而复杂的测试时,自动化是必须的。 1 0 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 2 2 常用的自动测试工具 测试过程是软件开发过程中一个单调、复杂和耗费时间的质量保障环节。激烈的商 、世竞争要求它必须借助于有效的自动软件测试工具代替繁重的手工测试工作来提高效率。 近年来国内外软件测试工具的开发和研究“”“”取得了很大进展,下面本文简单介绍一下 其中几个主要的工具。 2 2 1m i c r o s o f t1 - e s t m i c r o s o f t t e s t ( m t ) 。采用b l a c k b o x 测试方法,面向w i n d o w s 和w i n d o w sn t 软件 测试,运用类v i s u a lb a s i c 的t e s tb a s i c 语言,完全模拟界面输入,检查输出结果,验证 输出数据或屏幕显示是否符合测试结果。m t 可调用调试工具s t r e s s 动态库函数设置系统 资源,达到仿真系统配置及特定限制条件的目的。但是,m t 测试工具在许多方面还缺乏 弹性。例如,一些造成软件系统c r a s h 的b u g 无法在m t 中记载,可以另外采用调试工 其d r , w a t s o n 记录由软件引起的系统错误和程序错误;测试结果的判断标准较难确立;软 件内部潜在的b u g 无法激活等。 2 2 。2b o u n d sc :h e c k e r b o u n d sc h e c k e r 提供给程序员对软件代码的经常性测试,采用c o m p i l e t i m e i n s t r u m e n t a t i o n 技术,在编译软件源代码前插入一些额外的c 代码,用于软件执行时自动 检测软件中的错误,而不改变软件的源代码。b o u n d s c h e c k e r 不失为程序员的一个好测试 员,据统计可节约程序员约2 0 的调试时间。 b o u n d s c h e c k e r 可以自动检测一般测试工具无法检测的内部隐藏的b u g ,测试种 类如下: a p ic h e c k e r :检测w i n 3 2 a p i 的无效参数和返回码 l e a kc h e c k e r ;检测内存及资源使用不当 r e a dc h e c k e r :检测读未初始化的内存 w r i t e c h e c k e r :检测写未分配的内存 p o i n t e rc h e c k e r :检测一些有关指针的错误 c + + c h e c k e r :检测一些与c + + 编程相关的错误 1 1 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 c o m p i l e c h e c k e r : 检测c o m p i l e t i m e 时错误 2 2 3 测试数据生成工具t t “1 是由美国程序设计环境署开发的能够证明需求的可测试性,产生测试数据并分 析测试结果的工具。 利用t 进行测试需以下几个步骤: 定义软件。用户输入对被测软件的描述。描述包括动作或操作语句以及对数据, 条件事件,状态,动词,目标的定义。 设计测试数据。t 可自动设计测试数据,也可以计算机辅助用户设计。 准备测试。t 将产生的测试数据编制文档,分类,并产生测试驱动程序。同时可 跟踪需求描述中的每条语句与实现该语句的每个测试数据,并同用户交互式交 流。 执行测试数据。 评估软件 目前t 在m s d o s ,u n i x ,v a x v m s 系统下均可运行。 2 2 4 测试程序生成工具p r m g e n p r m g e n ”由加拿大自然科学与工程研究理事会支持开发,是个专门进行测试 程序生成的工具。其输入为程序的测试描述,输出为该程序的测试程序。 p r m g e n 对测试描述的格式有一定的要求,程序的测试描述部分应包括:一个进 入程序的顺序表:对例外情况的说明:一个测试数据表。其中测试数据表的每个测试数据 以 的形式表达。 2 2 5 系统化测试环境f o r e s t f o r e s r ”是由日本三菱电气公司信息系统及电气开发实验室开发的测试通信系统 的测试环境。它使用三种测试策略: 使用形式化的描述技术,用以保证非二义性。 在不同的测试阶段采用不同的测试数据方法。 南开大学硕士生毕业论文开放的分布式结构软件自动测试系统的构建 对测试过程进行系统化的支持。 f o r e s t 的结构包含了四个子系统:t e n t ( 测试序列生成工具) ,a p r i c o t ( 测试数据 生成工具) ,t e s p e c ( 测试说明书编辑工具) 和t e x e c ( 测试执行工具) 等。本系统在 s u n 3 工作站上已经实现并投入运行。 2 3 分布式结构自动软件测试 网络技术和测试技术的发展,促进了信息网络和测控网络的融合。现代测试技术正 面妪着前所未有的变革。近年来,一系列网络化测试系统也在工业。军事,医疗。科研, 教育等领域中产生,并得到了实际应用。国内国外在9 0 年代末陆续开始测试网络技术方 面的研究,并针对具体的应用领域和应用对象提出了一系列的解决方案和体系结构”“1 , 极大的促进了网络化测试技术的发展。 2 3 1 分布式结构特点 基于现有的实践和认识我们将基于网络互连的分布式测试系统结构抽象为一个有 序的开放体系结构。如图2 1 所示为一个分布式结构的自动软件测试模型。 采用分布式结构的主要原因它可以得到比集中式测试好的多的性能价格比。另一方 面,同分散式系统相比较,分布式结构测试系统的另一个潜在优势是它的高可靠性。通过 把工作负载分散到众多的机器上,单个终端故障最多只会使一台机器停机,而其它机器不 会受任何影响,对于关键性的应用,可以考虑用分布式结构来实现获得高可靠性。 此外,渐增式的增长方式也是分布式结构优于集中式结构的一个潜在的重要原因。 因为当一个机构扩充时,原先的主机就可能不能胜任了,解决办法是更换更大型的主机, 这样会增加很多费用,且原先的主机放置不用也会产生浪费,比较好的方法是采用分布式 结构,在系统需求增加时可以逐渐进行扩充。分布式结构的系统还有数据共享,设备共享, 任务分配灵活,工作负荷平均等优点。 尽管分布式结构有许多优点,但也存在一些缺陷。 一个是网络因为它会丢失信息,所以就需要专门的软件进行恢复。同时,网络还可 能会过载。当网络过载趋于饱和时,对任务分配,路由算法的要求就很高。还有一个是安 全性,因为数据共享,各个用户都可以很方便的存放数据,那么用户同样也能很方便的存 取无关的数据,这样一来,安全性的问题也很突出了。 1 3 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 罗孚。:里_ t ? 争。墨二:争 鼍了了 :奠城:,触试j ;“i :譬 。瞥;髫 卜,谳蔷知! 一 孵苴州珞i ,、;一 摊试州喘 图2 1 分布式测试网络开放体系结构图 尽管存在一些潜在的问题,许多人认为分布式结构的系统仍然是优点多于缺点,并日 普遍认为这种结构在未来几年中会越来越重要。实际上,现在许多机构和单位都采用这种 结构。在未来,中型或者大型的机构中将可能不存在一台孤立的计算机了。 2 。3 。2 几种常见的分布式结构自动软件测试系统结构模型 模型一“1 “”“”:以c s 结构为基础的系统,如图2 2 所示: 其中s e r v e r 是整个系统的管理控制者,通过人机界面接收测试任务,按照一定的分 配策略将任务分配给各个c l i e n t 去执行。同时其具有一定的监控能力,实时探测网络上w 用的资源,另外对执行过程中死机的情况,还要删除该节点。 c l i e n t 是自动测试工作的执行者,它从s e r v e r 端接受任务,a 动执行,并将执行结 果,执行状态( 成功失败) ,现行状态的综合信息反馈给s e r v e r 。 1 4 f 撼 、j 一础引tji蔫茸 1瓤瞰t土疑甜挚麓 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 自酌涮试执再者白勘洲砒h 再者 图2 2 以c s 结构为基础的系统结构图 s e r v e r 是连接用户与任务执行者c l i e n t 的桥梁,方面通过用户界面接受用户设置的 测试任务,另一方面通过实时监测得到网络上的可用资源,对现行的任务和当前的c l i e n t 状态统筹考虑,再将任务按照一定的分配策略( 手动或自动) 分配给可用的c l i e n t 。 s e r v e r 端的具体功能可分为三层:u i 接口层,任务管理层,传输层。每个层的功能 如图2 3 所示: itt 1 t e l - 3 日l i 霈加任务l 埘除 壬i 任务状态i 舟露自i 孵i uuiu “毪5 差瑶暑! l 任蚋 黉l 消息打包i 宴时监控i c h l 峨态 1 r 1 一r 1 广 i# * e i i 臣困 垂亟 图2 3s e r v e r 端的主要功能 ( 1 ) l 接口层 添加任务,删除任务:接受用户提交的测试任务 任务状态:显示当前的任务执行状态以及c l i e n t 的状态,根据用户需要对特殊的c l i e n t 进行连接或断开。 分配策略:可由用户指定任务到特定的c l i e n t ,也可让系统根据任务数及c l i e n t 的状态进 行自动分配。 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 ( 2 ) 任务管理层 任务分类,消息打包:根据用户的任务情况进行分类并进行打包处理 实时监控:实时监控各个任务记忆c l i e n t 的状态 异常处理:对特殊的c l i e n t 进行连接或断开 ( 3 ) 传输层 接受反馈信息:包括f 常结果,异常情况等 c l i e n t 的具体功能: c l i e n t 是测试任务的具体执行者,它接受来自s e r v e r 的任务,无需人为干预,自动执行任 务队列中的任务,任务结束时返回结果,或返回异常情况。 l俦端屡 j 圈1 1 覃 u| | i任务管理屉 i执厅层 l自动拽斤模块 图2 4c l i e n t 端的主要功能 c l i e n t 端的主要功能: ( 1 ) 信息识别:接受s e r v e r 发送的消息并加以识别,包括读取状态,断开连接,执行测试 任务或消息异常。 ( 2 ) 任务管理:测试任务分类进入队列 ( 3 ) 任务执行:自动执行对应的测试程序,并将结果返回。 ( 4 ) 状态分类及发送:对c l i e n t 的状态或执行结果进行分类,包括正确的状态信息,结果 信息异常情况等,打包后发送给s e r v e r 。如图2 4 所示 该系统实现的关键技术在于: ( 1 ) 任务创建与分配:合理地划分和分配任务是提高系统工作效率的关键,s e r v e r 实时监 测网络上地可用资源,及其详细资料,如速度,容量和任务等待队列情况等。据此进 1 6 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 行新任务的分配。 ( 2 ) 异构环境支持:该系统支持c l i e n t 具有不同的系统平台。这就要求s e r v e r 能够实时监 测出c l i e n t 端的信息。不同的系统平台在数据传输时内容不同。 ( 3 ) 容错机制:软件测试多是测试不稳定的软件系统,所以经常会出现死机的现象,同时 还要考虑环境中的一些故障。如网络和服务器故障,一旦出现故障要及时处理。 ( 4 ) 安全机制:系统的开放性带来了资源利用的方便性,同时也提出了完善的安全机制的 要求。 模型二:利用中间件技术的分布式结构模型 此结构模型是一个使用c o r b a 中间件技术,基于集中与分布相结合的测试管理体系 结构下的软件测试自动化管理系统软件原型。此原型包括软件测试自动化管理框架,孩框 架下的整个软件测试流程的管理和为第三方软件测试工具的集成提供外部接口 1 1 。 c o r b a 以面向对象方法为基础,将c s 模式作为基本处理机制,为分斫】式异构环境 中各种组件相互访问,协同工作提供统一的服务平台。但是c o r b a 与传统的c s 模式不 同之处在于,客户端可以透明的向服务对象发出请求而无需知道服务对象在网络巾的位 置,采用的编程语言以及操作系统等。c o r b a 的透明机制为分布式环境中异构系统的互 操作性提供了保证。而通信机制作为c o r b a 最基本的功能,提供了多重客户端与服务对 象的交互方式1 5 , 1 。 该系统的体系结构采用基于集中和分层的管理体系结构,如图25 所示。 圈2 5 利用中间件技术的系统体系结构 该体系由测试管理控制中心和测试代理两层结构组成。 ( 1 ) 测试管理控制中心将测试用例等测试信息发送给测试代理,同时接收测试代理返回的 测试结果信息,并对测试过程测试结果进行统一的管理。 ( 2 ) 测试代理负责接收测试管理控制中心发来的测试信息,把测试信息提交给测试工具, 进行相应的测试,并将测试结果信息回送给测试管理控制中心。 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 图土6测试管理系统框架 软件测试管理自动化系统框架是实现测试管理自动化体系结构的基础,它有2 层结构 组成,如图2 6 所示,即主控中心层和测试代理层。控制中心由测试流程管理模块,测试 管理工程数据库,同测试代理进行通信的通信管理模块组成。测试代理层为对测试结果信 息进行采集和同通信管理模块进行通信的测试代理。 测试管理系统框架采用c l i e n t s e r v e r 结构,为使测试管理系统框架能够支持多平台和 异种操作系统,在测试管理系统框架中将采用c o r b a 中间件技术进行开发。 在测试管理系统框架中将采用一套基于c o r b a 技术的对象间的通信设施,保证基于 对象技术的各应用模块间及自身对象间的通信,测试管理将使用这一套通信设施,测试管 理中各部件问通信如图2 7 所示。 在测试代理与管理控制中心问,主要进行如下两种方式通信:下传,上送。 下传:由测试管理控制中心向测试代理发出信息,测试代理接受信息的调用 称之为下传,调用发起方是控制台 上传:和下传相反。调用发起方是测试代理 lb 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 在框架中我们采用了o r b 来提供基本的通信服务,使用l i o p 作为通信协议。c o r b a 是 以对象管理结构为对象模型,采用客户服务器体系结构和远程调用方法实现对象请求中 介的一个技术协议和规范,它具体定义了对象请求中介的接口定义标准和基本功能给出 了程序层次组织结构。在对象管理组的规范描述中,c o r b a 是以o r b 为底层平台的两 层结构,即上层的分布式对象( 包括应用对象和对象实现) 和o r b 中间件。 图2 7 测试管理系统通信图 另外,这个测试管理系统还包括了如下的管理模块: 测试需求管理:将需求功能由大n d , 逐级进行细化,形成需求树 测试计划管理:将需求树上的最小需求功能转化为测试计划中测试需求规格说明,同 时将各测试模块分配给相应的工作人员,并授予权限。 测试用例管理 问题报告管理:对测试用例的执行结果进行管理,对未通过的测试用例实行定期警报, 提醒测试人员和开发人员及时解决未通过的测试。 测试报告管理:主要是对测试情况进行技术统计。 1 9 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 第三章开放的分布式结构软件自动测试系统的构建 3 1 系统结构模型 由于测试系统的规模大小各异,且存在异构和分布环境下的设备互连,传输介质共 享,数据通信等问题,构成分布式测试系统后,在一次测试任务中,应根据具体情况分配 系统中各台计算机的任务,共同完成测试任务。为了尽可能的利用系统内的资源,充分利 用每一台设备的潜力,本文提出基于系统级,模块级和应用级的系统结构模型。 系统级:是对某一个分布式结构测试系统的整体描述,通常有多个子模块组成, 它们之间协调工作,共同完成测试任务。 模块级:是对一个系统中各功能模块的抽象描述,而具体的功能由相应的工作站 完成。 应用级:是对具体完成相应的功能的计算机或者工作站的描述。 这样一来,将一个具体的系统分为逻辑和物理两个层次。系统级与模块级是系统功能的逻 辑层次,应用级是系统功能的物理层次。于是,一个系统的构建有机的分成了两部分: 对系统的逻辑描述( 功能描述) 将逻辑描述映射到物理级( 实际设备) 上实现 其中逻辑层次包括系统的组成( 如系统中包含哪些功能模块) 、各模块之间的通信关系、 需要传递的参数等,然后按一定的协议将这些信息生成对应的数据传送给相应的工作模块 使用。物理层次是将这些信息按同样的协议解释成功能模块可以执行的内容。这个过程由 系统自动完成。这样,用户无需了解系统的具体结构。只需按规定的格式填写配置参数即 可。 3 1 1 系统级结构模型 如图3 1 所示,该图为一个通用分布式结构自动软件测试系统的结构模型。该结构模 型分为三层,分别为测试终端层、测试中心服务器层和测试用户层。其中测试终端层通过 网络和测试中心服务器进行通信,进行数据交换,测试用户层也通过网络和测试中心服务 器进行通信,而测试用户层和测试终端层不直接进行数据交换。 2 0 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 测试终端 c 书 c 等 测试中心服务器 测试任务管理 测试数据管理 测试进度管理 测试结果管理 测试程序管理 测试终端管理 图3 , 1 开放的分布式结构软件自动测试系统级结构模型 一璺 一型 一骂 测试用户 整个系统的流程如下: 测试用户提交被测试程序和测试数据给测试中心服务器用来给测试终端进行测试。 测试中心服务器根据一定的分配方法把被测试程序和测试数据分配给测试终端。测试终端 接收到测试数据和被测试程序后运行自动测试程序进行自动测试,得到测试结果。测试终 端把测试结果返回到测试中心服务器,以便最终提交给测试用户。测试中心服务器把测试 结果按照一定的规则部分或全部返回给测试用户。这样一次自动测试过程完成。整个流程 图如图3 2 所示。 从测试用户的角度来看,用户只需提交测试程序和测试数据,而测试过程对于用户来 说是透明的。一般来说,软件开发人员提交被测试程序,而测试数据可由开发人员和测试 人员共同设计。对于整个系统来说,该系统结构模型最多只需要两次手动操作。一次是用 户提交数据和程序给测试中心服务器,然后测试中,c , , j l l 务器自动把程序和数据按照一定的 存储协议存放,以方便测试终端的自动存取。这里的人机交互界面可采用多种方式例如 w e b 方式,这种方式的优点是简便和灵活。无须测试用户安装任何软件。另外一次是用 户和测试终端的交互,这里一般来说在系统初始化时需要人的干预。系统的初始化工作包 括提出加入测试系统请求、描述自身有关资源、在测试终端指定测试中心服务器的地址, 使程序能自动访问中, t ;, j l l l 务器。如果采用静态分配数据的方法的话,需要用户在测试静把 数据存放在终端上。另外,当测试终端由于软件或硬件原因死机的话也需要用户手动干 预。 纵上所述,本结构模型具备自动化程度高,流程简单,易于用户操作等多种优点。 2 1 璺身 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 3 1 2 模块级结构模型 开始 i 用户提交数据 i i 测试中心服务器 f 分配数据 l l 测试终端执行白 动测试返回结果 i i 服务器提交结果 l 给删试 i 户 结束 图3 2 自动测试流程图 本系统中主要有以下模块: 测试任务管理:它的主要职能将由用户创建的测试任务进行管理。这种管理主要 对任务的存储和分配进行管理。存储的方法和分配的算法息息相关。例如,由于 通常用户要求测试某个程序,而一般来说这种程序会有各个操作系统下的对应版 本。这样一来,每种版本的程序需要由相应的测试终端来测试。譬如,w i n d o w s 2 0 0 0 版本的程序需要由安装了w i n d o w s2 0 0 0 的终端来测试,而u n i x 版本的 程序的测试则要由u n i x 终端来完成。用户创建了一个w n d o w s 测试任务和 u n i x 测试任务,把它们上传到测试中心服务器中心服务器在没有把任务分配 之前就需要首先存储这两个任务。如果只使用一个存储池存储所有的任务,那么 分配任务时需要分配算法首先判断任务类型,然后才能分配给对应系统的测试终 端。如果为每一种类型的测试任务都建立一个存储池,那么分配时就可以直接将 2 2 南开大学硕士生毕业论文 开放的分布式结构软件自动测试系统的构建 测试终端和对应的测试任务存储池关联起来,节省查找时间。但是中心服务器需 要维护多个存储池,需要定的代价。综上所述,测试任务管理的方法和任务的 存储是相关的。另外测试管理模块还应该能够方便用户或者是自动的添加新的 测试任务、删除已有的测试任务和修改测试任务等。测试任务管理模块在整个自 动测试系统中占有非常重要的地位。它的功能的实现方法具有灵活多样的特点, 而有效的实现方法对整个系统的效率的提高是刁i 言而喻的。 测试数据管理:测试数据管理主要指的是测试用例的管理。通常来说,一个新的 软件产品推出之前,需要有大量的测试用例的支持。在测试中心服务器中存放有 大量的测试数据,如何有效的管理它并分配给测试终端从而实现自动化测试是一 个关键的问题。对测试数据的管理,应该做到:首先,能够动态的分配数据给测 试终端,因为每个终端的性能不同,对数据的处理速度就不一样,为了使测试效 率提高,尽量压缩测试时间,就需要让性能佳的终端处理的数据量比性能差的终 端处理的数据量大,这里就需要能够动念分配数据。其次,由于存储大量测试数 据,还需要对测试数据进行编号以方便查询还需要能够添加、删除和修改测试 数据等。以及,还需要对测试数据的测试情况进行管理,例如数据的测试状态包 括:未测试、测试中、已测试。测试结果包括通过、未实现、存在问题等。最后, 由于有多个测试程序。需要将测试数据和测试程序一一对应起来。 测试进度管理:主要对测试日志和测试报告进行管理。 测试结果管理:对被应用在待测试程序的测试数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论