开源Web自动化测试指南_第1页
开源Web自动化测试指南_第2页
开源Web自动化测试指南_第3页
开源Web自动化测试指南_第4页
开源Web自动化测试指南_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、文件修订历史修订时间修订说明作者审核2011-8-5创建目录岑海菊温素剑2011-8-17章节1、2、4、岑海菊温素剑章节3李颖、陈建红、岑海菊温素剑章节5李颖温素剑模板修订历史版本生效时间变更概要作者审核批准1.0.02011-8-5创建自动化测试方法文档岑海菊目录 TOC o 1-3 h z HYPERLINK l _Toc301513134 1引言与概述 PAGEREF _Toc301513134 h 4 HYPERLINK l _Toc301513135 1.1背景 PAGEREF _Toc301513135 h 4 HYPERLINK l _Toc301513136 1.2开源Web

2、自动化测试的优势 PAGEREF _Toc301513136 h 4 HYPERLINK l _Toc301513137 1.2.1Selenium简介 PAGEREF _Toc301513137 h 4 HYPERLINK l _Toc301513138 1.2.2Selenium的优势 PAGEREF _Toc301513138 h 4 HYPERLINK l _Toc301513139 2开源Web自动化测试架构 PAGEREF _Toc301513139 h 6 HYPERLINK l _Toc301513140 2.1基于Selenium 2.0的自动化测试框架 PAGEREF _T

3、oc301513140 h 6 HYPERLINK l _Toc301513141 2.2新Web自动化测试代码架构 PAGEREF _Toc301513141 h 7 HYPERLINK l _Toc301513142 3Web自动化测试编写 PAGEREF _Toc301513142 h 8 HYPERLINK l _Toc301513143 3.1集成开发环境搭建 PAGEREF _Toc301513143 h 8 HYPERLINK l _Toc301513144 3.1.1选择底层实现方法 PAGEREF _Toc301513144 h 8 HYPERLINK l _Toc30151

4、3145 3.1.2eclipse配置 PAGEREF _Toc301513145 h 9 HYPERLINK l _Toc301513146 3.1.3项目环境配置 PAGEREF _Toc301513146 h 10 HYPERLINK l _Toc301513147 3.2测试案例编写 PAGEREF _Toc301513147 h 13 HYPERLINK l _Toc301513148 3.2.1Selenese语法 PAGEREF _Toc301513148 h 14 HYPERLINK l _Toc301513149 3.2.2XPath介绍 PAGEREF _Toc301513

5、149 h 14 HYPERLINK l _Toc301513150 3.2.3测试案例框架 PAGEREF _Toc301513150 h 16 HYPERLINK l _Toc301513151 4管理测试案例 PAGEREF _Toc301513151 h 19 HYPERLINK l _Toc301513152 4.1测试工程目录结构 PAGEREF _Toc301513152 h 19 HYPERLINK l _Toc301513153 4.2使用Ant运行测试案例 PAGEREF _Toc301513153 h 20 HYPERLINK l _Toc301513154 4.2.1A

6、nt介绍 PAGEREF _Toc301513154 h 20 HYPERLINK l _Toc301513155 4.2.2Ant基本语法 PAGEREF _Toc301513155 h 20 HYPERLINK l _Toc301513156 4.2.3输出测试报告样式 PAGEREF _Toc301513156 h 21 HYPERLINK l _Toc301513157 4.2.4Ant Build PAGEREF _Toc301513157 h 21 HYPERLINK l _Toc301513158 4.3使用Jenkins管理自动化测试任务 PAGEREF _Toc3015131

7、58 h 22 HYPERLINK l _Toc301513159 4.3.1Jenkins介绍 PAGEREF _Toc301513159 h 22 HYPERLINK l _Toc301513160 4.3.2Jenkins任务创建 PAGEREF _Toc301513160 h 22 HYPERLINK l _Toc301513161 4.3.3Jenkins任务执行 PAGEREF _Toc301513161 h 24 HYPERLINK l _Toc301513162 4.3.4Jenkins执行结果查看 PAGEREF _Toc301513162 h 24 HYPERLINK l

