




已阅读5页,还剩64页未读, 继续免费阅读
(通信与信息系统专业论文)基于拓扑调度的软件自动化测试技术的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交通大学硕士研究生学位论文第1 页 摘要 软件测试贯穿于软件工程的整个生命周期,是保障软件质量的重要手段。初期软件 测试采用的手工测试方式机械性、重复性、工作量大等特点孕育了自动化测试的产生。 自动化测试技术是目前研究的热点之一,我国对自动化测试方面的研究尚处于初级阶段。 自动化测试能大大的提高测试的效率,减轻测试人员的工作负担,带动软件测试不断地 发展。因此,研究自动化测试技术具有重要的意义。 本文对一种基于拓扑调度的软件自动化测试系统的实现及应用进行了研究。该系统 的设计包括了关键实体规格设计与内部行为设计两部分。关键实体部分涉及系统配置文 件的设计,包括测试脚本文件、测试设备文件和测试进程文件,为系统中各模块的设计 做好了铺垫;内部行为部分主要完成对系统各模块的详细设计,包括任务管理模块、拓 扑调度模块、拓扑执行模块、设备管理模块、设备检测模块和设备主动回收模块。在设 计过程的指导下实现了该系统,并将其运用到了实际的自动化测试过程当中。 文中首先分析了软件自动化测试在国内外的发展情况,然后阐述了软件自动化测试 及调度技术相关知识。在分析基于任务调度的软件自动化测试系统的基础上,对基于拓 扑调度的软件自动化测试系统进行了研究。接着重点介绍了基于拓扑调度的软件自动化 测试系统的详细设计过程。最后给出了系统的实现过程,并在实现后的系统中以及基于 任务调度的自动化测试系统中测试了部分模块,经过对测试结果的对比与分析,证实了 拓扑调度方式的优越性。 基于拓扑调度的软件自动化测试系统的实现,大大提高了自动化测试的效率,为缩 短产品的开发周期,提高产品的质量起到了积极的推动作用。 关键词:软件自动化测试;测试任务;测试拓扑;拓扑调度 西南交通大学硕士研究生学位论文第1 i 页 a b s t r a c t s o 行w a r ct e s t i n gi so n eo f 啦em o s ti i i l p o r t 肌tt e c h i l i q u e s 懈e df o rs 0 r w a r eq u a l i t ) r 嬲s u 阳n c e ,w l l i c ht h r o u g l l o u tt l l e t i 代l i f ec y c l eo fs 0 小a r ee n 百n e e r i n g e a r l ys 0 凡a r e t e s t i n g 州t l lm 锄u 脚t e s t m gm e t l l o d sw m c hi sc h a r a c t e r i z e db ym e c h a i l i c a l ,r e p e t i t i v e ,h e a v y w o r l d o a d ,w h i c hg i v i n gb i r t l lt ot l l eg e n e 枷o no fa u t o m a t c dt e s t i n g a u t o m a t e dt e s t i l l g t e c h i l o l o g yi sc u 鹏n t l yo n eo f t l l eh o tr e s e a r c h e s ,h o w e v e r ,、 _ k c hi ss t i l li 1 1t h ei 砌弧c ys t a g ei i l 0 u rc o u n n y a u t o m a t e dt e s t i n gc 锄g r e a t l yi m p r 0 v et 圮t e s t i i l ge 衔c i e n c y ,r e d u c et 1 1 ew o r k l o a d o fm et e s t 锄dc i r i v et l l ec o n t i n u o u sd e v e l o p m e n to fs o 觚a r et e s t i n g t h e r e f o r e ,m er e s e a r c h o na u 幻m a t e d 鲰a r et e s t i n gh 弱i m p o r t 锄ts i 嘶f i c 锄c e t 1 1 i sa n i c l er e a r c h0 n l ei m p l e m e n t a t i o na l l da p p l i c a :t i o no fa u t o m a :刚s 0 f t w 鹏t e s t i n g s y s t e mb 弱e do nt o p o l o g ys c h e d u l i n g ,d e s i 印o f w 1 1 i c hi n c l u d i n gm op a n s ,o mi st l i ek c ye n t i 劬 a n o t h e ri sm ei n t e 皿【a lb e h a v i o l t h ek e ye n t i t i e si i 】i v o l v e di i l 也ed e s i g no fs y s t e i t lc o 砌 i g u r a t i o n f i l e s ,洒c l u d i n gt e s ts c d p t sf i l e s ,t e s te q u i p m e n t6 l e s ,a n dt e s t i i l gp r o c e 豁f i l e s ,a l lo f 训c h p a v 访gt :h ew a yf o rt l l ed e s i g no ft h es y s t e m sm o d u l e s d e s i g m n gi 1 1 t e m a lb e h a v i o 豫lm 浏y t 0 c o m p l e t et 1 1 e t l 圮d e 毛a i ld e s i 印o fe hm o d u l e ,i n c l u d i n gm 肌a g e m e n to ft c s tt a s km o d u l e , t o p o l o 鲥s c h e d u l i n gm o d u l e ,t 0 1 ) o l o 斟i r i l p l e m e n t a t i o nm o d u l e ,d e v i c em 锄a g e m e n tm o d i l l e , d e v i c ed e t e c t i o nm o d i l l e 锄da c t i v e 似幻v e qm o d u i e u n d e rt i l eg u i d a n c eo ft l l ed e s i 印p r o c e s s , w eh a v ei m p l e m e n t e dt 1 1 es y s t e m 觚da p p l i e di tt 0m ea c t u a lp 眦e s so f 制t o m a t e dt e s t i n g t h ep a p e rf i l 杖锄a l y z e dt l l ed e v e l o p m e n to f 叫t o m a t e ds o m a r et e 蚰ga lh o r r l e 趾d a b r o a d ,锄dn 1 d e s c r i b e dt l l es o f t w 乏嘴t e s ta u t o m a t i o n 锄d h e d u l i n gt e c h n o l o g ) r - r e l 砷e d l ( i l o w l e d g e ( ) i lt l l eb 髂i so f 锄a 1 ) r z i i l ga u t o m a t e ds o r 咄t e s ts y s t e mw h j c hb 舔e d o nt l l et a s k s c h e d u l i n g ,w es t u d i e dt i l e s o 讯v a 岭a u t o m a t e dt e s ts y s t e mw 晡c hb 弱e d0 nt l l et o p o l o g ) , s c h e d u l i n g n 饥缸u s e do nt l l ei l 砌l e dd e s i 印p r o c e s so f 血et o p o l o g ) r h e d u l i n g b 舔e d 饥j t o m a 伦ds o 俞w a r et e s t 科s t 锄f i n a l l y w eg i v e d 也ei m p l e m e n t a t i o np r c c e s so fm es y s t e m s k e y 鲫b m o d u l e u n d e rt l l er e a l i 刎i o ns y s t e m 锄dt l l ef i o 肌e rs y s t e l n ,w et e s t e ds o m eo ft h e m o d u l e s t h r o u g l lt l l ec o m p 撕s 0 n 锄d 锄| a l y s i so ft e s tr e s u l t s ,c 0 面珊e dm es u p e r i o t ) ,o f t o p 0 1 0 9 i c a ls c h e d u l i n ga p p r o a c h 1 1 1 e 删i z a l i o no ft l l et o p o l o g ) rs c h e d u j i n g b 锻e ds o n 毗鹏a u t o m a t e dt e s t i n gs y s t e mh 嬲 g r e a t l ye l l h a n c e dt 1 1 ee 壤c i e n c yo f t 1 1 et e 瓯p l a y i n ga n t i v er o l ei i ls h o n e n i n gm ep r o d u c t d e v e l o p m e n tc y c l e 锄di m p r o v i n gt 1 1 eq u a l i t yo fp r o d u c t s k e y w o r d s :s o r w a r et e s ta u t o m a t i o n ;t e s tt 鼬k ;t e s tt 0 p o l o g ) ,;t 0 p o l o 科s c h e d u l i n g 西南交通大学硕士研究生学位论文第1 页 1 1 研究背景和意义 第1 章绪论 随着现代信息技术的发展,软件在各种领域中都发挥着重要的作用,它替代了人们 的许多工作,极大的提高了社会生产的效率,给人类社会的发展提供有力的支持。在软 件被应用到各行各业,功能不断增强的同时,软件的漏洞或者错误也给人类社会造成了 一些意想不到的灾难【u 】。美国标准与技术研究所( n a t i o n 甜i i l s t i t u t eo fs t 觚d a r d s 锄d t e c l l i l o l o g y ) 在2 0 0 2 年曾经公布了一项有关由于软件而引发的经济损失报告中数据显 示,由软件缺陷而造成的美国的经济损失竟高达5 9 5 亿美元1 3 4 1 。由此可见,有效提高 软件产品的可靠性以确保软件产品的质量是至关重要的i 副。 有效提高软件产品的可靠性的必要手段就是进行软件测试,软件测试是软件开发过 程的一个重要组成部分,对于质量保证具有举足轻重的作用1 6 ,7 】。然而软件测试工作并 不轻松,据统计,软件测试的开销占开发总成本的3 0 至5 0 ,而其耗费的工作时间往 往超过了整个开发周期的5 0 【8 9 j 。因此,提高软件测试的性能和效率具有重要意义。 软件测试按测试手段分为手工测试和自动化测试,早期的软件测试主要是手工测试 【1 0 1 。手工测试的一个显著的特点是重复性劳动,容易使人产生厌烦的心理,同时手工测 试的工作效率也极低【l l 】,且对于一些如负载测试、并发测试、回归测试等非功能性方面 的测试,手工测试操作起来会很难甚至不可能完成。如回归测试,在产品的研发周期中 占据了非常重要的地位,同时具有非常高的重复性,在研发过程中或产品发布以后软件 版本的维护过程中,需要花费大量的人力去完成几十乃至几百轮的回归测试。为了解决 这些问题,自动化测试技术逐渐的发展了起来i l2 u j 。 自动化测试技术的出现及发展,部分或完全的替代了手工测试繁杂、重复性的劳动, 将手工测试人员解放出来,更加专注于测试用例的设计上来。相对手工测试,自动化测 试在测试覆盖率和测试效率方面都占有很强的优势,特别是在项目时间紧的情况下,自 动化测试显得尤为重要。另外,自动化测试的代码还可以重复使用,在涉及大量的回归 测试时,可以大大缩短测试周期,缩减开发成本【1 4 1 。因此,对于自动化测试技术的研究 具有重要的现实意义l l5 。 1 2 国内外研究现状 国外对软件自动化测试的研究大约在二十世纪九十年代就开始了,逐步形成了一套 比较成熟的理论,也出现了一些比较优秀的自动化测试工具【1 6 1 。当前主流的测试工具有 m e r c u d r 的m e r c u d ,i n t e r a c t i v e s 系列、i b m 的r a t i o n a l 系列、c o m p u w a r e 的d e v p a r t n e r 系列和s e g u e 的s c g u es o 脚眦等等。另外还有一些用于开发源代码的测试工具,比如: 西南交通大学硕士研究生学位论文第2 页 j u n i t 、a n t 、c t u s 和j p r o b e 等纠1 7 1 。 国内的软件企业也越来越重视自动化测试,陆续出现了许多具有一定自动化测试实 践经验的企业。但由于起步较晚,相当多企业的自动化测试还未形成良好的体系,在实 践中也没有收到显著的成效,大都还处于探索的阶段【1 8 ,1 9 】。 由于各公司的产品及功能不尽相同,选用的自动化测试工具、脚本语言等等也可能 不一样,因此自动化测试的实现模式也有所不同。然而自动化测试的实现原理都是:通 过自动化测试工具或其它方法,依照测试工程师预先制定的计划对产品进行自动化测 试;自动化测试过程都是:先制定测试的计划,通过测试的需求分析设计出适合于自动 化测试的用例,然后搭建测试环境,设计和编写自动化的脚本,最后验证脚本的正确性, 最终将其运用于产品的自动化测试中。 在一般的自动化测试过程中,都是首先根据测试任务中拓扑需求,为测试任务分配 满足所有测试条件的测试资源,并且一直独占分配到的测试资源,直到整个测试任务执 行完,才把占用的测试资源释放出来,供其它测试任务占用。这种自动化测试方式满足 了测试任务中所有测试用例的设备需求,使得测试任务能够顺利完成。然而,也存在着 明显的不足: ( 1 ) 自动化测试效率还有待提高【1 4 ,2 0 j 。目前大多数自动化测试系统基本上都支持 并行运行测试任务。例如:当要完成5 个模块的测试时,这些模块需要运行的时间分别 为5 h 、4 h 、2 h 、3 h 和2 h ,假设平台中的设备满足这5 个模块的需求时,这5 个模块将 并行运行起来,最多需要5 h 就能运行完成。这跟以往的手工测试或串行运行方式相比, 效率确实提高了许多。但对于一个测试模块而言,如果包含的测试用例很多,比如有 1 0 0 0 个,如果按照现有自动化测试的方式,执行完一个测试用例后才执行下一个,整 个测试模块的测试周期将非常长,有的甚至长达两至三天,严重的影响了自动化测试的 效率。 ( 2 ) 测试资源利用率低 2 1 1 。在为每个测试任务分配设备的时候,采用“最大设备 需求”来分配的,即如果一个测试任务中有l o 个测试用例,其中有4 个测试用例都是 需要3 台测试设备,有一个测试用例需要8 台测试设备,有5 个测试用例需要l 台测试 设备,平台在调度该测试任务时会为其分配8 台测试设备。然而在执行该测试任务的过 程中,实际上用到8 台测试设备的时间是很少的,而在运行其它测试用例时大部分的测 试设备却都是处于被占用且空闲的状态,其它因测试设备不够而无法运行起来的测试任 务就被阻塞了。由此可见,由于低下的资源利用率同时也严重的影响了自动化测试的效 率。 ( 3 ) 测试拓扑的重构【2 2 1 。一个测试任务中的每个测试用例都有自己的测试拓扑。 平台在执行该测试任务时,每执行一个测试用例,都会根据该测试用例指定的拓扑文件 重新构造一次测试拓扑,严重的影响了自动化测试的效率。 西南交通大学硕士研究生学位论文第3 页 ( 4 ) 缺乏针对测试过程的相关处理。经常容易出现这样的情况:当某个或多个测 试任务执行完成后,发现几乎所有的测试用例都失败了。出现这样的结果大都跟测试环 境有关,就是因为没有对测试环境的变化采取有效的应对措施,而导致浪费大量的时间 在无效的测试上。 ( 5 ) 测试资源没有及时的释放。当某些任务进程出现异常而被挂起,而这些进程 并没有退出时,会导致占用的测试资源不能够及时的释放出来,影响了资源的利用率, 同时影响了测试的进度。 1 3 本文的主要研究内容 本文在研究了国内外自动化测试的发展情况后,借鉴优秀的自动化测试技术,并结 合目前软件自动化测试系统实现方式中的不足之处,给出了一种基于拓扑调度的软件自 动化测试系统的实现方式,并将该方式应用到了实际的自动化测试过程中。在优化了平 台的同时,也极大的提高了自动化测试的效率。本文的研究内容主要包括以下几个方面: ( 1 ) 实现测试任务的拓扑调度方式。这种方式将一个测试任务拆分成了多个测试 子任务,由原先执行一个测试任务变成了并行执行多个子任务,能大大地提高自动化测 试的效率。 ( 2 ) 实现在平台中不同的t e s t b e d 中选择设备。测试任务中的多个子任务根据自身 设备的需求情况遍历平台中各t e s t b e d 中的设备,直到找到符合的设备为止。而不再是 在指定的某个t e s t b e d 中选择设备,以提高测试设备的利用率。 ( 3 ) 对测试设备进行有效性检测。检测平台中无效的测试设备是否变得有效,如 果变有效,就将其尽早的应用到测试过程中。 ( 4 ) 主动回收平台中的测试设备。当某个测试进程异常挂起而不能正常释放测试 设备时,平台会主动去回收这些被占用测试设备,以提高测试设备的利用率。 ( 5 ) 优化测试任务及测试拓扑的执行顺序。测试任务和测试任务中的各测试拓扑 都按照优先级的方式先后执行,更加符合实际测试过程中的需要。 1 4 本文的组织结构 课题主要内容是基于拓扑调度的软件自动化测试系统的实现及应用。论文总共包括 五章,各章的主要内容如下: 第一章绪论 首先在研究背景中简述了软件测试的概况,引出实施自动化测试的必要性。在此基 础上给出了国内外自动化测试的发展情况,并指出目前自动化测试技术中存在的不足之 处,引出本文的主要研究内容,最后给出了本文的内容组织安排。 第二章软件自动化测试技术相关分析 西南交通大学硕士研究生学位论文第4 页 本章首先阐述了自动化测试的概念,包括自动化测试的特点和适用范围。然后概述 了自动化测试技术的发展过程。最后分析了自动化测试中的调度技术,阐述了自动化测 试中引入调度的必要性。 第三章软件自动化测试系统的总体分析 本章在分析了自动化测试的运行平台后,主要对基于任务调度的软件自动化测试系 统与基于拓扑调度的软件自动化测试系统进行了分析与对比,突出采用拓扑调度方式的 优越性。 第四章基于拓扑调度的软件自动化测试系统的设计 本章给出了基于拓扑调度的软件自动化测试系统的详细设计过程。在给出了系统的 总体设计架构和运行流程后,重点给出了系统关键实体的规格设计和内部行为的详细设 计过程。 第五章基于拓扑调度的软件自动化测试系统的实现及应用 本章先给出了软件自动化测试系统的开发与运行环境,接着给出了系统的总体实现 及其中部分关键子模块的伪代码实现过程。然后以交换机上的v l 悄功能模块为例, 描述了自动化测试的整个流程。最后将拓扑调度方式与任务调度方式的软件自动化测试 系统中的测试结果进行了比较与分析,验证了拓扑调度方式的高效性。 西南交通大学硕士研究生学位论文第5 页 第2 章软件自动化测试技术相关分析 软件自动化测试是软件测试的一个重要分支,它的出现主要是为了减轻手工测试的 劳动量,提高软件测试的效率,以达到提高软件质量的目的【2 3 1 。随着人们对软件产品质 量要求不断地提高,软件自动化测试技术也得到不断的发展,而提高自动化测试的效率 仍是其中一个重要的课题。 2 1 软件自动化测试的概念 2 1 1 软件自动化测试 软件自动化测试是一种用工具替代或辅助测试人员进行软件测试的过程。软件自动 化测试的主要目的是减轻手工测试的工作量,保证软件质量,以达到缩短软件测试周期、 降低研发成本的效果。软件自动化测试采用自动执行自动化测试脚本来测试相关的产 品。自动化测试脚本是采用某种特点的语言编写,在特定的系统环境下实现的代码。根 据测试的复杂度,也可以借助其它语言来解析文本1 6 1 。 3 a u t 伽a t e dt e s t i n g i n t r o d u c t i o np r o c e s s u 勺 写0 g g pp j 口 ) o 目 h 鼍警 旧口 a u t 伽慨t e dt e s t i n g l if e c y c l e m e t h o d 0 1 0 9 y ( a t l 脚) 6 t e s tp r o g r 明 r e v i e - & a s s e s s 皿e n t h 口 8 2 -p p o 一 oj - 口 o n 1 d e c i s i o nt o a u t o m a t e dt e s ti n g 图2 1 软件自动化测试的生命周期 软件自动化测试本身就是一项开发工作,同样需要经历测试的规划、需求分析、设 计、开发、执行、评估等过程,软件自动化测试的生命周期如图2 1 【16 2 4 2 5 l 所示。测试 过程应该与开发过程同时进行,测试越早的介入,软件中的问题就越早的得以解决,对 测试的整体时间造成的影响也就越小1 1 3 】。 2 1 2 软件自动化测试的特点 自动化测试倍受软件开发商的青睐,使得众多软件公司投入大量的人力、物力去开 西南交通大学硕士研究生学位论文第6 页 发和使用自动化测试工具,一方面自动化测试已经成为软件测试行业不断发展的一种趋 势,无法抵挡。如果不能跟上这种潮流,在软件行业中最终将无自己的立足之地;另一 方面是自动化测试与手工测试相比,存在如下的许多优点【1 6 ,1 7 1 : ( 1 ) 完成一些手工测试难以完成或无法操作的测试 对于一些非功能性方面的测试,比如:并发测试、崩溃性测试、压力测试等等,手 工测试实施起来是很难的甚至不可能完成的,然而自动化测试却可以很方便的完成这些 测试。 ( 2 ) 节约了回归测试所需的开销 在软件的新版本需要回归测试时,这时大部分的测试内容都和前一个版本是相近或 相同的,如果用手工测试再重新测试一遍,将是一个非常费力的过程,如果使用自动化 测试,不但减轻了测试人员的工作量,节省了人力资源,同时也大大减少了测试的时间, 提高了测试的效率。 ( 3 ) 提高了测试的效率 自动化测试由于采用机器来代替人工操作,可以整天整晚不停的测试,将测试人员 从繁琐的测试中解脱出来,将精力更多的投入到自动化测试过程的规划和设计当中。 ( 4 ) 可重复性和一致性高 每次自动化测试执行的脚本都是相同的,而手工是很难做到这样的。这样既减少了 手工测试的工作量,又保证了测试过程的一致性,避免了因人为因素而造成测试错误的 可能,提高了测试的质量,同时还增强了测试的可信任度。 ( 5 ) 提高了测试的覆盖率和深度 通过自动化测试工具的录制回放及数据驱动来测试功能,提高了测试的覆盖率。通 过测试工具的辅助分析功能,提高了测试的深度【2 刚。 ( 6 ) 增加了软件的可信度 由于每个测试人员有自己的特殊经历和技术背景,有自己的操作习惯。这就导致了 测试可信度的降低。而自动化测试在很大程度上避免了这些问题。 总的来说,软件自动化测试通过较少的开销却能够获得更彻底的测试,提高了软件 产品的质量。然而,软件自动化测试也绝非万能的,也有它的局限性。对于一些很少运 行的测试、感官方面的测试、物理交互方面的测试等等,自动化测试实施起来是比较困 难的而且也是没有多大必要的。因此,在实际使用时,只有对其进行合理的设计和实施, 才能更好的发挥它的作用。 2 1 3 软件自动化测试的适用范围 通过以上对自动化测试特点的分析,可以看出,自动化测试在重复性较高的回归测 试和手工测试难以完成的性能测试方面,体现出了巨大的价值。而尽早的引入自动化测 西南交通大学硕士研究生学位论文第7 页 试,也将大大提高软件的质量。表2 1 给出了各种测试类型中使用自动化测试的参考 【1 6 ,1 7 l o 表2 1 各测试类型中自动化测试的参考 测试类型测试描述引入自动化的情况 单元测试通常由开发人员来完成,在编写通过引入自动化单元测试,能 组建测试代码前就制定了单元测试用例。当单产出更加稳定、质量更好的代码。 元测试通过时,代码也就完成。 s m o k et e s t i n g 简单的检查程序在运行时是否会冒烟测试通常采用自动化来测 ,构建版本测试出现问题。主要是确保软件是可以工试。 作的,以开始更大的测试工作。 功能测试主要是对各单元集成后的测试。这类测试通常是更加复杂测试 ,集成测试的基础,处理大量边缘测试合并后 制造出不同的错误。 系统测试通过模拟用户真实的使用场景,由于系统环境会变化,主要由 用例测试证明系统满足用户需求的功能测试。手工测试完成,不需要引入自动化 测试。 回归测试重复已经存在的测试,这种测试非常适合引入自动化测试,在 通常会执行许多次。每次构建完成后执行,以验证系统 的某些改变是否影响到了其它的功 能。 性能测试包括三种测试类型:负载测试、手工测试一般难以或不能完 压力测试、并发测试成,需要引入自动化测试进行高密 集度的测试。 表2 2 对自动化测试和手工测试的适用范围进行了一个概要的总结。总的来说,适 合于采用自动化测试的通常是一些生命周期较长的项目或产品,且自动化测试实现起来 也比较容易。而是否值得使用自动化测试,需要看它是否具有自动化测试的特点以及高 的投资回报率【2 7 1 。 表2 2 自动化测试和手工测试的适用范围 自动化测试手工测试 产品型项目周期过短的项目 增量开发、持续集成的项目软件不稳定的时期 回归测试定制型项目 重复性高、机械性的动作系统的业务逻辑或交换太复杂 需要频繁运行测试的项目用户体验型测试 涉及物理交互方面的测试 用户很少用到的测试 西南交通大学硕士研究生学位论文第8 页 2 2 软件自动化测试技术的发展和特点 伴随着软件测试高效率的需求,软件自动化测试出现了。对软件自动化测试技术的 研究是一个渐进的过程,图2 2 f 2 8 1 表示了其发展的过程和特点。 图2 2 自动化测试技术的发展 最初对自动化测试技术的研究主要集中在对手工测试中一些繁琐、机械重复的工作 采用自动方法来实现或替代。但此时的自动化测试活动只是一些偶然的行为,在一定程 度上能够提高某些测试行为的效率,减少测试人员的工作,但对于整体的测试过程没有 太大的提高。 随着自动化测试在测试活动中的应用,人们将更多的目光投向了自动化测试结果的 可靠性上,引入了各种测试准则和测试策略,以指导自动化测试过程及测试结果的评估。 在自动化测试进一步的发展过程中,上面提到的评测标准也暴露出了一些局限性。 对自动化测试的研究涉及到了进化计算和人工智能等领域,一些高性能的算法被引入到 自动化测试中,更大程度的减弱了自动化测试对于人工干预的依赖。近期涌现出了各种 面向目标的自动化测试技术的研究,极大的提高了软件自动化的程度和测试的性能。 2 3 软件自动化测试中的调度技术 软件自动化测试的研究重点是如何尽大可能的进行自动化测试,如何更好的提高测 试的效率和可靠性。一个好的软件自动化测试系统来源于好的自动化测试方法,自动化 测试的方法越好,长期使用后获得的收益就会越大1 2 9 l 。而自动化测试中调度技术运用的 好坏,直接影响着自动化测试方法的优劣【3 0 1 。 2 3 1 调度的概念 : 软件自动化测试系统中的调度用于管理和监控测试执行端的测试任务队列。测试任 务队列中的测试任务按照一定的调度策略有秩序的一一执行,同时测试平台中的主控服 务器端可以实时的监控各测试任务的运行情况,有效的处理异常情况。简单的说,软件 西南交通大学硕士研究生学位论文第9 页 自动化测试系统中的调度如测试任务的组织者,使测试过程有条不紊的进行。 2 3 2 调度的必要性 最初在软件自动化测试系统还没有采用调度过程时,通常会出现以下一些情况: ( 1 ) 测试信息不透明,很可能导致操作混乱。由于测试任务在用户本地执行,用 户间测试任务的运行是相互隔离的,即某个测试用户不清楚其他测试用户的测试任务运 行情况和设备使用情况。这样往往会因为不同测试任务采用了相同的测试设备而导致测 试任务运行失败。 ( 2 ) 系统异常诊断效率低。一方面在测试任务出现连续错误时,不能即时的找到 失败原因并停止任务的运行,另一方面不能对平台的所有测试情况有个整体的把关。 ( 3 ) 资源共享性及利用率低。由于用户间测试的隔离,使得一些测试信息不能共 享,测试资源利用方面也没有一个合理的规划。对于自动化测试这种本身就需要用于大 量测试的工具,这种方式严重的阻碍了自动化测试进一步的发展。 提交测试任务 ) 飞 主控调度并运行 g 测试任务 l 提交测试任筑八 , r f - - - - - - - - - - j - - _ - o l 提交测试任簧怒 咚 , 一 i 念 主控服务器 n l 提交测试任奄 , 7 飞 图2 3 主控服务器调度测试任务示意图 通过以上分析,软件自动化测试系统中有必要提供一种方式来有效的管理测试任 务,这种方式需要将测试的提交者与测试管理者隔离开来,设立单独的测试管理者来管 理测试任务,使测试提交者将更多的心思放到自动化测试的设计上,这种方式就是调度, 而测试管理者就是测试平台中的主控服务器,如图2 3 所示。 2 3 3 调度的工作原理 软件自动化测试系统中的调度过程如图2 - 4 所示,测试人员将测试任务提交到平台 西南交通大学硕士研究生学位论文第1 0 页 的主控服务器上后,主控服务器会读取平台中所有待测试的测试任务,包括从未调度过 的测试任务和调度过但却没有运行起来的测试任务。如果平台中没有待测试的测试任 务,则等待一定时间后进行下一轮的调度;如果平台中有待测试的测试任务,则根据这 些测试任务的需求情况及调度原则选择出一个测试任务,并调用相应的任务执行模块执 行测试任务。除此之外,调度过程还提供了对测试任务运行情况的实时监控,以方便测 试人员的查看及相应的处理。 获取平台中所有待测试 的测试任务 画蕊哕 工二 一 斤这些测试任务i 的需求情况i 根据一定的调度原则 选取其中一个测试任务 调用任务执行模块执行 测试任务 等待一定 时间 图2 _ 4 软件自动化测试系统中的调度过程 采用调度以后,一方面由于测试任务的执行有了先后的顺序,加之对测试设备的有 效管理,将不再出现测试任务拥塞和“抢占”设备的问题;另一方面由于测试任务统一 由主控服务器来管理,用户可以很方便的查看到目前平台中的测试情况。且整个测试过 程完全由主控服务器来完成,测试用户只需提交测试任务即可,不再承担测试的整个过 程,大大地减少了资源的耗费。 从以上的分析可以看出,在软件自动化测试系统中引入调度是非常有必要的。调度 的引入给自动化测试带来了更好的可操作性及可控性。一个好的调度方式还能极大的提 高自动化测试的效率。而好的调度方式结合了对自动化测试本身特征深入的分析以及实 际测试产品的需求分析。 2 4 本章小结 本章首先对软件自动化测试的概念、特点和适用范围进行了研究,接着给出了软件 自动化测试技术的发展历程。在对软件自动化测试有一个大致了解的基础上,重点阐述 了软件自动化测试中的调度技术,为接下来各章节的内容做好了铺垫。 西南交通大学硕士研究生学位论文第1 1 页 。第3 章软件自动化测试系统的总体分析 软件自动化测试系统中调度技术的运用为自动化测试技术带来了一次革新。软件自 动化测试系统的好坏与调度方式有极大的关系,选用优越的调度方式,能给自动化测试 带来巨大的收益。本章首先对软件自动化测试系统运行的测试平台进行了分析,在此基 础上,接着对系统所采用的两种调度方式任务调度与拓扑调度进行了分析与对比。 3 1 自动化测试平台分析 电 自动化测试平台提供了自动化测试的运行环境。简单、扩展性良好的测试平台为系 统的软件设计奠定了良好的基础。系统测试过程中主要涉及对平台中测试设备的控制与 t o p o 环境的构造。 3 1 1 自动化测试平台架构 自动化测试平台如图3 1 【3 i 】所示,包括控制中心( m c ,m a s t e rc o n t r 0 i l e r ) 、终端 服务器( t s ,t e 珊i n a ls e r v e r ) 、拓扑交换机( t o p os w ,t o p o l o g ys 诵t c h ) 、测试设 备( d e v ) 和测试p c 。 测试网络 数据线 图3 l 自动化测试平台 整个系统分为控制网络和测试网络两大部分。控制网络主要由t s 、m c 、d e v 、p c 构成,测试网络由d e v 、p c 、t o p os w 构成。之所以d e v 、p c 既属于测试网络又属 于控制网络,一方面是因为它们都是通过m c 来控制,另一方面它们还需要通过t o p o s w 来构成各种网络拓扑用于测试。控制网络用于传输m c 与其它设备之间的控制信息 来控制设备,根据脚本预先设计的测试步骤向测试设备发送测试命令,搜集测试命令的 西南交通大学硕士研究生学位论文第12 页 执行结果;测试网络用于模拟各种实际的测试环境,根据测试用例的要求在d e v 和p c 之间传送各种测试数据流。图中除去m c 以外的其它部分被称作一个测试床( t e s t b e d ) , 一个软件自动化测试系统中可以有多个t e s t b e d ,多个t e s t b e d 可以同时工作,m c 可以 对多个t e s t b e d 进行控制。 m c 是软件自动化测试系统运作的核心,主要用于对测试设备的控制、测试任务的 管理和执行、测试结果的分析以及相关文件管理等等。提交到平台中的所有测试任务、 测试脚本相关文件、测试设备的配置文件等等都统一保存在m c 上。测试任务一旦提交 到平台后,整个测试过程完全由m c 完成,m c 的工作过程如图3 2 所示,主要包括了 测试任务的调度、为测试任务分配测试设备、执行测试任务、分析测试结果、发送测试 结果等过程,这些过程的进行离不开m c 上相关文件的有效管理,也离不开对平台中设 备的控制与测试t o p o 环境的构造。 n 调度测试任务 为测试任务分配 测试设备 n 配测试设 成功? y 获取测试设备控制权 根据测试设备、t o p o s w 构造t o p o 环境 根据测试脚本向 测试设备发送命令 搜集测试命令执行结果 分析测试结果并通过邮 件发送给相关人员 3 1 2 测试设备控制权的获取 图3 2m c 工作过程 那么,m c 是如何获取到测试设备的控制权的呢? 每一个t s 上都有很多c o n s o l e 口,每个c o n s o l e 口都连接到了各d e v 的c o n s o l e 口 上。t s 上的每个c o n s o l e 口都对应了一个t e l n e t 的端口号,这样就有了d e v 上c o n s o l e 口与该端口号的关联。m c 通过t e l n e t 命令登录t s 的i p 地址,并选择t e l n e t 的端口号, 就可以实现对d e v 的c o n s o l e 口进行控制,即实现了对测试设备的控制。 对于p c 的控制,每个测试p c 至少有两个e t l l 接口,一个连接到控制网络,其它 的接口都连接到测试网络。m c 利用s s h 连接通过控制网络取得p c 的控制权,发送命 令和接收回显信息的过程都通过s s h 完成。m c 上通过发起多个s s h 连接就可以实现 同时对多个p c 的控制。同样,在m c 上对t s 发起多个t e l n e t 连接,就是实现同时对多 西南交通大学硕士研究生学位论文第13 页 个d e v 的控制。 3 1 3 测试t o p o 的构造原理 对于测试用例中的各种逻辑t o p o ,又是如何利用平台中的物理设备构造的呢? 主 要是运用到了v l a n ( r t u a ll o c a la d e an e m o r k ,虚拟局域网) 【3 3 1 技术。v l a n 技术 将物理网络划分出各种逻辑网络,每一个逻辑网络为一个广播域,对应一个v l a n a v l a n 内的各主机之间可以通信,而v l a n 间的各主机之间不能直接进行通信。这样, 广播报文就被限制在了一个v l a n 内,从而实现了逻辑网络的划分。 n e t i n 价n e n n 矾n e t i n q 2n e t i n 咖 p cd e v ld e v 2 图3 3 逻辑t o p o 示意图 对应于自动化测试中的逻辑t o p o ,如果两台设备在逻辑上相连,则将与两台设备 相连的t o p os w 的端口划分到同一v l a n ,这样就实现了两台设备的逻辑互连。需要 特别指出的是,这个v l a n 号在整个t o p os w 中必须是唯一的,否则将会引起数据传 输的混乱。 例如,图3 3 所示的逻辑t o p o 的构造过程是:将p c 的接口n e t i n t f l 连接到t o p o s w 上的端口与d e v l 的接口n e t i n t f l 连接到t o p os w 上的端口划分到一个v l a n 中; 将d e v l 的接口玳t i n 也连接到t o p os w 上的端口与d e v 2 的接口n e t i n t f l 连接到t o p o s w 上的端口划分到另一个v l a n 中。这样就实现了逻辑t o p o 到物理t o p o 的构造。 3 2 基于任务调度的软件自动化测试系统的分析 在对自动化测试平台有了一个大致的了解后,本小节对基于以上平台所设计的一种 基于任务调度的软件自动化测试系统进行了分析。 3 2 1 系统工作原理 基于任务调度的软件自动化测试系统的运行流程如图3 - 4 所示,总体上分为了三个 阶段:测试任务的提交、测试任务的调度及测试任务的执行。测试人员将测试任务提交 到平台后,由任务调度过程来完成所有测试任务的调度和执行。 厂 厂 厂 i 测试任务的提交h 测试任务的调度卜_ 叫测试任务的执行i 1j1j 1一 图3 - 4 基于任务调度的软件自动化测试系统的运行流程 任务调度以测试任务为调度的基本单位瞰】,具体调度过程如图3 5 所示,首先从测 西南交通大学硕士研究生学位论文第1 4 页 试任务队列中根据测试任务的优先级选出一个测试任务,然后调用相应的任务执行模块 执行测试任务。对于各个不同的测试任务,首先满足优先级高的测试任务运行条件,使 得优先级高的测试任务尽早执行。 图3 - 5 任务调度过程 在一般的软件自动化测试系统中,测试任务中各测试用例的执行过程都是先为测试 用例分配测试设备,根据测试设备构造物理t o p o ( t o p o l o g y 的缩写,中文含义为“拓 扑 ) 环境,然后执行测试用例的脚本,脚本执行结束后清除测试设备上的配置并释放 占用的所有测试设备。对于基于任务调度的软件自动化测试系统,经任务调度出来的测 试任务中各测试用例的执行过程如图3 6 所示。由图可知,这种调度方式的测试任务运 行具有如下特点: ( 1 ) 测试任务中的每个测试用例串行运行。测试任务中包含的所有测试用例按照 预先编写的测试套件中的先后顺序依次执行,只有当一个测试用例执行完以后,才能执 行下一个测试用例。 ( 2 ) 每执行一个测试用例都需要为本测试用例选择一次测试设备,根据测试设备 构造一次物理t o p o 环境,然后运行测试用例脚本,脚本运行完后再清除设备上的配置 并释放占用的设备。 西南交通大学硕士研究生学位论文第15 页 执行第1 个测试用例 执行第2 个测试用例执行第n 个测试用例 1r 迓择本测试用例 选择本测试用例 选择本测试用例 所需设备所需设备 所需设备 j 。 1 li 构造t o p o 环境 构造t o p o 环境构造t o p o 环境 j1 lj 运行用例脚本运行用例脚本运行用例脚本 i l 清除配置并释放设备清除配置并释放设备 清除配置并释放设备 图3 - 6 基于任务调度的软件自动化测试系统的测试任务执行过程 3 2 2 存在的问题 通过以上对基于任务调度的软件自动化测试系统的分析,可以看出,该系统存在许 多不足之处,总结如下: ( 1 ) 测试资源利用率低。在某一时间内,一个测试任务中只有一个测试用例在运 行,无论平台中的设备是否满足其它测试用例的需求,也只能待该
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通运输与物流:新能源车辆普及下的行业变革报告
- 工业互联网时代2025年自然语言处理技术在工业自动化生产线中的应用前景分析
- 低碳城市案例研究:2025年城市规划与城市安全
- 银行油宝协议书
- 赠送股票协议书
- 农场村打井协议书
- 麻将休战协议书
- 金融委托协议书
- 院民管理协议书
- 上下文管理协议书
- 06竣工财务决算审计工作底稿(试行)
- 工伤保险医疗费用智能审核系统建设
- 农作物品种(玉米)区域试验技术规程
- 2022年江苏省卫生系统事业单位招聘考试(护理学)参考题库汇总(含答案)
- 唐诗三百首word版
- 造林工程模式典型设计图文版
- WST 661-2020静脉血液标本采集
- 乙型肝炎病毒表面抗原诊断试剂盒(酶联免疫法)说明书
- 旅游景区财务制度及流程
- 资料员岗位知识与专业技能ppt课件
- 校本教材毽球
评论
0/150
提交评论