




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
开源WEB自动化测试实施指南[说明:本文件中“[]〞中内容为举例和说明文字,请在文件拟制时替换或删除;假设文中某章节内容可省略、不需要或适用,请保存该标题,并根据实际在内容局部写明“略〞、“勿需〞或“不适用〞等,同时适当说明原因;请作者注意在文档右上角修改该文档的密级。]TITLE文件修订历史修订时间修订说明作者审核2023-8-5创立目录岑海菊温素剑2023-8-17章节1、2、4、岑海菊温素剑章节3李颖、陈建红、岑海菊温素剑章节5李颖温素剑模板修订历史版本生效时间变更概要作者审核批准2023-8-5创立自动化测试方法文档岑海菊目录TOC\o"1-3"\h\z1 引言与概述 41.1 背景 41.2 开源Web自动化测试的优势 4 Selenium简介 4 Selenium的优势 42 开源Web自动化测试架构 62.1 基于Selenium2.0的自动化测试框架 62.2 新Web自动化测试代码架构 73 Web自动化测试编写 83.1 集成开发环境搭建 8 选择底层实现方法 8 eclipse配置 9 工程环境配置 103.2 测试案例编写 13 Selenese语法 14 XPath介绍 14 测试案例框架 164 管理测试案例 194.1 测试工程目录结构 194.2 使用Ant运行测试案例 20 Ant介绍 20 Ant根本语法 20 输出测试报告样式 21 AntBuild 214.3 使用Jenkins管理自动化测试任务 22 Jenkins介绍 22 Jenkins任务创立 22 Jenkins任务执行 24 Jenkins执行结果查看 245 数据管理 25 自动化测试流程图 25 JDBC连接数据库代码范例 26 数据回滚脚本 28 数据初始化脚本 28 配置文件管理 296 疑难手册 31附录A-Selenium2.0常用命令 32附录B-案例文件、配置文件demo 32附录C-CC使用及培训资料 32HYPERLINK引言与概述背景目前QTP是我司使用最广泛的自动化测试工具,在实际使用中发现,QTP存在以下缺乏之处:QTP基于测试对象库来识别测试对象,其内部机制是不透明的,在实际工作中,对测试对象库的维护工作量很大,消耗了测试人员大量的精力,效果却并不好;QTP的设计架构决定了当前测试脚本可复用性差,很难积累可重复使用的函数、组件、包等测试资产;使用QTP的描述性编程来创立测试脚本,严重依赖于测试人员的个人经验和技巧,难以大规模推广;自动化测试数据经常失效,原因在于没有统一的数据回滚措施。基于商业自动化测试工具QTP的录制/回放模式,无法构建健壮的自动化测试脚本,所以我们迫切地需要新的工具来替换QTP。当前有多种开源自动化测试工具可供选择,Selenium2.0便是目前使用最广泛的开源测试工具之一。开源Web自动化测试的优势Selenium简介Selenium是一系列基于Web的自动化测试工具。Selenium提供了一系列测试函数用于支持Web自动化测试,这些函数非常灵活,他们能够通过多种方式定位UI元素,并将预期结果与系统实际表现相比拟,测试人员通过这些测试函数来模拟用户操作,从而实现Web自动化测试。Selenium2.0集成了WebDriverAPI,解决了Selenium1.0的局限,二者相互弥补,提供了更多可选的编程接口。Selenium的优势QTP的测试对象库,对与测试人员来说是不透明的。图1-1为构建QTP自动化测试脚本的流程,在使用QTP录制测试脚本的时候,测试人员根本不清楚测试对象库中的测试对象是否有效,能否满足需求,这给使用者带来很大的困扰。图STYLEREF1\s1SEQ图\*ARABIC\s11构建QTP自动化测试脚本的流程Selenium2.0具有很强的灵活性和很好的扩展性,测试人员从页面数据中提取对象,引入测试逻辑构建测试脚本。通过这样的方式,测试人员能够确保测试对象的有效性,对测试对象的维护也更容易。图STYLEREF1\s1SEQ图\*ARABIC\s12构建Selenium2.0自动化测试脚本的流程比照QTP和Selenium2.0构建自动化测试脚本的流程图,我们可以发现,Selenium不再基于录制/回放模式来创立自动化测试脚本,弥补了QTP的缺乏:开源测试工具识别测试对象的机制是透明的,可以减少测试人员的维护工作量;采用开源测试工具,可以将需要重用的测试代码打包到jar中。后续方案引入配置管理,保证可重用jar包的质量;采用java语言来编写测试脚本,在测试对象识别得到保证的前提下,这并不是一件充满技巧性的工作;针对自动化测试数据经常失效的问题,新渠道目前的做法是将恢复测试数据的SQL放在定时JOB中,在自动化测试运行前恢复相关测试数据。除此之外,Selenium2.0在很多方面都优于QTP,如表1-1所示。表STYLEREF1\s1SEQ表\*ARABIC\s11QTP与Selenium2.0的比照比照项QTP〔商业〕Selenium2.0〔开源〕SeleniumWebDriver购置本钱昂贵免费免费测试对象识别机制不透明透明透明编码语言VBSJava\Python\Ruby等多种语言Java代码可重用性低高高脚本维护工作量高低低是否支持录制/回放模式是是〔功能较弱〕否执行效率低一般高测试脚本是否支持配置管理不支持支持支持是否支持订制否是是开源Web自动化测试架构基于Selenium2.0的自动化测试框架图2-1是基于Selenium2.0的自动化测试的整体框架〔虚线代表尚未实现的功能〕:步骤1:在开发人员提交代码后,持续集成引擎〔Jenkins〕会对最新的代码进行编译和部署;步骤2:Jenkins从配置管理工具〔SVN/CC〕获取测试脚本;步骤3:Jenkins调用Ant编译测试脚本;步骤4:Jenkins调用Ant去运行Junit测试案例;步骤5:Junit通过Selenium2.0操作浏览器;步骤6:Jenkins输出测试报告,并以邮件的形式向测试人员发送自动化测试结果。图STYLEREF1\s2SEQ图\*ARABIC\s11新Web自动化测试整体框架新Web自动化测试代码架构基于Selenium2.0的Web自动化测试,每个测试案例就是一个JunitTestCase。Junit测试案例,由测试数据和测试逻辑两局部组成。测试逻辑最底层的实现是Selenium2.0库,通过抽象和扩展出webtest类。测试人员通过调用webtest类的方法,来构建测试逻辑。关于测试数据,请参考第5章数据管理。图STYLEREF1\s2SEQ图\*ARABIC\s12新Web自动化测试代码框架Web自动化测试编写集成开发环境搭建选择底层实现方法前面提到,Selenium2.0集成了WebDriver的API,因此我们首先需要选择底层的实现方法是Selenium还是WebDriver。二者比照方表3-1所示,Selenium提供了丰富的方法,支持多种浏览器,可以满足各种各样的测试逻辑需求,所以,一般情况下优先选择Selenium。但有些系统比拟特殊,某些功能Selenium无法支持,此时可考虑使用WebDriver。WebDriver提供的方法虽不及Selenium多〔如截屏等功能〕,但是也根本能满足系统的要求,最主要的是它的执行速度非常的快,这点是Selenium所望尘莫及的。总而言之,还是要根据系统的实际情况,选择适宜的实现方法。
表STYLEREF1\s3SEQ表\*ARABIC\s11Selenium与WebDriver的比照比照项SeleniumWebDriver编码语言Java\Python\Ruby等多种语言Java是否支持录制/回放模式是否执行效率一般高支持的浏览器IE、Firefox、Chrome、Safari、OperaIE、Firefox、Chrome提供的测试方法多根本eclipse配置新标装的电脑,Eclipse配置已经完成,请按照下述步骤检查配置是否正确:步骤1:设置电脑环境变量JAVA_HOME:我的电脑〔右键〕→属性→高级→环境变量→〔系统变量〕新建,进行如下编辑:变量名:JAVA_HOME20步骤2:设置电脑环境变量CLASSPATH::我的电脑〔右键〕→属性→高级→环境变量→〔系统变量〕新建,进行如下编辑:变量名:CLASSPATH变量值〔java安装的目录〕:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;步骤3:在eclipse中配置java点击eclipse菜单中Window→Preferences→Java→InstalledJREs,配置如图3-1。图STYLEREF1\s3SEQ图\*ARABIC\s11Eclipse中JRES配置图工程环境配置新建Eclipse工程File→New→Project〔参见图3-2〕→JavaProject→Next〔参见图3-3〕→ProjectName〔工程名Webtest_Project,参见图3-4〕→Next→Finish〔参见图3-5〕图STYLEREF1\s3SEQ图\*ARABIC\s12图STYLEREF1\s3SEQ图\*ARABIC\s13输入创立的工程名字图STYLEREF1\s3SEQ图\*ARABIC\s14图STYLEREF1\s3SEQ图\*ARABIC\s15导入自动化测试的jar包和相应的lib库Classpath→BuildPath→ConfigureBuidpath〔参见图3-6〕→Libraries→AddExternalJARs→参加jar→OK〔参见图3-7〕图STYLEREF1\s3SEQ图\*ARABIC\s16图STYLEREF1\s3SEQ图\*ARABIC\s17从官网上下载的selenium,包含了、和libs,其中是源文件的jar包,不需要导入工程,其他包都要导入。所有需导入工程的jar包已整理在Selenium02.0中,详细说明如下:webtest_selenium.jar/webtest_webdirver.jar章节,根据选择的实现方法参加对应的jar包〕;参加;参加selenium-java-2.0b3文件夹下libs里面的所有jar;新建package包在src包文件夹下面建立一个属于自己系统的Web自动化测试的package包。包〔package〕的命名标准:全部小写,测试代码package为com.paic.<系统缩写>.<功能模块>。例如:。选中src资源包→右键单击→New→Package〔参见图3-8〕→name〔〕→Finish〔参见图3-9〕图STYLEREF1\s3SEQ图\*ARABIC\s18图STYLEREF1\s3SEQ图\*ARABIC\s19测试案例编写Selenese语法Selenium提供了一套丰富的命令来测试你的web应用,这套命令通常叫Selenese。它可以用于测试基于HTML标签的页面元素,例如:链接,输入框,下拉框,提交表单,表格数据等。〔具体常用命令可以参见附录A〕Selenese命令调用格式主要包括三局部:Command〔命令〕、Target〔目标〕、Value〔值〕,下面通过个简单的例子说明:selenium.type("j_username",username);此命令的目的是输入登陆用户名,具体解析如图STYLEREF1\s3SEQ图\*ARABIC\s110所示:Command〔命令〕Target〔目标〕Value〔值〕例1selenium.type"j_username"username图STYLEREF1\s3SEQ图\*ARABIC\s110Selenese命令调用格式图Selenese命令可以转变为编程代码,他可以同时支持包括C#、java、php、Perl在内的多种语言,这里我以java语言为例举一个简单的例子。这是一个系统登陆的案例,实现的功能包括:翻开登陆界面-输入登陆用户名、密码-点击登陆。通过这个案例我们可以很容易的理解selenium如何运行Selenese命令,同时细心的人应该注意到了,在Selenese命令中Target〔目标〕或者Value〔值〕有时是可以省略的〔例如:selenium.open、selenium.waitForPageToLoad〕。publicvoidtestLogin()throwsException{ Stringusername="gtdtest115"; //登陆用户名 Stringpassword="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"); //等待加载界面 selenium.stop(); //关闭selenium}XPath介绍XPath是一门在XML文档中查找信息的语言。XPath用于在XML文档中通过元素和属性进行导航。它包含一个标准函数库,使用路径表达式来选取,这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。Selenium用XPath技术来记录网页元素的位置和属性。下面通过个简单的例子说明:在这个案例中我们要做的操作是选择查询结果中的第一条数据,系统界面图和代码解析图见图3-11和图3-12。XPath路径为"//table[@id='questResult']/tbody/tr[1]/td[1]/input"。图STYLEREF1\s3SEQ图\*ARABIC\s111系统界面图图STYLEREF1\s3SEQ图\*ARABIC\s112代码解析图解析如下:路径以双斜线//开头,那么表示选择文档中所有满足双斜线//之后规那么的元素(无论层级关系),即寻找table下面所有满足此路径条件的数据。前缀@用于指定属性,//table[@id='questResult']那么表示在table下面查询到满足id='questResult'的数据,如图3-13。图STYLEREF1\s3SEQ图\*ARABIC\s113代码解析图以斜线/开始,那么该路径就表示到一个元素的绝对路径,在此案例中/tbody/tr[1]/td[1]/input那么表示选择在tbody下面第一行第一列的input数据,如图3-14。图STYLEREF1\s3SEQ图\*ARABIC\s114代码解析图测试案例框架Selenium的开发提供的SeleneseTestCase是Junit3风格的,所以我们的自动化测试案例要符合Junit3的框架。Junit3的测试案例,包括三个局部:测试方法test***()、初始化函数setUp()和结束初始化函数tearDown()。这三者的执行顺序是:setUp()→test***()→tearDown()。此外,Junit3在命名标准和继承层次上有严格的要求:测试类测试类必须继承TestCase。SeleneseTestCase是TestCase的子类,所以在新建的测试类直接继承SeleneseTestCase即可。测试方法测试方法必须是Public,且以test开头。为了使命名更为标准,测试方法名应与测试案例的功能模块相关,如:测试保单查询功能的测试方法写为testPolicySerch()。初始化函数测试案例中,必须包含初始化函数setUp()和tearDown()。setUp()执行在测试方法之前,我们统一将初始化浏览器,登陆测试系统的操作放在这一函数中,在每次测试方法运行前执行。tearDown()函数中统一放置关闭浏览器的操作,在测试方法之后执行,结束当前测试案例。新建测试案例的步骤如下:选中新建的Package→右键→New→JunitTestCase〔参见图3.15〕→Name→Finish〔参见图3.16〕图STYLEREF1\s3SEQ图\*ARABIC\s115图STYLEREF1\s3SEQ图\*ARABIC\s116建好的SeleneseTestCase,会提示“ThetypeSeleneseTestCaseisdeprecated〞,根据提示增加“@SuppressWarnings("deprecation")〞,忽略类已过时的警告。接下来完善我们的测试案例,根据命名规那么,新建测试方法,重写setUp()和tearDown(),详见模板文件Demo.java。步骤简单介绍如下:创立webtest类的对象webtestitsTest=newwebtest();重写setUp()setUp()需要完成webtest的初始化和测试系统的登陆。相关参数均从配置文件中读取〔参见第5章,数据管理〕,范例如下:publicvoidsetUp()throwsException{ //变量赋值 StringfileName="config.xml"; //配置文件名 Stringip=itsTest.parserFromXml(fileName,"ip"); //ip intport=Integer.parseInt(itsTest.parserFromXml(fileName,"port")); //端口号 Stringbrowser=itsTest.parserFromXml(fileName,"browser"); //浏览器 StringbaseUrl=itsTest.parserFromXml(fileName,"url"); //根本URL StringextendedUrl=itsTest.parserFromXml(fileName,"extendedUrl"); //扩展URL Stringusername=itsTest.parserFromXml(fileName,"user"); //登陆用户名 Stringpassword=itsTest.parserFromXml(fileName,"pwd"); //登陆密码 //测试初始化 itsTest.initialize(baseUrl,ip,port,browser); //初始化 itsTest.login(extendedUrl,username,password); //系统登陆 }上面的范例是基于selenium的,如果是基于WebDriver,在初始化的时候,只需要传Url参数,其他参数不用传,如:itsTest.initialize(baseUrl,null,0,null); //初始化重写tearDown()publicvoidtearDown()throwsException{ itsTest.close(); //关闭浏览器,结束测试 }新建测试方法在不同的测试案例中,除了测试方法,其他根本大同小异。编写测试方法的时候,要以测试逻辑为依据,并结合selenese命令去实现测试逻辑。以NETS-ITSADMIN的名单批次查询为例,测试方法编写如下: /** *测试方法 *@throwsException */ publicvoidtestDemo()throwsException{ StringfirMenu="Image2"; //一级菜单 StringsecMenu="link=名单批次查询"; //二级菜单 StringinputBatchName="batchName"; //名单批次 StringbtnSerch="//input[@value='查询']"; //查询按钮 StringresultBatchName="//tr[@id=row0]/td[1]"; //查询结果 StringvalueBatchName="CMP202303021564-03-202303"; //批次名称 StringserchMode1="element" itsTest.isPresent(10,firMenu,serchMode1); //验证菜单是否存在 itsTest.click(firMenu); //点击“名单管理〞 itsTest.click(secMenu); //点击“名单批次查询〞 itsTest.type(inputBatchName,valueBatchName); itsTest.click(btnSerch); //点击查询按钮 assertEquals(valueBatchName,itsTest.getText(resultBatchName)); }至此,一个测试案例就完成了,参照图3.17运行测试案例。需要注意的是,如果使用的底层实现方法是Selenium,要先启动Seleniumserver,启动命令如下:java–jarselenium-server.jar图STYLEREF1\s3SEQ图\*ARABIC\s117管理测试案例测试工程目录结构单个测试案例调试完毕之后,需将案例放到执行机下的固定目录,统一运行和管理测试案例集。现在我们使用的方案是通过Jenkins调用Ant,完成测试案例的编译和运行。如图4-1,这是一个被测系统在执行机上必须要有的文件和文件夹:src:测试案例源文件,直接复制Eclipse工程下的测试案例文件,后续将会统一从配置管理工具〔CC/SVN〕上取得。lib:需要用到的外部包和配置文件,即在Eclipse中加载到Classpath中的所有包和文件xsl:Ant输出的测试报告样式,待Jenkins功能完善后,Ant不需要输出测试报告,那么该文件夹可以取消。样式模板详见:测试报告样式模板。build.xml:Ant的脚本文件,一般不作修改。perties:配置Ant的测试脚本,可以根据实际的目录修改。模板详见:脚本文件模板图STYLEREF1\s4SEQ图\*ARABIC\s11使用Ant运行测试案例Ant介绍AntAnotherNeatTool,是一个基于Java的跨平台构建工具,作为一个优秀的构建工具Ant有如下的优点:跨平台--因为ant是使用java实现的,所以它跨平台;使用简单--与ant的兄弟make比起来;语法清晰--同样是和make相比。Ant下载地址:Ant根本语法ant的编译文件默认为build.xml,一般无需改变。build.xml的根节点为<project>,一般格式如下:
<projectname="AntStudy"default="init"basedir=".">
name为工程名称;
default为默认的target,就是任务;
basedir就是基路径。一般为"."property可以定义变量,一般格式如下:
<propertyname="test"value="shit"/>
引用的时候这么引用${test}
如果变量是路径的话,那么可以这么定义:
<propertyname="src"value="src"/>定义target:<targetname="compile"depends="init"><!--othercommand--></target>
name的值为target的名称,可以在编译的时候指定是完成哪个target,
否那么采用project那里定义的default。
depends那么定义了依赖关系,值为其他target的name。多个依赖关系用","隔开,
顺序执行完定义的依赖关系,才会执行这个target。
target在build.xml中定义的顺序无所谓,但是depends中的顺序必须正确。构建文件包括<project>元素,以及其中嵌套的<target>、<property>和<path>元素,下面是一个通用的构建文件,它很适合作为一个模板。<projectdefault="all"> <propertyname="perty"value="avalue"/> <propertyname="perty"value="bvalue"/> <pathid="a.path"> <pathelementlocation="${java.home}/jre/lib/rt.jar"/> </path> <targetname="all"> <javacsrcdir="."> <classpathrefid="a.path"/> </javac> </target></project>关于构建文件的考前须知:
●所有构建文件都要有<project>元素,而且至少有一个<target>元素;●对于<project>元素的default属性并没有默认值;●构建文件并不一定要被命名为build.xml。不过build.xml是Ant要搜索的默认文件名;●每个构建文件只能有一个<project>元素。输出测试报告样式将xsl文件夹下,测试报告样式模板中的“NETS-ITSADMIN〞全部替换成当前测试系统名称即可。AntBuildAnt的XML配置文件的结构很简单,这也是Ant的一个优点,简单易懂,容易上手,Ant的配置文件主要由project,target和task三层树型结构组成。一般情况下,工程中的build.xml不需要修改,只需要根据当前的目录,修改配置文件perties即可。我们用到的build.xml,其中包含了4个任务〔target〕,分别是Junit、Compile、RunTest、DataClean,且按顺序执行,每个target的实现,请结合4.2.2Ant根本语法参看模板文件〔build.xml〕。Junit:完成初始化;Compile:完成测试案例的编译;RunTest:运行测试案例,并生成测试报告;DataClean:清理测试数据。测试人员可根据执行机上的实际目录修改perties配置文件。perties中有6个参数,如下:testSrc.dir=测试案例目录;xsl.dir=测试报告样式目录;lib.dir=引用外部jar包和配置文件目录;reports.dir=执行机本地生成的测试报告目录;run.classes=编译后的测试案例目录;use_jenkins=是否在使用Jenkins监控〔yes/no〕;使用Jenkins管理自动化测试任务Jenkins介绍Jenkins〔原Hudson〕是一款Java平台的开源持续集成〔ContinuousIntegration,CI〕引擎。它易于安装,配置简单,丰富的插件支持,高度的可扩展性,强大的分布式构建能力都让它在众多的CI引擎中脱颖而出。所以我们选用Jenkins来管理测试案例,以便以后进行持续集成。Jenkins任务创立在Jenkins中创立任务的步骤如下:登陆Jenkins:://hcd-it-44:8000/jenkins/〔此地址后续可能会更改〕;新建任务,根据测试系统填写任务名称,选择构建一个多配置工程,点击OK〔参见图4-2〕;图STYLEREF1\s4SEQ图\*ARABIC\s12选择执行机:ConfigurationMatrix→Slaves→Individualnodes勾选执行测试案例的执行机〔参见图4.3、图4.4〕图STYLEREF1\s4SEQ图\*ARABIC\s13图STYLEREF1\s4SEQ图\*ARABIC\s14选择构建方式:Build→InvokeAnt〔参见图4.5〕→Targets:build.xml文件中的default→BuildFile:执行机上build.xml的路径〔参见图4.6〕。图STYLEREF1\s4SEQ图\*ARABIC\s15图STYLEREF1\s4SEQ图\*ARABIC\s16选择打印输出结果:Post-buildActions→PublishJUnittestresultreport→TestreportXMLs:/*/*.xml〔参见图4.7〕图STYLEREF1\s4SEQ图\*ARABIC\s17Jenkins任务执行选中建好的Jenkins任务〔NETS-ITSADMIN〕,点击立即构建,即可运行测试案例〔参见图4.8〕。图STYLEREF1\s4SEQ图\*ARABIC\s18Jenkins执行结果查看案例执行完之后,可以通过执行状态,查看执行结果。任务状态及描述如图4.9。图STYLEREF1\s4SEQ图\*ARABIC\s19在案例执行的时候,也可进入构建状态,通过查看命令行输出,进行测试案例的监控。参加图4.10。图STYLEREF1\s4SEQ图\*ARABIC\s110数据管理自动化测试流程图自动化测试的过程包括:测试数据准备、测试脚本运行、生成测试报告;其中测试数据准备包括两个步骤:JDBC连接数据库、数据回滚脚本的运行,如图5-1所示。图STYLEREF1\s5SEQ图\*ARABIC\s11自动化测试流程图JDBC连接数据库代码范例JAVA的数据库操作,需要先建立DB连接,然后在DB中执行查询、更新、插入、删除等操作,并从查询操作中获取数据。代码范例如下: publicvoidDBTest()throwsException { Stringurl; //OracelDBURL Stringusername; //OracelDBusername Stringpassword; //OracleDBpassword StringfileName; //configfile Stringcmd_select="selectdescriptionfromN_OTHER_TESTING"; Stringcmd_update="updateN_OTHER_TESTINGsetdescription=NUll"; Stringcmd_insert="insertintoN_OTHER_TESTING"; Stringcmd_delete="deletefromN_OTHER_TESTING"; Stringcmd_commit="commit"; //Fetchparameterfromconfigfile fileName="config.xml"; url=parserFromXml(fileName,"url"); username=parserFromXml(fileName,"ldsuser"); password=parserFromXml(fileName,"ldspwd"); //LoadOracleServerJDBCdriver. Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); //GetconnectiontoDB Connectioncon=DriverManager.getConnection(url,user,pwd); //Createstatementobject Statementst=con.createStatement(); //SendSQLSELECTstatementstothedatabaseviatheStatement.executeQuery ResultSetresult_select=st.executeQuery(cmd_select); ResultSetresult_update=st.executeQuery(cmd_update); ResultSetresult_insert=st.executeQuery(cmd_insert); ResultSetresult_delete=st.executeQuery(cmd_delete); ResultSetresult_commit=st.executeQuery(cmd_commit); //Fetchvalueof"description"from"result_select"object. Stringdescription=""; 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,"ldspwd");步骤2:加载oracle数据库驱动;Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 注:需要加载oracleJDBC的jar包到Eclipse的lib中下载地址:步骤3:登录oracle数据库;Connectioncon=DriverManager.getConnection(url,user,pwd);步骤4:创立Statement对象; Statementst=con.createStatement();步骤5:通过Statement对象执行SQL语句; ResultSetresult_select=st.executeQuery(cmd_select); ResultSetresult_update=st.executeQuery(cmd_update); ResultSetresult_insert=st.executeQuery(cmd_insert); ResultSetresult_delete=st.executeQuery(cmd_delete); ResultSetresult_commit=st.executeQuery(cmd_commit); 步骤6:获取测试人员关心的查询结果;Stringdescription=""; while(result_select.next()){ description=result_select.getString("description"); }步骤7:关闭数据库连接:con.close();注:如果不关闭数据库连接可能带来一些严重的问题。数据回滚脚本数据回滚脚本的根本原那么:数据回滚脚本需将自动化数据回滚到初始化状态;测试人员应该屏蔽系统归档/备份功能对测试数据的影响,例如可以通过修改创立日期使其永远不会被归档或备份;自动化测试新生成的垃圾数据,建议及时清理〔如delete语句〕,以免造成系统负载过大;建议测试逻辑涵盖测试数据的整个生命周期,例如:案例A:新建测试机构Dept案例B:查询测试机构Dept案例C:修改测试机构Dept案例D:删除测试机构Dept数据回滚脚本应在每次执行自动化测试案例前执行。数据初始化脚本数据初始化脚本的根本原那么:自动化测试数据要与手动测试别离,如将自动化测试数据特定到某个特定条件,如某个机构或某天;自动化测试数据的命名应该显著区别于手工测试数据;数据初始化脚本要有备份,以便在数据库发生变更后快速恢复测试数据;数据初始化脚本不需要定期执行,仅在新建测试环境或测试数据库发生变更后执行。配置文件管理配置文件内容范例自动化测试的配置文件用来存放一些参数,例如:登录URL、用户名、密码等,便于后续维护。配置文件范例如下:<?xmlversion="1.0"encoding="UTF-8"?><project><url></url><loginurl>/lds</loginurl><extendedUrl>/lds</extendedUrl><ip></ip><port>4444</port><browser>iexplore</browser><user1>jiangyujun001</user1><pwd1>jiangyujun001</pwd1><user2>DONGXIAOHUAN921</user2><pwd2>abcde123</pwd2><campaignName>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025西安航天发动机有限公司校园招聘启动笔试历年参考题库附带答案详解
- 2025航天新气象科技有限公司招聘1人笔试历年参考题库附带答案详解
- 2025福建莆田市正美文旅投资有限公司招聘3人(四)笔试历年参考题库附带答案详解
- 2025福建福州平潭综合实验区人才发展集团有限公司第二十六批劳务外包招聘4人笔试历年参考题库附带答案详解
- 2025福建省大数据集团平潭有限公司招聘3人笔试历年参考题库附带答案详解
- 2025甘肃兰州能源投资集团有限公司招聘笔试历年参考题库附带答案详解
- 2025浙江温州市瓯飞新型建材有限公司招聘10人笔试历年参考题库附带答案详解
- 2025江苏盐城市滨海县阳光城市公交有限公司招聘拟聘用人员笔试历年参考题库附带答案详解
- 2025年淮南大通区某单位招聘劳务外包人员4人笔试历年参考题库附带答案详解
- 2025四川绵阳市长虹民生物流股份有限公司招聘软件开发工程师岗位1人笔试历年参考题库附带答案详解
- 年产5万吨电熔锆刚玉新材料扩建项目环境影响报告表
- 慢性阻塞性肺疾病伴肺曲霉病诊治和管理专家共识解读课件
- 2025人教版八年级道德与法治上册全册知识点
- 2025年水利资料员基础知识考试题库及答案1
- T-CAV 032-2025 T-CAS 1061-2025 生物制品临床研究术语
- 民办学校财务管理体系构建与制度汇编
- 2025年时事政治试题库及答案(共550题)
- 助理医师题库及答案
- 食品关键控制点知识培训
- DZ/T 0275.1-2015岩矿鉴定技术规范第1部分:总则及一般规定
- 纸箱委托加工合同协议书
评论
0/150
提交评论