8、_Toc301513163 5数据管理 PAGEREF _Toc301513163 h 25 HYPERLINK l _Toc301513164 5.1.1自动化测试流程图 PAGEREF _Toc301513164 h 25 HYPERLINK l _Toc301513165 5.1.2JDBC连接数据库代码范例 PAGEREF _Toc301513165 h 26 HYPERLINK l _Toc301513166 5.1.3数据回滚脚本 PAGEREF _Toc301513166 h 28 HYPERLINK l _Toc301513167 5.1.4数据初始化脚本 PAGEREF _T

9、oc301513167 h 28 HYPERLINK l _Toc301513168 5.1.5配置文件管理 PAGEREF _Toc301513168 h 29 HYPERLINK l _Toc301513169 6疑难手册 PAGEREF _Toc301513169 h 31 HYPERLINK l _Toc301513170 附录ASelenium 2.0常用命令 PAGEREF _Toc301513170 h 32 HYPERLINK l _Toc301513171 附录B案例文件、配置文件demo PAGEREF _Toc301513171 h 32 HYPERLINK l _Toc

10、301513172 附录CCC使用及培训资料 PAGEREF _Toc301513172 h 32 HYPERLINK l _引言与概述 引言与概述背景目前QTP是我司使用最广泛的自动化测试工具,在实际使用中发现,QTP存在以下不足之处:QTP基于测试对象库来识别测试对象,其内部机制是不透明的,在实际工作中,对测试对象库的维护工作量很大,耗费了测试人员大量的精力,效果却并不好;QTP的设计架构决定了当前测试脚本可复用性差,很难积累可重复使用的函数、组件、包等测试资产;使用QTP的描述性编程来创建测试脚本,严重依赖于测试人员的个人经验和技巧,难以大规模推广;自动化测试数据经常失效,原因在于没有统

11、一的数据回滚措施。 基于商业自动化测试工具QTP的录制/回放模式,无法构建健壮的自动化测试脚本,所以我们迫切地需要新的工具来替换QTP。当前有多种开源自动化测试工具可供选择,Selenium 2.0 便是目前使用最广泛的开源测试工具之一。开源Web自动化测试的优势Selenium简介Selenium是一系列基于Web的自动化测试工具。Selenium提供了一系列测试函数用于支持Web自动化测试,这些函数非常灵活,他们能够通过多种方式定位UI元素,并将预期结果与系统实际表现相比较,测试人员通过这些测试函数来模拟用户操作,从而实现Web自动化测试。Selenium 2.0集成了WebDriver

12、API,解决了Selenium 1.0的局限,二者相互弥补,提供了更多可选的编程接口。Selenium的优势QTP的测试对象库,对与测试人员来说是不透明的。图1-1为构建QTP自动化测试脚本的流程,在使用QTP录制测试脚本的时候,测试人员根本不清楚测试对象库中的测试对象是否有效,能否满足需求,这给使用者带来很大的困扰。图 STYLEREF 1 s 1 SEQ 图 * ARABIC s 1 1构建QTP自动化测试脚本的流程Selenium 2.0具有很强的灵活性和很好的扩展性,测试人员从页面数据中提取对象,引入测试逻辑构建测试脚本。通过这样的方式,测试人员能够确保测试对象的有效性,对测试对象的维

13、护也更容易。图 STYLEREF 1 s 1 SEQ 图 * ARABIC s 1 2构建Selenium 2.0自动化测试脚本的流程对比QTP和Selenium2.0构建自动化测试脚本的流程图,我们可以发现,Selenium不再基于录制/回放模式来创建自动化测试脚本,弥补了QTP的不足:开源测试工具识别测试对象的机制是透明的,可以减少测试人员的维护工作量;采用开源测试工具,可以将需要重用的测试代码打包到jar中。后续计划引入配置管理,保证可重用jar包的质量;采用java语言来编写测试脚本,在测试对象识别得到保证的前提下,这并不是一件充满技巧性的工作; 针对自动化测试数据经常失效的问题,新渠

14、道目前的做法是将恢复测试数据的SQL放在定时JOB中,在自动化测试运行前恢复相关测试数据。除此之外,Selenium 2.0在很多方面都优于QTP,如表1-1所示。表 STYLEREF 1 s 1 SEQ 表 * ARABIC s 1 1 QTP与Selenium 2.0的对比对比项QTP(商业)Selenium 2.0(开源)SeleniumWebDriver购置成本昂贵免费免费测试对象识别机制不透明透明透明编码语言VBSJavaPythonRuby等多种语言Java代码可重用性低高高脚本维护工作量高低低是否支持录制/回放模式是是(功能较弱)否执行效率低一般高测试脚本是否支持配置管理不支持支

