1006大设计翻译版基于STAF交通物联网测试框架_第1页
1006大设计翻译版基于STAF交通物联网测试框架_第2页
1006大设计翻译版基于STAF交通物联网测试框架_第3页
1006大设计翻译版基于STAF交通物联网测试框架_第4页
1006大设计翻译版基于STAF交通物联网测试框架_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

ResearchandImplementationofanInternetTrafficTestFrameworkbasedonSTAFAuthor:YangTutor WuSoftwaretestingisanimportantmeanstoensuresoftwarequality.Withtherapiddevelopmentofcomputertechnology,thecomplexityofsoftware esmoreandmorehigh.Thetraditionalmanualtestexecutionexpressessignificantlimitations.Facedthisdemand,automatingtestingtechnologycameintobeing.TheInternetofthingstechnology,namely,isaclassofinformationsystemswhichcanachieveinligentidentify,locate,track,andmanagebysensingdevicesandconnectingarticleswiththeInternet,inaccordancewiththeagreedprotocol.TransportationofThingsisoneofimportantapplicationareasoftheInternetthings.Inthecontinuousprocessofconstructionandusingoftrafficnetworkingsystem,especiallyduetothelargeandextensiveuseofdifferenttypesofsensors,thetraditionalsoftware-basedtestingmethodshavebeendifficultto puterinteractionfortheprotectionofthequalityandsafetyofthetransportationsystemofthings.ThisarticlediscussesthecallofIBMdevelopedsoftwaretestautomationframeworkSTAF(SoftwareTestingAutomationFramework),thenaccordingtothesimulationgeneratedtestdata,buildingautomationtestexecutiontools.Contentsofthispaperare:ComplywiththetestscriptlanguagePythonparsingSTAF-basedautomationtestThetechniquesoftestresultscollectionand:SoftwareTesting、TheInternetofThings、Test 摘 绪 关于 STAF简 STAF工作原 STAF的功能及应 目 STAF测试框 调用STAF执 总结与展 致 2010年,我国把“物联网”技术列为“加快培育和发展的性新兴产业的决定”7个重点发展信息化产业之一,同时纳入我国“十二五”重点发展及规划。以传感器等各种感知技术为的物联网应用越来越受到关注,国防安全、交通、工业生交通行业作为物联网最重要的应用领域之一,已出现了许多正在建设或已建成使用的交通物联网系统。按照交通基础设施、交通工具和交通对象三要素,可将交通物联网系统划分为三类,分别是:(1)交通基础设施物联网,例如隧道/桥梁安全系统、车(2(3)交通对象物联网,例如交通物流货联网系统等。但在交通物联网系统不断建设使用的过程中,特别是由于大量的、不同类型传感器的广泛应用,使得传统的基于人机交互的软件测试方法已难以再用于保障交通物联网系统的质量和安全。实践中,在交通工程设计、建设和运维过程中存在以下问题:交通物联网系统上线前设计阶段,无法对传感器网络设计方案进行科学直观的数字化论证,即无法对其合理性进行量化评估,验收阶段的系统测试也仅限于对某几个功能的简单测试,无法对包含全部传感器在内的系统整体进行客观有效的综合验收,单位无法全面掌控系统的整体质量;交通物联网系统上线后运维阶段,由于不同类型的传感器的大量部署,测试采样无法覆盖全部的传感器,系统方案调整无法进行有效的回归验证,只能遇到问题解决问题,导致系统长时间处于高成本状态;交通物联网系统建设过程中,各个传感子系统常常由不同的承建厂商建设,用性进行客观,因而易造成各承建方互相推诿,对系统整体建设质量造成重大影响。所谓仿真是指通过对真实世界或实际系统的某一部分结构或功能进行抽象实现,旨在通过较少的花费和代价实现对系统整体的分析和试验。在飞行器设计、传感数据融合以及传感器网络协议分析等应用领域已有学者提出过通过传感器的仿真技术实现系统的测试验证。飞行器系统是应用传感器最多同时也是对系统质量要求最高的系统之一,国内外较早便开始了应用传感器仿真模型测试分析飞行器控制系统的研究工作。2001年,哈尔滨工业大学等人利用语言对影响飞行器发调节参数的转速、温度、热电偶、压力和位移传感器建立了数学模型,并在仿真环境下模拟了传感器卡死、恒增益变化和恒偏差失效故障情况,有效的分析了传感器故障对飞行器发控制系统的影不同传感器数据信息的融合及决策是物联网上层业务系统的重要应用。捷克VTUO公司的PavelPohanka等人于2011年提出一种基于传感器仿真的传感数据融合测随着网络技术的发展,逐渐形成了可自主组网并能智能感知的传感器网络技术。由于传感器节点能量、尺寸受限制,以及传感器节点自身的可靠性,需对传感器节点进行建并仿分其组行为2008,学的Chadresh、Prtap、ingh等人对传感器网络仿真进行了综述,对比分析了13款典型工具各自优势,该作者认为不同工具仿真传感器的抽象程度会有不同,其根本上取决于仿真的目标是什么。防科技大学等人于2004年综述对面向路径的测试数据自动生成方法,基于路径的统的可靠性。贝尔PatriceGodefroid等人在2005年提出自动化随机测试工具DART,将随机测试和符号执试方法相结合,根据符号执行的反馈信息改善随机测试常以及函数终结等情况的可靠性。第三类是基于模型的测试数据生成技术,其测试数据来源于系统需求规格说明和设计文档。2009年,科罗拉多州立大学的riraBandopadhyay等人提出一种使用UML顺序图模型和状态模型的测试数据生成方法,作者扩展了DinhTrng等人的变量赋值图方法,使其能同时分析处理UML顺序图和状态图模型信息自动生成测试数据,通过对影音风暴系统的测试验证了方法生成测试数据的有效性。软件测试(SoftwareTesting于半个多世纪以前,早在1961年,一个简单的软件错误导致了大力神洲际助推器的。这个简单而又昂贵的错误,驱使强制要求在以后的所有关键发射任务中,都必须进行独立的验证,软件测试就从那个时候开始了。伴随着软件开业的发展,软件测试也得到了长足的进步,软件测试大概经历了软件调试阶段、专门的软件测试阶段、成为专门的学科阶段以及软件测试与开发融合阶段。软件测试的理论和技术都得到了质的飞越。软件测试成为软件质量保证的重要40%,软件测试的费用要占到项目总经费的30%[1]。由此可见,软件测试是软件开发系统中重要的组成部分,通过软件测试,可以有效地减少软件错误,提高开发效率。在软件测试日新月异发展的今天,自动化测试(TstAutoaion)正在成为软件测试领域里的一个趋势和潮流。在自动化测试技术中,开发有效、可复用、操作简单的自动化测试框架是目前软件自动化测试的关键[2]IBM公司开发的STA(oftwreTtingutoaionFramewrk)是目前主流的自动化测试框架之一。STAF是一个开源、跨平台、支持多语言的自动化测试框架[3],它围绕组件重用的理念,通过服务调用,例如进(ProcessSrie(MoitrigSrvice(ResurceManageSrvic)、日志服务(oggigSrie)、服务(onitoringSrvice)可以帮助我们省去繁琐的跨平台的自动化框架的建设工作,人们只需集中精力将自身的需求与IBM时下又将执行引擎STAX(SofwrestAuoonxuonEngineSTAFXML数据接口等。由此可见,基于STAF/STAX软件自动化测试的发展历程,从最初的手工磨坊式操作,没有规范与原则,慢慢地发展成如今的分工协作、规范化、流程化[4]。最后,形成了与企业应用结合的适合开发员循标准从世纪80年始对软化试究经,此[5]1.11.1最初,自动测试主要研究如何采用自动方法,来实现和替代人工测试中的繁琐和机此的自动测试活动只是软件测试过程的偶然行为,可在一定程度上提高测试效率,简化测试人员工作,但对整体的测试过程并无太大改进。只有自动具有可靠性,其使用才具有实际的意义。针对不同的测试准则和测试策略,指导测试的自动化过程以及对测试的结果进行评估。这一阶段开始由软件录制/回放(apur/playbak的方式替代手工生成测试,能够对软件做验证,测试的深度和广度比第一阶段大了很多。但也存在一些问题,比较突出的是自动化测试的执行人员担任着开发的工作,这对于软件成本是很大的,一旦软件系统做部分或少量的修改,相应的也要改动,这些工作量是很庞大的。软件测试并不是机械和随机地发现错误,而是带有很强的目的性。从2001年开始,自动化测试开始采用具有一定通用性的测试框架(tst framework)。测试框架的主要思想是将测试 (tetsrip抽象( ion[6]让非技术人(如系统分析师)也可以使用测试工具建立自己的解决方案。比较有代表性的如MruryLodunner、Rtonalrobot等一些商业化的工具同样这一阶段也存在一些问题,只有那些特别重视自动化测试研究的企(如微软、IBM)花费大量的时间和成本开发,适合企业的自动化测试工具其他大部分企业由于前期对自动化测试技术的关注不足导致后期只能选择已有的商业化的工具进行自动化的尝试但是由于商业化的工具一般价格昂贵测试用例库重复使用率低、可扩展性弱[7],这些缺点导致自动化测试在大部分企业中难以推广。面对第三阶段存在的问题,促使某些组织开始开发一些适合中小企业使用的解决方案和工具。这些软件一般是开源的,便于融合和扩展[6]。而且随着网络互联的普及,大大提高了软件开发人员的沟通效率,加速了开源自动化工具的发展。这一阶段的自动化测试也存在问题,如这些解决方案往往是针对某一特定方面的,某些功能未实现,但由于其是开源的,可扩展性与可融合性很强,因此,企业可以很容易的将自身需求与解决方案结合生成适合企业使用的自动化测试平台。综上,软件自动化测试的发展经历了从机器方式实现人工重复操作、统计分析的自测试并测试的正确性。测试不同检测装置与路边传感装置的位置及数量对防伪稽查系统的影响;测试检测装置在不同识别率、路边传感检测装置接收到不完整报文情况从整体上说,在本依托的项目中,需要研究的测试工具可以分为三个模块,即设计测试场景和传感器仿真模型,并编写测试;仿真模块对应生成仿真测试数据;测试框架模块根据仿真测试数据和测试,在被测系统上执试,最后将测试的解分析测试人员编写的Python测试,并解析其测试信息执试根据解析后的测试和仿真工具生成的仿真测试数据,调用STAF实施测试返回将测试执行过程、被测系统的运行状态和返回给测试人员。符合Python语言的测试解析技术基于STAF本文的主要目的在于调用软件自动化测试框架STAF,完成对被测系统(广州市出租车防伪稽查系统的测试工作。在文章的最开始部分,介绍了研究的背景以及国内外下:点描述了自动化软件测试技术的研究现状,这也是本的研究重点。最后的研第2章主要介绍相关的技术。在本章节中,首先对仿真模块所用的GroovNt做了简单的介绍,然后重点描述了测试框架模块需要的工具STAF,主要介绍了它的原理、功能及调用方法。第3章主要介绍项目的概要设计。包括依托系统的介绍、项目整体设计、测试框架43章的概要设计说明,设计详细的数据结构、调用方法等。用5章主要描述实验环境的搭建,实验验证,针对在实验中发现的问题,分析其中总结和展望。对进行总结,找出中的不足之处,并对下一步的工作进行展GrooveNet和测试框架模块所调用的STAF。分析其工作原理,主要的功能,及调用的方法等。GrooveNet是 大学开发的继GrooveSim之后的一种混合式VANET模拟器,实际车辆配有GPS定位装置、车载计算机和无线网络接口,与在它通信范围内的仿真车辆采用相同的协议和数据包类型进行通信。GrooveNet由车辆仿真器、网络仿真器、网络和设备接口、车辆操作控制器四个部分组成,采用模块化结构,具有定义良好的GrooveNet仿真器主要用来研究无线网络协议,由大学开发,能够实现络仿真器,实现难度大,文档较少,限制了它的广泛使用。如图2.1所示:2.1GrooveNetSTAFSTAFSTA(SoftwareTtingutoatinrameork[7][8]是IBM开发的一种开源的、支持多语言并且基于可复用组件机制的自动化测试框架,开发STAF的目的是更好地创建和管理自动化测试用例和环境。STAF(Service即可复用的组件实现,每个服务是一系列功能的集合[9](LggingSrvice(rocssSrvic)、服务(MonitorngSrvic)、文件服务(FileSrvice)等等。STAF本身是一个守护程序称为STAFProc[10],STAProc可以提供一种轻量级的分发机制,将接受的外界请求发送给相应的服务(Srvice)。STAF采用点对点的实现机制,能够减轻自动化测试的负担,加快自动化测试的进程。在STAF的运行环境中所有的机器是对等的,没有客户端与服务器的区别。换一个角度,STAF是一种分布式调用体系,可以在不同的机器、不同的操作系统之间提供一个沟通通讯的平台[8]。它具有如下的特色:跨语言、跨平台使用,包括Java、C/C++,Python,Tcl以及命令行s 易于扩展,让用户能够方便地创建一个服务插入到STAFSTAF比较适应需要构造复杂测试环境的场合[13],复杂的测试环境往往是分布式地,通过STAF将测试任务分发到不同的测试机器去执行,测试机可以方便地执试、收集。STAFSTAF用来帮STAF是一项已经被证明成技术,来提高自动化和可复用性,已经有广泛的平台和语言的支持,并且提供了一个统一的跨团队的基础平台,为自动化测试建立了基础。STAX(SoftwareTestAutomationexecutionEngine)[14]STAF的执行引擎。相当于STAF的一个外部服务。STAX在STAF的基础上帮助用户实现测试用例的分发、STAX的实现过程采用了三种技术:STAFXML和Python[14]。简而言之,STAX在STAF上提供了一些接口,使用户可以灵活地STAF框架完成STAX对外提供一下功能:用户自定义的运行控制力度,支持并行运行,嵌套测试用JavaPython模块,控制运行时间等[15]。STAX还为用户提供了图形化的日志分析的功能,在测试执行结束后,STAX分析记录的结果,生成测试报告。STAFAB,A2.2ABSTAF,并且互相配置了信任关系。用户可以通过在机器A行调用STAF的服务(Service),来实现与机器B的相互通讯,如文件传输、操作机器B、等等。所以STAF的作用实际上就是提供机器之间的通信通道,并提通过2.2.1的讨论我们了解了STAF是一个可复用并对各种应用提供广泛支持的基我们可以单独通过STAF将测试任务集合分发到不同的测试环境去执行[16],但是如果测试任务太多,并且是不断添加新的任务进来,单独依靠STAF就不利于测试任务的执行、管理和了。因此引入了STAX的概念,如图2.3所示。2.3A安装了STAF/STAXSTAFService调用,通过XML格式写在一个文档里,然后由STAX调用这个文档并翻译成STAFService,通过STAF传递给机器B执行。引入STAX机制使多测试任务的问题得到了解决。STAF/STAX详细的体系结构[17]图如图2.4VMESXHOST:用于配置ESXServer:用于配置VCTestDB:用于日志结果;Machine:VMKfsTools:与 的接口,用于创建虚拟磁盘或文件系统,到Module:vmkloadmod的接口,用于装载、卸载、显示装载的vmkernelSTAFSTAF的主要功能包括:自动化测试用例的创建,管理和自动化测试环境的创建,执行计划的创建(例如测试进度的安排和执行)等等。STAF提供一个基础框架,去除了测STAF提供一种可插拔的方式来支持各种平台和语言,使得测试开发与管理人员可以把注意力放在构建自动化的解决方案上。STAF提供很多应用程序编程接口(即APIApplicationProgrammingInterface),支持用户自定义STAF作更进一步的应用开发提供了可能。测试人员可以基于使用STAF随时启动、停止测试机上的任一个程序APISTAFSTAF本身是一个程序(STAFProc)。STAFProc是在机器上运行的进程,被称为一个STAF客户端,提供一种轻量级的分发机制,它接受请求并且发送给相应的服务,这些请求可以来自本地机器或者机器上的STAF客户端。STAF工作在对等环境,各个服务端点即STAF客户端是对等的,从一个端点可直接调用另一个端点提供的服务,包括向机器请求服务,从这个角度来说,STAF是一种分布式调用体系。STAF中的服务分为两种:internal(内部服务)和external(外部服务)。内部服务被集成 中,提供一些关键性的功能,比如数据管理和同步。外部服务STAFProc动态装入,通过共享库(sharedlibraries)来STAF提供了如下几种常用服务程序调用服务(ProcessService):内部服务,利用此服务,STAF可以调用外Windowscmd/notepadUbuntugedit等。文件系统服务(FileSystemService):内部服务,利用此服务,STAF可以对文件系统进行操作,如、删除、查看等操作。日志服务 资源池服务(ResourcePool/ResPoolService):外部服务,提供了对于资源池的服(MonitorService):外部服务,提供了对于STAF运行时的功能信号量服务(Semaphore/SemService):内部服务,提供了两种信号量的操作,mutex和event。压缩服务 服务(Service):内部服务,类似于操作系统的功能,用于检测的STAF是否运行。变量服务 、此外,STAF还提供了延迟(DelayService(HelpService)TraceService)等服务,每个服务都定义了它能接受的请求格式。STAF通过请求来调用服务的功能。每个请求都以字符串的形式发送,这样可以保证STAF能够跨平台运行。完全使用字符串作为请求响应格式可以简化STAF的很多方面,包括与其它语言的接口,服务之间的通信,跨平台的操作等。其他语言只需要通过一个接口STAFSubmit()来请求STAF服务,并且只需传递三个字符串参数(系统、服务、参数)。第一个参数指示目标STAF系统,该参数由STAFProc解析以便确定是在本地(local)处理还是发送到远端STAF、STAF[-verbose] -verbose指定输出采用verbose模式,verbose是一种数据结构;<Endpoint>是操作IP地址,指定目标STAF系统,本机的话可直接写local,否则要有明确的IP地址;<Service>指定要调用的服务;<Request>指调用服务所需的参数。以文件系统服务为例,在WindowsSTAFlocalFSCOPYDIRECTORY$fromDirTODIRECTORY$todirTOMACHINE$hostnameEXT$ext其中,$fromDir指本地文件夹,$todir指文件夹,$hostname指测试平台$ext指将要进行的文件扩展名上述这些服务构成了STAF的基础性能。STAF就是通过这些服务来扩展器功能,提供创建端到端的自动化解决方案。在测试开发与管理人员的测试用例和自动化解决方案中,利用这些服务可以开发更加健壮的、动态的测试用例和测试环境。STAF主要构建了一个网络体系,使得各种机器资源之间可以自由地通讯,比较适应需要构造复杂测试环境的场合,而复杂测试环境通常是分布式的。通过STAF可以将测试任务分发到不同的测试环境中去执行,可以方便地运试机的测试,并收集测STAF:本系统主要使用了STAF令调用、文本分析、文件传输和处理、消息控制的基STAF提供的一些通用的运行控制机制。STAXSTAX(STAFeXecutionengine)STAFXML技术。STAX也属于STAF的一项外部服务,可以使测试用例的发布、执行以及结果分析彻底的自动化。STAX建立在STAF、XML、Python三种已有技术的基础上,在测试人员手里发挥强大的自动化。STAX也提供了一个强大的GUI监视应用程序,可自动完成整个测试过程的动态过程,也可以由用户管理过程,与用户的工作过程交互。交给STAX运行的测试任务采用XML格式描述。在XML文件汇总可定义测试工作流,描述进程与STAF命令调用。STAX可以实现的主要功能包括:PythonJava扩展STAX语言和GUI应用程序的能力事件驱动服务(CronService):按特定时间间隔运行STAF事件驱动服务(EventService):由发生的事件来驱动进程通信,从而执行相关的STAF命令; (NamedCounterService)计时服务 扩展的文件系统请求工具 STAXSTAFXML合各类应用系统,不仅适合B/S结构,而且还适合C/S结构的应用。可以帮助测试人员STAX:在本系统中,系统的测试计划执行引擎(TestSetHarness)STAX的任务功能。STAF/STAXSTAF的安装包可以从STAF提供有Windowsliux、Slaris、Mac等不同平台不同版本的安装包。如果机器上未安装JDK,可以直接含JDK的安装包。本项目2014年版本STAF3.4.17,适用于wndows64-bit机器,不需要JDK包。STAF的安装比较简单,只需要按照安装向导的提示操作即可。大概需要10分钟。 /STAF/bin中的STAF.cfg文件,配置机器间的信任关系,例#Setdefaultlocaltrustmachinelocal://localleveltrustmachine54leveltrustmachine18level修改完毕,可以通过STAFProc命令启动STAF2.5关闭STAF令为:staflocalshutdownshutdown,从这条命令我们可以看出上面提到的STAF令格式。local表示STAF的才做对象是本地系统,第一个shutdown表示服务,此服务提供了STAF的关闭操作。第二个shutdown表示传递给服务的参数,指示STAF把本地的STAF服务关闭。当执行完此命令后STAFProc进程即STAX的安装文件也可以从STAF的上,STAX本身并不需要安装,只需STAFSTAF.cfgSTAFSTAX服务。从这个角度也验证了STAX是STAF的一种外部服务,可以根据需要决定是否加载。STAX完成后,在STAF的安装(C:\STAF\)下新建文件夹services,并将STAX解压到该文件夹中,然后在STAF.cfg的末尾添加如下代码: EXECUTE{STAF/Config/STAFRoot}/services/stax/STAX.jarOPTIONJ2=-Xmx384m SETMAXQUEUESIZE然后重启STAFProc,在命令行下输入 list,即查看当前2.62.6查看STAF本章讨论了仿真测试工具涉及到的两个主要的软件GrooveNet和STAF,并且着重从而引出自动化测试框架的概念,最后对本课题基于的技术进行了详细的研究,包括工作原理、内部架构、对外提供的服务等。通过本章的研究为后续的设计奠定了很好的本章是“基于STAF的交通物联网测试框架的研究与实现”的需求分析和概要设计本所依托的项目的目标是设计并开发面向交通物联网系统的软件测试工具,其整体设计描述图如图3.1所示,其中用黑色虚线框标出的是本文的设计部分。3.1如图3.1所示,待开发的测试工具功能包括三大部分:测试用例生成功能、仿真功测试人员阅读被测系统规格说明后,设计测试用例。然后根据测试用例编写测试脚本,用测试驱动测试工具完成整个测试过程。根据测试用例编写仿真场景,用以描述需要搭建的仿真场景,包括道路和车辆的信息。根据测试用例编写传感器模型脚解析仿真场景和传感器模型,将上层系统在实际应用中的种种场景利用仿真分析测试人员编写的测试,并解析其测试信息。根据解析后的测试和仿真工具生成的仿真测试数据,在被测系统上执试。将测试执行过程、被测系统的运行状态和返回给测试人员。 3.2其防伪稽查的工作原理是采模工作方式,根据识别的出租车牌照和射频识别的出租车电子证照,在系统进行对比,识别出租车的真实性。该系统涉及三种传感器,分别是传感器、射频发射与接收传感器。测试不同检测装置与路边传感装置的位置及数量对防伪稽查系统的影响测试检测装置在不同识别率、路边传感检测装置接收到不完整报文情况下图3.3为项目顶层设计图。测试人员根据被测系统的规格说明,设计测试场景和传感器仿真模型,并编写测试,仿真模块对应生成仿真测试数据,测试框架模块根据仿真测试数据和测试,在被测系统上执试,然后最后将返回给测试人3.3(2)基于GrooveNet的交通物联网仿真测试平台;(3)基于STAF的交通物联网分布式测试框架。本章主要介绍测试框架模块的分析和设计,如图3.4中的虚线框所示。读SAF并配置了信任关系,通过调动STAF,实现与被测系统的通信以及测试的执行。3.4所示。3.4本节用软件工程的用例图来描述测试框架模块的功能,具体描述各个用例功能和处理流程。3.5如图3.5所示,用户可以向测试框架模块输入测试,然后再根据仿真测试数据3.63.6所示,对于仿真模块,测试框架能够从全局队列中获取仿真测试数据,并3.7测试执行返回运行状态、测试执行过程和。STAF3.8STAF如图3.8所示,在测试框架内部,主要调用STAF工具,实现命令调用、文件传输和服务功能。其中,命令调用可以让被测系统开始执试;测试可以通过文件传输服务分发到被测系统,同样,可以返回到测试机上;通过服务,可以返回被测系统的运行状态,测试执行过程等信息。3.3IPO测试A,该测试主要包含测试控制信息,如测试的时间、强度等另一个输入是,仿真模块生成的仿真测试数据被触发传感器识别的车辆的子信识别的车辆号牌信其输出包含测试执行过程X、被测系统运行状态Y和Z。其中,X包含与被测系统的连接情况、测试数据的大小等,Y包括被测系统的内存占有率、CPU占有率等信息,Z包括被测系统的各项指标、测试日志等。测试框架模块根据仿真测试数据和测试,通过调用STAF工具,在被测系统上执试。3.9IPOIPO只输入测试A,不能得到X、Y、Z的任一输出只输入仿真测试数据B,不能得到X、Y、Z同时输入测试A和仿真测试数据B,可以得到测试执行过程X、被测系统状态Y、Z。用户用Pyhon语言编写测试,统可以用C+标准库解析该测试,、。对于被测系统,在输入仿真测试数据和测试后,能够通过测试框架来运行测试,可以接收测试数据,返回运行状态、测试执行过程和。测试框架需要仿真测试数据并且解析该数据。考虑在测试框架得到仿真测试数据和测试的输入之后,需要调用STAF工具才能实现测试的执行和的返回,所以测试框架模块需要实现与STAF工具的交互。测试框架模块运行流程图如图3.103.10测试框架模块首先需要解析测试,然后根据被测系统的数据格式要求,实现仿真测试数据的解析。测试框架调用STAF的API,能够实现命令调用、文件传输、服务等功能,能够实现在被测系统上执试,返回等。并且根据要求可以导出相应格式的文档。图3.11为仿真测试工具用户界面示意图,其中,上半部分为仿真模块的输入、输出接口,包括测试场景模型、传感器仿真模型的输入,以及仿真的控制。下半部分为测试框架部分的输入、输出接口。包括测试的输入,测试执行的控制部分,以及测试的执行状态,被测系统的状态等。该界面由类SensorWindow来实现,具体描述见第4章的详class{std::queue<MyType>data;//数据队列QMutexm; }typedefstructnode{ QStringsource_ip;//车辆IDQString //传感 //触发QStringclass{std::queue<MyType>data;//数据队列QMutexm; }typedefstructnode{ QStringsource_ip;//车辆IDQString //传感 //触发QString//信息类基于第3章给出的项目整体的设计和测试框架模块的概要设计,本章给出了测试框架模块的详细设计方法。分别从用户交互界面、与仿真模块的交互、调用STAF执试三个方面来介绍系统的实现。本章可为实际的编码人员提供详细的参考。操作系统:Ubuntu 32-仿真软件:GrooveNet4.1编程开发环境:KDevelop分布式测试框架:STAF开发语言与工具:C++、在原有的GrooveNet代码中,添加一个类SensorWindow4.1用户界面类SensorWindowclassclassSensorWindow:public{//一些组件,Button、TableprivatevoidQTimerQStringscene_filename;QStringscript_filename;QStringscript_output;//输入的以打开文件为例,其实现的代码如下。表 打开文件的代码实{{ }首先,需要设计仿真测试数据的格式,根据被测系统的要求,仿真测试数据主要包括车辆的IDIDDaaDaa.h中,在Data.pp文件中具体实现。下面给出Data.h的代码。4.3仿真测试数据的结构typedeftypedefstructnode //定义的QStringsource_ip;QStringdestnation_ip; //传感器ID //触发时QString//信息class{voidlock(); voidunlock(); //向队列int //从队列数boolempty(); boolempty(); std::queue<MyType>data; QMutexm; //在仿真模块,每生成测试数据,则互斥全局队列,将该数据添加到队尾。在测试队列中取出,直到队列为空。这段代码在定时器Timer的槽函数slot_time_done()中实4.4读取仿真测试数据{for(int{ }}其中,g_pDataread()函数在Data.cpp4.5Dataread()intint{ //判断队{MyTypet=data.front(); }}调用STAF执在整个项目中,利用C++来调用Python,而测试的执行控制信息用Python脚本来编写,其中C++中调用Python的代码为:4.5C++PythonPy_Initialize();//Py_Initialize();//初始化pythonFILE PyRun_SimpleFile(fp,"test4.py");//调用执行 //Python //文调用STAF工具,完成在被测系统上开启性能监测程序,分发测试数据,返回测试结果等功能,下面给出通过STAF令调用服务来启动性能监测程序的代码。表 启动监测程序的Python #PythonfromPySTAFimport #STAFPythonimportsys#导入系统库handle=STAFHandle("MyTest")#一个STAFHandle服 #处理print"ErrorregisteringwithSTAF,RC:%d"%ercresult=handle.submit("local"," #检查STAF是否启动成 #print"Errorsubmittingrequest,RC:%d,Result:%s"%(result.rc,resultresult)if(result.rc!=0):#printErrorsubmittingrequestRCd,Resultsresult.rc,result.result) #本章主要通过对项目整体的设计分析,然后通过用户交互界面、与仿真模块的数据交互、调用STAF执试三个方面来整理出测试框架模块的实现方法,相应的给出了一些的代码和描述,为系统的整体的实现提供了详细的参考。测试机环境A:Ubuntu12.0432-bit,Qt3,Python2.7.5,STAF3.4.16。被测系统环境B:Windows732-bit专业版,Python2.7.5,STAF3.4.17。实验机器的结构如图5.1所示5.1系统能够解析Python语言编写的测试由于项目尚未进行到被测系统的具体环节,所以在该功能实验中,如图5.1的结构部署图,系统解析A机器上的Python测试,在B机器上用记事本程序notepad暂在A机和B机上启动STAF5.25.3所示,A和B机器都安装STAF,并且配置了信任信息。两台机器都启动STAFPr守护进程,然后在A机器上运行项目的可执行文件,并且选择测试为表4.6的python程序。实验的结果是B机器启动了该notepad程序。如图5.4所示。5.2Ubuntu5.4在A机器上启动工程SimTestToolManhattanDowntown_100test.sim,并启动仿真,如图5.5所示。5.5在路侧传感器节点发送唤醒信息,即接收周围车辆的信息,如图5.6所示,车辆节5.6打开传感器test1.py并点击执试,在控制台输出了从队列中的仿真测readfromthequeue HereismyID!srcID:1destID:01Time:0:00:16.611readfromthe HereismyID!srcID:5destID:015.7

图5.7测试框架模 本章主要是结合测试的需求,对项目的测试框架部分进行了功能实验验证,结果表明,测试框架模块可以成功调用STAF在被测系统上启动性能监测程序。也表明了TAF中调用STAHandle的ubi()函数,给它不同的参数,就能得到相应的服务,也会得到我们希望的结果。成功地到仿真模块生成的仿真测试数据。软件测试自动化已经成为软件测试的一个重要的组成部分,它能够完成许多手工测试无法实现的或者难以实现的测试,在某些情况下它可以提供比手工测试更好、更快的测试执行方式,可以省去许多繁杂的工作,节省大量的测试时间。只有正确合理地实施自动化测试才能使其发挥最大的功效。一个好的自动化测试框架更应该遵循这条原则。自动化测试框架的设计要正确合理,它才能够使软件测试的流程变得更加简单,使测试的管理变的更加方便,使框架中的测试或测试工具得到更加充分的利用。本文研究了交通物联网测试工具的总体需求分析,根据分析得到项目的整体的设计方案,顶层设计图。并且将测试工具分为三个模块:测试用例生成、仿真模块和测试框架模块。重点分析了测试框架模块内部的机制和其与相邻模块的交互。通过对已有的自动化测试框架STAF的研究,结合需求设计了针对交通物联网系统的测试框架。由于被测系统和测试机都安装了STAF,被测系统只是调用该测试框架的一个接口,所以该测试框架不仅适用于当前的被测软件,还可以被扩展应用于其他类型的软件测试。首先,在调用STAF时,使用的是用Python完成调用,然后再从项目(C++程序)中调用该Python来实现自动化测试,这样的话就需要将测试控制的信息写入C++的源程序中。但是,根据本文第二章的分析,IBM已经为STAF提供了一个外部服STAXSTAX嵌入到了STAFXM

温馨提示

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

评论

0/150

提交评论