基于linux平台的自动化测试的研究与应用.doc_第1页
基于linux平台的自动化测试的研究与应用.doc_第2页
基于linux平台的自动化测试的研究与应用.doc_第3页
基于linux平台的自动化测试的研究与应用.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

摘要:本文面向Linux平台和平台下不同类型应用的特点,研究了自动化测试的技术和工具,并从功能测试和性能测试的角度对Linux平台下测试工作的自动化进行7分析和说明。文中提供的方法和技术已经成功应用于上海中标软件有限公司服务器产品和桌面产品的测试工作中。 关键词:Linux;自动化测试;软件应用 引言 现代软件规模的逐渐增加,使得软件测试的工作量越来越大,同时软件开发周期的缩短又要求尽量提高测试效率,而受开发资金的限制测试资源不可能大幅度增 加,一切使得传统的手工测试已经无法满足现代软件开发的要求。另一方面,许多公司已经把软件测试作为保证软件质量、提高软件可靠性的主要手段之一,花费在 软件测试上的资源已经占到整个软件研发成本的5060,软件测试能否按时完成已经成为软件能否按时交付的瓶颈。所有这一切都使得对软件测试实施自动化 势在必行。 目前,市场上自动化测试工具不少,按用途可分为:功能测试工具,性能测试工具,测试管理工具等。就实现技术原理而言主要分为两 类:一类是捕捉回放技术,一类是编写测试脚本技术。捕捉回放技术的脚本由捕捉时自动生成。捕捉阶段,工具记录用户的一系列鼠标点击和键盘按键操作,并 将这些操作转化为脚本。回放时把这些脚本作为输入在被测程序上执行,根据执行后的状态信息和输出结果与原始记录的比对来判定是否存在差异。编写脚本技术需 要用户以一个指定的脚本语言编写测试脚本,对于测试脚本的维护、测试执行的驱动以及测试结果的统计等可由用户自行实现,也可以使用专门的测试工具或者测试 框架帮助完成。通过测试自动化的实施,可以使测试人员从大量的重复测试中解放出来。 在Linux平台下进行自动化测试,可以使用的商业测试 工具并不是很多,但是由于开源软件产业的蓬勃发展,在各个开源社区维护的开源项目中提供了大量的、针对不同类型应用以及不同类型测试的测试工具,这些工具 可以满足基本的自动化测试需求,同时可以结合具体应用的特点,通过进一步改造工具来完成测试自动化的目的。 本文所进行的自动化测试的研究对象主要针对Linux平台及平台之上的应用,测试的类型主要包括功能测试和性能测试。 自动化测试曲研究与应用 自动化测试的前提是无论采用何种测试技术和测试方法,组织已经积累了针对各种类型应用的包括完整的测试输入、测试执行步骤和预期输出的测试用例。 由于Linux是一个命令行组成的操作系统,因此采用脚本编程,按照预设的执行逻辑批量地执行命令行,是实施自动化测试时首先需要考虑的手段。为了实现 更复杂的测试工作的自动化,也可以选择或者自行开发测试工具或测试框架。在选择工具或框架时,通常需要考虑是否具备如下几个要素:a,测试执行人员可以选 择运行哪些测试组件测试用例b,提供定义用例执行结果的输出方式,如提供成功、失败、未执行等函数供调用c,可以加载用户自定义的函数库d,提供用例执 行的配置文件或者场景文件e,提供调试的机制f,提供日志输出方式g,提供结果统计输出等等。 在Linux平台下,借助工具或者其他手段实施测试的自动化时,需要关注以下几点: (一)各种技术应用的前提。对于在开源社区和一些开源项目中获得的测试工具,首先需要了解工具适用于哪些类型应用的测试,以及工具发布后的发布说明和 FAQ。开源的工具通常不像商业工具那样成熟稳定,因此找出工具的适用范围以及探索工具的实现程度是进行自动化测试应用的前提。 (二)各种技术应用的环境需求。对于各类工具,需要关注编译和运行时对各种包和库及其版本的依赖关系以及对预先安装的应用的依赖关系。这些在用户手册中都有详尽的说明。 (三)服务器性能监视器。大部分测试工具没有提供服务器端的性能监控功能,测试工程师需要根据实际的需求编写性能监控脚本来配合工具的使用。下面结合曾经参与进行过的Linux平台下的自动化测试的研究,面向不同类别的测试用例自动化的需求,将主要从功能测试,如GUI测试、命令行客户端的测试,以及性能测试等几个方面对Linux平台下的测试工作的自动化进行分析和说明。 GZW自动化洲试 对于GUI测试的自动化,通常的测试工具所使用的捕捉回放技术有两种,一种是通过记录界面的鼠标事件(如点击、移动)和键盘事件来完成录制和回放,另 外一种则是录制和回放都是基于控件的识别和操作进行的,每个脚本的执行都是控件对象的属性改变或事件触发。我们从开源社区可以获得如上两种类型的运行于 Linux平台之上的典型测试工具,如Knee和LDTP等。 (一)Xnee工具 在Linux操作系统的 xll环境下,Xnee能够录制、回放和分发用户的动作。Xnee的捕捉回放技术是记录鼠标事件和键盘事件。进入录制模式时,Xnee记录发送至和来自 X server之间的协议数据拷贝,并生成Xneesession文件。在回放模式下,Xnee读取Xnee Session中的事件,模仿整个录制过程(即用户操作过程)完成和x server之间的通讯,被录制的应用软件(Xclient)则接收来自xserver的消息,完成预设的动作。 (二)LDTP测试工具框架 Linux Desktop Testing Project(LDTP)测试工具框架能够基于用户在应用界面的选择进行脚本的录制。LDTPI具使用了Gnome环境下的 Accessibility库即辅助选项库(at-spi)。使用辅助选项能够获得应用通过AT-SPI协议提供的关于用户界面的信息和界面控件的当前状 态或者属性。LDTPI具框架的体系结构如下: AT-SPI的基础思想就是为用户界面的可视化元素提供对应的辅助对象,而录制完成的每个脚本的执行都是基于这些辅助对象进行的。对于希望利用LDTPI具进行测试的应用,需要激活辅助选项。 (三)GUI自动化测试工具的应用 在实际的GUI自动化测试中,LDTPI具应用的场景会更广泛一些。LDTPI具可以识别窗口中的对象(如按钮),测试脚本使用LDTP的API接口, 每个API接口对UI对象进行操作存在两个最基本的入口,即窗口和对象,窗口通过窗口的类型和名称(即标题)识别,对象通过希望操作的控件的类型和名称 (标签或者关联的标签)识别。我们同样可以通过at-pokel具展现激活了辅助选项的应用程序窗口的对象及对象属性。在测试Linux桌面产品和服务器 产品的过程中,使用LDTPI具可以测试任何启用辅助选项的Gnome应用,如Mozilla,OpenO、Evolution邮件客 户端,Nautilus文件浏览器等等,此外还可以测试UI界面基于Swing的Java应用,以及KDE4.O上基于QT4.0的应用等等。 而Xneel具所针对的应用程序类型就没有特别的限制,对于一些简单的窗口验证测试和界面的稳定性测试等则比较有效。Xnee相对于基于控件方式捕获和回放的工具而言,不用担心存在控件不能被识别的问题。 从使用的情况来看,各个工具也都因为实现技术而存在一定的缺陷,如两个工具均不能插入验证点,从而不能实现用例级别的结果验证;LDTP对于界面的个别 元素捕获不到以及不能对不支持辅助选项的应用进行测试等等;而Xneel具生成的脚本可编辑性差,同时由于录制生成的脚本中的事件和屏幕坐标相关,因此当 出现窗口弹出位置发生变化等问题时,就需要考虑回放时应该如何来处理这些变化。 命令行客户端的测试 (一)应用于命令行客户端测试的技术分析 Linux操作系统的精髓就是命令行,对于可以通过命令行批处理方式进行测试的客户端,Shell脚本语言是程序员测试时的首选,Shell提供了用户与内核进行交互操作的一种接口。 而对于测试交互式类型的客户端应用,Expect则比较擅长。Expect是基于tcl的用于测试交互式程序的工具包,它提供了创建交互式进程和读写它 们的输入和输出的命令。Expect很适合编写测试程序,不管被测的软件是批处理式的(比如GCC),还是交互式的(比如GDB),它都可以很方便的捕捉 程序的输出并且将程序的输入自动化。对于编写完成的测试脚本,需要选择合适的框架来统一管理测试脚本,驱动测试脚本按照流程执行,以及为测试执行结果提供统一的输出等等。经过比较,各种测 试框架中选出了DejaGnu和TET,因为这两个框架使用广泛、活跃度比较高、有活跃的社区组织支持。TET支持多种脚本语言,它提供对cc+、 Java、perl、shell,ksh,python,ruby,php,tclexpect等众多语言的支持,支持分布式测试。Dejagnu即 GNU测试框架,它提供了运行测试的统一前台,对于使用者而言,DejaGnu实际上就是一个Tel库,它提供了丰富的函数库,使得用户可以方便地编写自 己的测试驱动程序。该框架的缺点是缺省只支持调用Expect编写的测试程序,如果需要调用其他语言编写的测试程序,则需要对框架进行扩展。 (二)实际应用 在Linux操作系统之上存在很多命令行客户端及交互式类型的客户端,如常见的网络服务程序sshl ftp,telnet,数据库客户端mysql,配置管理软件CVS。等等。使用上述的测试技术可以完成对这类应用程序的测试自动化。 在中标软件的测试实践中选择了Dejagnu框架,该框架符合POSIx1003,3测试框架标准,并定义了测试用例执行结果的输出函数,如pass,fail,xpass,xfail等等,因此可以使用框架的用例输出定义在日志中记载测试结果。 性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。性能测试方法一般有基准测试、容量规划测试、峰谷 测试和渗入测试等等,对于可再现性,基准测试是最好的方法,而如果需要从当前用户负载的角度考虑测试系统的上限,则应该使用容量规划测试。 (一)性能测试工具的选择 测试团队在规划性能测试时,出于对测试数据的可信度考虑,可以选择商业测试工具,如Loadrunner、Rati onal R 0b Ot、QAL Oad、Benchmark Factory等工具,另外SPEC(the Standard PerformanceEvaluation Corporation标准性能评估机构)提供的系列基准测试套件都是企业进行基准测试的最佳选择。 如果成本是首要考虑的因素,那么就不妨 在一些开源测试站点(如http:/www.opensourcetesting,org)和Linux开源社区的项目中寻找能够完成特定目标的性能测 试工具。这些工具大部分针对性比较强,部署简单,当然很少工具能够与成熟的商业测试工具媲美。不过开源工具也具有自己的特点,如小巧,轻便,在各自擅长的 领域可以提供优秀的解决方案等等。因此可以考虑准备一组开源测试工具,利用不同工具的特长完成性能测试自动化的需要。采用开源测试工具得到的性能测试数 据,主要用于进行同类产品之间的横向对比以及同一产品不同版本之间的纵向对比。 (二)性能测试工具的应用 下面将从不同的测试需求出发。讨论如何利用开源测试工具进行性能测试的自动化。 1、服务器整机系统的性能测试 性能测试是衡量一个操作系统效率的关键步骤,对于Linux操作系统,Linux内核是其最核心的部分,其性能直接决定了操作系统的性能,内核性能测试 的方法是针对Linux内核五大子系统:进程调度子系统、内存管理子系统、虚拟文件子系统、进程通信子系统和网络子系统的特点,测量出Linux内核完成 工作量负载的响应时间、CPU时间和CPU利用率等参数,作为衡量标准。在实际测试中我们采用了如下一些基准测试工具: 1Lmbench:用来测试1inux操作系统的cpu计算处理能力、进程调度、内存读写性能;测试主要可使用bw_dhrv和bwmem,lat proc三个测试命令,分别对应于整数性能测试,读写内存测试,进程调度测试。 2Bonnie+:磁盘I/O测试工具,主要用于测试磁盘和文件系统的性能。它可以测试文件的创建,读,写和删除等操作,既可以测试小文件,也可以测试大的单个文件。3Web应用服务器的性能测试 在中标软件的web邮件服务器测试中采用了Apache组织的开源项目工具JMeter。JMeter可 以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用 于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。用户可以使用 JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器脚本对象的行为。 4数据库性能测试 基于开源的 数据库性能测试工具并不是很多,这些工具本身都预先提供了一组测试用例如The DatabaseOpensource Test Suite(DOTS)工具,提供了8个基本用例和2个高级用例,并支持对DB2、Oracle、Sybase、MySQL和Pos tgreSQL等多种类型数据库进行压力测试和负载测试,另外一些工具则预先构造了支持不同负载模式测试的配置,如最新版本的Hammerora(The Open Sourceoracle Load Test T001)工具就提供了专门针对Oracle数据库进行测试的设定基准测

温馨提示

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

最新文档

评论

0/150

提交评论