15、持支持是否支持订制否是是开源Web自动化测试架构基于Selenium 2.0的自动化测试框架图2-1是基于Selenium 2.0的自动化测试的整体框架(虚线代表尚未实现的功能):步骤1:在开发人员提交代码后,持续集成引擎(Jenkins)会对最新的代码进行编译和部署;步骤2:Jenkins从配置管理工具(SVN/CC)获取测试脚本;步骤3:Jenkins调用Ant编译测试脚本;步骤4:Jenkins调用Ant去运行Junit测试案例;步骤5:Junit通过Selenium 2.0操作浏览器;步骤6:Jenkins输出测试报告,并以邮件的形式向测试人员发送自动化测试结果。图 STYLEREF

16、1 s 2 SEQ 图 * ARABIC s 1 1新Web自动化测试整体框架新Web自动化测试代码架构基于Selenium 2.0的Web自动化测试,每个测试案例就是一个Junit Test Case。Junit测试案例,由测试数据和测试逻辑两部分组成。测试逻辑最底层的实现是Selenium2.0库,通过抽象和扩展出webtest类。测试人员通过调用webtest类的方法,来构建测试逻辑。关于测试数据,请参考第5章数据管理。图 STYLEREF 1 s 2 SEQ 图 * ARABIC s 1 2 新Web自动化测试代码框架Web自动化测试编写 集成开发环境搭建选择底层实现方法前面提到,Se

17、lenium 2.0集成了WebDriver的API,因此我们首先需要选择底层的实现方法是Selenium还是WebDriver。二者对比如表3-1所示,Selenium提供了丰富的方法,支持多种浏览器,可以满足各种各样的测试逻辑需求,所以,一般情况下优先选择Selenium。但有些系统比较特殊,某些功能Selenium无法支持,此时可考虑使用WebDriver。WebDriver提供的方法虽不及Selenium多(如截屏等功能),但是也基本能满足系统的要求,最主要的是它的执行速度非常的快,这点是Selenium所望尘莫及的。总而言之,还是要根据系统的实际情况,选择合适的实现方法。表 STYL

18、EREF 1 s 3 SEQ 表 * ARABIC s 1 1 Selenium与WebDriver的对比对比项SeleniumWebDriver编码语言JavaPythonRuby等多种语言Java是否支持录制/回放模式是否执行效率一般高支持的浏览器IE、Firefox、Chrome、Safari、OperaIE、Firefox、Chrome提供的测试方法多基本eclipse配置新标装的电脑,Eclipse配置已经完成,请按照下述步骤检查配置是否正确:步骤1:设置电脑环境变量JAVA_HOME:我的电脑(右键) 属性 高级 环境变量 (系统变量)新建 ,进行如下编辑:变量名:JAVA_HOM

19、E变量值(java安装的目录):C:Program FilesJavajdk1.6.0_20 步骤2:设置电脑环境变量CLASSPATH:我的电脑(右键) 属性 高级 环境变量 (系统变量)新建,进行如下编辑:变量名:CLASSPATH变量值(java安装的目录):.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;步骤3:在eclipse中配置java点击eclipse菜单中Window Preferences Java Installed JREs ,配置如图3-1。图 STYLEREF 1 s 3 SEQ 图 * A

20、RABIC s 1 1 Eclipse中JRES配置图项目环境配置新建Eclipse项目FileNewProject(参见图3-2)Java ProjectNext(参见图3-3)Project Name(项目名Webtest_Project,参见图3-4)NextFinish(参见图3-5)图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 2图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 3输入创建的工程名字图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 4图 STYLEREF 1 s 3 SEQ 图 * ARABIC s

21、 1 5导入自动化测试的jar包和相应的lib库ClasspathBuild PathConfigure Buid path(参见图3-6)LibrariesAdd External JARs加入jarOK(参见图3-7)图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 6图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 7从官网上下载的selenium,包含了selenium-java-2.0b3.jar、selenium-java-2.0b3-srcs.jar和libs,其中selenium-java-2.0b3-srcs.jar是源文件的jar

22、包,不需要导入工程,其他包都要导入。所有需导入工程的jar包已整理在HYPERLINK hcd-it-290ShareSelenium 2.0jarSelenium0 2.0中,详细说明如下:webtest_selenium.jar/webtest_webdirver.jar(参见3.1.1章节,根据选择的实现方法加入对应的jar包);加入selenium-java-2.0b3.jar;加入selenium-java-2.0b3文件夹下libs里面的所有jar;新建package包在src包文件夹下面建立一个属于自己系统的Web自动化测试的package包。包(package)的命名规范:全部

23、小写,测试代码package为com.paic.。例如:com.paic.its.demo。选中src资源包右键单击NewPackage(参见图3-8)name(com.paic.its.demo)Finish(参见图3-9)图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 8图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 9测试案例编写Selenese语法Selenium提供了一套丰富的命令来测试你的web应用,这套命令通常叫Selenese。 它可以用于测试基于HTML标签的页面元素,例如:链接,输入框,下拉框,提交表单,表格数据等。(具体常用

24、命令可以参见附录A)Selenese命令调用格式主要包括三部分:Command(命令)、Target(目标)、Value(值),下面通过个简单的例子说明:selenium.type(j_username,username);此命令的目的是输入登陆用户名,具体解析如图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 10所示:Command(命令) Target(目标) Value(值) 例1 selenium.type j_username username 图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 10 Selenese命令调用格式图Sele

25、nese命令可以转变为编程代码,他可以同时支持包括C#、java、php、Perl在内的多种语言,这里我以java语言为例举一个简单的例子。这是一个系统登陆的案例,实现的功能包括:打开登陆界面-输入登陆用户名、密码-点击登陆。通过这个案例我们可以很容易的理解selenium如何运行Selenese命令,同时细心的人应该注意到了,在Selenese命令中Target(目标)或者Value(值)有时是可以省略的(例如:selenium.open、selenium. waitForPageToLoad)。public void testLogin() throws Exception String

26、username = gtdtest115;/登陆用户名String password = vvvvv88888;/登陆密码selenium.open(/nets-tmr-life/login.jsp);/打开登陆界面selenium.waitForPageToLoad(30000); /等待页面加载selenium.type(j_username,username);/输入登陆用户名selenium.type(j_password,password);/输入登陆密码selenium.click(Submit);/点击登陆按钮selenium.waitForPageToLoad(60000);

27、 /等待加载界面selenium.stop(); /关闭seleniumXPath介绍XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。它包含一个标准函数库,使用路径表达式来选取,这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。Selenium用XPath技术来记录网页元素的位置和属性。下面通过个简单的例子说明:在这个案例中我们要做的操作是选择查询结果中的第一条数据,系统界面图和代码解析图见图3-11和图3-12。XPath路径为/tableid=questResult/tbody/tr1/td1/input。图 ST

28、YLEREF 1 s 3 SEQ 图 * ARABIC s 1 11 系统界面图图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 12 代码解析图解析如下:路径以双斜线 / 开头, 则表示选择文档中所有满足双斜线/之后规则的元素(无论层级关系),即寻找table下面所有满足此路径条件的数据。前缀 用于指定属性,/tableid=questResult则表示在table下面查询到满足id=questResult的数据,如图3-13 。图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 13 代码解析图以斜线 / 开始, 那么该路径就表示到一个元素的绝对路

29、径,在此案例中/tbody/tr1/td1/input则表示选择在tbody下面第一行第一列的input数据,如图3-14。图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 14 代码解析图测试案例框架Selenium的开发提供的SeleneseTestCase是Junit3风格的,所以我们的自动化测试案例要符合Junit3的框架。Junit3的测试案例,包括三个部分:测试方法test*()、初始化函数setUp()和结束初始化函数tearDown()。这三者的执行顺序是:setUp()test*()tearDown()。此外,Junit3在命名规范和继承层次上有严格的要

30、求:测试类测试类必须继承TestCase。SeleneseTestCase是TestCase的子类,所以在新建的测试类直接继承SeleneseTestCase即可。测试方法测试方法必须是Public,且以test开头。为了使命名更为规范,测试方法名应与测试案例的功能模块相关,如:测试保单查询功能的测试方法写为testPolicySerch()。初始化函数测试案例中,必须包含初始化函数setUp()和tearDown()。setUp()执行在测试方法之前,我们统一将初始化浏览器,登陆测试系统的操作放在这一函数中,在每次测试方法运行前执行。tearDown()函数中统一放置关闭浏览器的操作,在测试

31、方法之后执行,结束当前测试案例。新建测试案例的步骤如下:选中新建的Package右键NewJunit Test Case(参见图3.15)NameFinish(参见图3.16)图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 15图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 16建好的SeleneseTestCase,会提示“The type SeleneseTestCase is deprecated”,根据提示增加“SuppressWarnings(deprecation)”,忽略类已过时的警告。接下来完善我们的测试案例,根据命名规则,新建测

32、试方法,重写setUp()和tearDown(),详见模板文件Demo.java。步骤简单介绍如下:创建webtest类的对象webtest itsTest = new webtest();重写setUp()setUp()需要完成webtest的初始化和测试系统的登陆。相关参数均从配置文件中读取(参见第5章,数据管理),范例如下:public void setUp() throws Exception /变量赋值String fileName = config.xml;/配置文件名String ip = itsTest.parserFromXml(fileName, ip);/ipint po

33、rt = Integer.parseInt(itsTest.parserFromXml(fileName, port);/端口号String browser = itsTest.parserFromXml(fileName, browser);/浏览器String baseUrl = itsTest.parserFromXml(fileName, url);/基本URLString extendedUrl = itsTest.parserFromXml(fileName, extendedUrl);/扩展URLString username = itsTest.parserFromXml(fi

34、leName, user);/登陆用户名String password = itsTest.parserFromXml(fileName, pwd);/登陆密码/测试初始化itsTest.initialize(baseUrl, ip, port, browser);/初始化itsTest.login(extendedUrl, username, password);/系统登陆上面的范例是基于selenium的,如果是基于WebDriver,在初始化的时候,只需要传Url参数,其他参数不用传,如:itsTest.initialize(baseUrl, null, 0, null);/初始化重写t

35、earDown()public void tearDown() throws Exception itsTest.close();/关闭浏览器,结束测试新建测试方法在不同的测试案例中,除了测试方法,其他基本大同小异。编写测试方法的时候,要以测试逻辑为依据,并结合selenese命令去实现测试逻辑。以NETS-ITSADMIN的名单批次查询为例,测试方法编写如下:/* * 测试方法 * throws Exception */public void testDemo() throws ExceptionString firMenu = Image2;/一级菜单String secMenu = li

36、nk=名单批次查询;/二级菜单String inputBatchName = batchName;/名单批次String btnSerch = /inputvalue=查 询; /查询按钮String resultBatchName = /trid=row0/td1;/查询结果String valueBatchName=CMP201103021564-03-201103 ;/批次名称String serchMode1 = elementitsTest.isPresent(10, firMenu, serchMode1);/验证菜单是否存在itsTest.click(firMenu);/点击 “

37、名单管理”itsTest.click(secMenu);/点击 “名单批次查询”itsTest.type(inputBatchName,valueBatchName);itsTest.click(btnSerch);/点击查询按钮assertEquals(valueBatchName, itsTest.getText(resultBatchName);至此,一个测试案例就完成了,参照图3.17运行测试案例。需要注意的是,如果使用的底层实现方法是Selenium,要先启动HYPERLINK hcd-it-290ShareSelenium 2.0Selenium server,启动命令如下:jav

38、a jar selenium-server.jar图 STYLEREF 1 s 3 SEQ 图 * ARABIC s 1 17 管理测试案例测试工程目录结构单个测试案例调试完毕之后,需将案例放到执行机下的固定目录,统一运行和管理测试案例集。现在我们使用的方案是通过Jenkins调用Ant,完成测试案例的编译和运行。如图4-1,这是一个被测系统在执行机上必须要有的文件和文件夹:src:测试案例源文件,直接复制 Eclipse工程下的测试案例文件,后续将会统一从配置管理工具(CC/SVN)上取得。lib:需要用到的外部包和配置文件,即在Eclipse中加载到Classpath中的所有包和文件xsl

39、:Ant输出的测试报告样式,待Jenkins功能完善后,Ant不需要输出测试报告,则该文件夹可以取消。样式模板详见: HYPERLINK hcd-it-290ShareSelenium 2.0 xsl 测试报告样式模板。build.xml:Ant的脚本文件,一般不作修改。perties:配置Ant的测试脚本,可以根据实际的目录修改。模板详见: HYPERLINK hcd-it-290ShareSelenium 2.0 脚本文件模板图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 1 使用Ant运行测试案例Ant介绍AntAnother Neat Tool,是一个基于Jav

40、a的跨平台构建工具,作为一个优秀的构建工具Ant有如下的优点:跨平台 -因为ant是使用java实现的,所以它跨平台;使用简单-与ant的兄弟make比起来;语法清晰-同样是和make相比。Ant下载地址: HYPERLINK /bindownload.cgi /bindownload.cgi Ant基本语法ant的编译文件默认为build.xml,一般无需改变。build.xml的根节点为,一般格式如下:name为工程名称;default为默认的target,就是任务;basedir就是基路径。一般为.property可以定义变量,一般格式如下:引用的时候这么引用$test如果变量是路径的话

41、,则可以这么定义:定义target: name的值为target的名称,可以在编译的时候指定是完成哪个target, 否则采用project那里定义的default。 depends则定义了依赖关系,值为其他target的name。多个依赖关系用,隔开, 顺序执行完定义的依赖关系,才会执行这个target。 target在build.xml中定义的顺序无所谓,但是depends中的顺序必须正确。构建文件包括元素,以及其中嵌套的、 和 元素,下面是一个通用的构建文件,它很适合作为一个模板。关于构建文件的注意事项: 所有构建文件都要有元素,而且至少有一个 元素; 对于 元素的default 属性并

42、没有默认值; 构建文件并不一定要被命名为build.xml。不过build.xml 是Ant 要搜索的默认文件名; 每个构建文件只能有一个 元素。输出测试报告样式将xsl文件夹下,测试报告样式模板中的“NETS-ITSADMIN”全部替换成当前测试系统名称即可。Ant BuildAnt的XML配置文件的结构很简单,这也是Ant的一个优点,简单易懂,容易上手,Ant的配置文件主要由project,target和task三层树型结构组成。一般情况下,工程中的build.xml不需要修改,只需要根据当前的目录,修改配置文件perties即可。我们用到的build.xml,其中包含了4个任务(targ

43、et),分别是Junit、Compile、RunTest、DataClean,且按顺序执行,每个target的实现,请结合4.2.2Ant基本语法参看模板文件(HYPERLINK hcd-it-290ShareSelenium 2.0build.xml)。Junit:完成初始化;Compile:完成测试案例的编译;RunTest:运行测试案例,并生成测试报告;DataClean:清理测试数据。测试人员可根据执行机上的实际目录修改perties配置文件。perties中有6个参数, 如下:testSrc.dir=测试案例目录;xsl.dir=测试报告样式目录;lib.dir=引用外部jar包和配

44、置文件目录;reports.dir=执行机本地生成的测试报告目录;run.classes=编译后的测试案例目录;use_jenkins=是否在使用Jenkins监控(yes/no);使用Jenkins管理自动化测试任务Jenkins介绍Jenkins(原Hudson)是一款Java平台的开源持续集成(Continuous Integration,CI)引擎。它易于安装,配置简单,丰富的插件支持,高度的可扩展性,强大的分布式构建能力都让它在众多的CI引擎中脱颖而出。所以我们选用Jenkins来管理测试案例,以便以后进行持续集成。Jenkins任务创建在Jenkins中创建任务的步骤如下:登陆Je

45、nkins: HYPERLINK http:/hcd-it-44:8000/jenkins/ http:/hcd-it-44:8000/jenkins/ (此地址后续可能会更改);新建任务,根据测试系统填写任务名称,选择构建一个多配置项目,点击OK(参见图4-2);图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 2选择执行机:Configuration MatrixSlaves HYPERLINK javascript:YAHOO.widget.TreeView.getNode(yui-tv-auto-id-0,2).toggle() t _self Individua

46、l nodes 勾选执行测试案例的执行机(参见图4.3、图4.4)图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 3图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 4选择构建方式:BuildInvoke Ant(参见图4.5)Targets:build.xml文件中的defaultBuild File:执行机上build.xml的路径(参见图4.6)。图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 5图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 6选择打印输出结果:Post-build Actio

47、ns Publish JUnit test result report Test report XMLs:/*/*.xml(参见图4.7)图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 7Jenkins任务执行选中建好的Jenkins任务(NETS-ITSADMIN),点击立即构建,即可运行测试案例(参见图4.8)。图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 8Jenkins执行结果查看案例执行完之后,可以通过执行状态,查看执行结果。任务状态及描述如图4.9。图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 9在案例执行

48、的时候,也可进入构建状态,通过查看命令行输出,进行测试案例的监控。参加图4.10。图 STYLEREF 1 s 4 SEQ 图 * ARABIC s 1 10数据管理自动化测试流程图自动化测试的过程包括:测试数据准备、测试脚本运行、生成测试报告;其中测试数据准备包括两个步骤:JDBC连接数据库、数据回滚脚本的运行,如图5-1所示。图 STYLEREF 1 s 5 SEQ 图 * ARABIC s 1 1 自动化测试流程图JDBC连接数据库代码范例JAVA的数据库操作,需要先建立DB连接,然后在DB中执行查询、更新、插入、删除等操作,并从查询操作中获取数据。代码范例如下:public void

49、DBTest() throws ExceptionString url; /Oracel DB URLString username; /Oracel DB usernameString password; /Oracle DB passwordString fileName; /config file String cmd_select = select description from N_OTHER_TESTING;String cmd_update = update N_OTHER_TESTING set description=NUll;String cmd_insert = ins

50、ert into N_OTHER_TESTING;String cmd_delete = delete from N_OTHER_TESTING;String cmd_commit = commit;/Fetch parameter from config filefileName = config.xml;url = parserFromXml(fileName, url);username = parserFromXml(fileName, ldsuser);password = parserFromXml(fileName, ldspwd);/Load Oracle Server JDB

51、C driver. Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();/ Get connection to DBConnection con = DriverManager.getConnection(url, user, pwd);/ Create statement object Statement st= con.createStatement();/ Send SQL SELECT statements to the database via the Statement.execute QueryResultSe

52、t result_select = st.executeQuery(cmd_select);ResultSet result_update = st.executeQuery(cmd_update);ResultSet result_insert = st.executeQuery(cmd_insert);ResultSet result_delete = st.executeQuery(cmd_delete);ResultSet result_commit = st.executeQuery(cmd_commit);/ Fetch value of description from resu

53、lt_select object.String description = ;while (result_select.next() description = result_select.getString(description);con.close();步骤1:从配置文件中获取登录数据库的连接串,用户名、密码;fileName = config.xml;url = parserFromXml(fileName, url);username = parserFromXml(fileName, ldsuser);password = parserFromXml(fileName, ldspw

54、d);步骤2:加载oracle数据库驱动;Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();注:需要加载oracle JDBC的jar包到Eclipse的lib中下载地址: HYPERLINK /user/ashutc/ojdbc6.jar /user/ashutc/ojdbc6.jar 步骤3:登录oracle数据库;Connection con = DriverManager.getConnection(url, user, pwd);步骤4:创建Statement对象;Statement st= con.create

55、Statement();步骤5:通过Statement对象执行SQL语句;ResultSet result_select = st.executeQuery(cmd_select);ResultSet result_update = st.executeQuery(cmd_update);ResultSet result_insert = st.executeQuery(cmd_insert);ResultSet result_delete = st.executeQuery(cmd_delete);ResultSet result_commit = st.executeQuery(cmd_c

56、ommit);步骤6:获取测试人员关心的查询结果;String description = ;while (result_select.next() description = result_select.getString(description);步骤7:关闭数据库连接:con.close();注:如果不关闭数据库连接可能带来一些严重的问题。数据回滚脚本数据回滚脚本的基本原则:数据回滚脚本需将自动化数据回滚到初始化状态;测试人员应该屏蔽系统归档/备份功能对测试数据的影响,例如可以通过修改创建日期使其永远不会被归档或备份;自动化测试新生成的垃圾数据,建议及时清理(如delete语句),以免造成系统负载过大;建议测试逻辑涵盖测试数据的整个生命周期,例如:案例A:新建测试机构Dept案例B:查询测试机构Dept案例C:修改测试机构Dept案例D:删除测试机构Dept数据回滚脚本应在每次执行自动化测试案例前执行。数据初始化脚本数据初始化脚本的基本原则:自动化测试数据要与手动测试分离,如将自动化测试数据特定到某个特定条件,如某个机构或某天;自动化测试数据的命名应该显著区别于手工测试数据;数据初始化脚本要有备份,以便在数据库发生变更后快速恢复测试数据;数据初始化脚本不需要定期执行,仅在新建测试环境或测试数据库发生变更

温馨提示

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

评论

0/150

提交评论