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

下载本文档

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

文档简介

1、 秘密秘密第 1 页 共 32 页开源开源WEB自动化测试自动化测试实施指南实施指南说明: 1.本文件中“”中内容为举例和说明文字,请在文件拟制时替换或删除;2.若文中某章节内容可省略、不需要或适用,请保留该标题,并根据实际在内容部分写明“略” 、“勿需”或“不适用”等,同时适当说明原因;3.请作者注意在文档右上角修改该文档的密级。 秘密秘密第 2 页 共 32 页文件修订历史修订时间修订时间修订说明修订说明作者作者审核审核2011-8-5创建目录岑海菊温素剑2011-8-17章节 1、2、4、岑海菊温素剑章节 3李颖、陈建红、岑海菊温素剑章节 5李颖温素剑模板修订历史版本版本生效时间生效时间

2、变更概要变更概要作者作者审核审核批准批准1.0.02011-8-5创建自动化测试方法文档岑海菊 秘密秘密第 3 页 共 32 页目录目录1引言与概述引言与概述 .41.1背景 .41.2开源 WEB自动化测试的优势.41.2.1Selenium简介.41.2.2Selenium的优势.42开源开源 WEB 自动化测试架构自动化测试架构.62.1基于 SELENIUM 2.0 的自动化测试框架.62.2新 WEB自动化测试代码架构.73WEB 自动化测试编写自动化测试编写.83.1集成开发环境搭建 .83.1.1选择底层实现方法.83.1.2eclipse配置.93.1.3项目环境配置.103.

3、2测试案例编写 .133.2.1Selenese语法.143.2.2XPath介绍.143.2.3测试案例框架.164管理测试案例管理测试案例 .194.1测试工程目录结构 .194.2使用 ANT运行测试案例 .204.2.1Ant介绍.204.2.2Ant基本语法.204.2.3输出测试报告样式.214.2.4Ant Build.214.3使用 JENKINS管理自动化测试任务.224.3.1Jenkins介绍.224.3.2Jenkins任务创建.224.3.3Jenkins任务执行.244.3.4Jenkins执行结果查看.245数据管理数据管理 .255.1.1自动化测试流程图.25

4、5.1.2JDBC连接数据库代码范例.265.1.3数据回滚脚本.285.1.4数据初始化脚本.285.1.5配置文件管理.296疑难手册疑难手册 .31附录附录ASELENIUM 2.0常用命令常用命令.32附录附录B案例文件、配置文件案例文件、配置文件DEMO.32附录附录CCC使用及培训资料使用及培训资料.32 秘密秘密第 4 页 共 32 页1引言与概述引言与概述1.1背景背景目前 QTP 是我司使用最广泛的自动化测试工具,在实际使用中发现,QTP 存在以下不足之处:1)QTP 基于测试对象库来识别测试对象,其内部机制是不透明的,在实际工作中,对测试对象库的维护工作量很大,耗费了测试人

5、员大量的精力,效果却并不好;2)QTP 的设计架构决定了当前测试脚本可复用性差,很难积累可重复使用的函数、组件、包等测试资产;3)使用 QTP 的描述性编程来创建测试脚本,严重依赖于测试人员的个人经验和技巧,难以大规模推广;4)自动化测试数据经常失效,原因在于没有统一的数据回滚措施。 基于商业自动化测试工具 QTP 的录制/回放模式,无法构建健壮的自动化测试脚本,所以我们迫切地需要新的工具来替换 QTP。当前有多种开源自动化测试工具可供选择,Selenium 2.0 便是目前使用最广泛的开源测试工具之一。1.2 开源开源 Web 自动化测试的优势自动化测试的优势1.2.1Selenium 简介

6、简介Selenium 是一系列基于 Web 的自动化测试工具。Selenium 提供了一系列测试函数用于支持 Web 自动化测试,这些函数非常灵活,他们能够通过多种方式定位 UI 元素,并将预期结果与系统实际表现相比较,测试人员通过这些测试函数来模拟用户操作,从而实现Web 自动化测试。Selenium 2.0 集成了 WebDriver API,解决了 Selenium 1.0 的局限,二者相互弥补,提供了更多可选的编程接口。1.2.2Selenium 的优势的优势QTP 的测试对象库,对与测试人员来说是不透明的。图 1-1 为构建 QTP 自动化测试脚本的流程,在使用 QTP 录制测试脚本

7、的时候,测试人员根本不清楚测试对象库中的测试对象是否有效,能否满足需求,这给使用者带来很大的困扰。 秘密秘密第 5 页 共 32 页图 1-1 构建 QTP 自动化测试脚本的流程Selenium 2.0 具有很强的灵活性和很好的扩展性,测试人员从页面数据中提取对象,引入测试逻辑构建测试脚本。通过这样的方式,测试人员能够确保测试对象的有效性,对测试对象的维护也更容易。图 1-2 构建 Selenium 2.0 自动化测试脚本的流程对比 QTP 和 Selenium2.0 构建自动化测试脚本的流程图,我们可以发现,Selenium 不再基于录制/回放模式来创建自动化测试脚本,弥补了 QTP 的不足

8、:1)开源测试工具识别测试对象的机制是透明的,可以减少测试人员的维护工作量;2)采用开源测试工具,可以将需要重用的测试代码打包到 jar 中。后续计划引入配置管理,保证可重用 jar 包的质量;3)采用 java 语言来编写测试脚本,在测试对象识别得到保证的前提下,这并不是一 秘密秘密第 6 页 共 32 页件充满技巧性的工作; 4)针对自动化测试数据经常失效的问题,新渠道目前的做法是将恢复测试数据的SQL 放在定时 JOB 中,在自动化测试运行前恢复相关测试数据。除此之外,Selenium 2.0 在很多方面都优于 QTP,如表 1-1 所示。表 1-1 QTP 与 Selenium 2.0

9、 的对比Selenium 2.0(开源)对比项QTP(商业)SeleniumWebDriver购置成本昂贵免费免费测试对象识别机制不透明透明透明编码语言VBSJavaPythonRuby 等多种语言Java代码可重用性低高高脚本维护工作量高低低是否支持录制/回放模式是是(功能较弱)否执行效率低一般高测试脚本是否支持配置管理不支持支持支持是否支持订制否是是2开源开源 Web 自动化测试架构自动化测试架构2.1基于基于 Selenium 2.0 的自动化测试框架的自动化测试框架图 2-1 是基于 Selenium 2.0 的自动化测试的整体框架(虚线代表尚未实现的功能):步骤 1:在开发人员提交代

10、码后,持续集成引擎(Jenkins)会对最新的代码进行编译和部署;步骤 2:Jenkins 从配置管理工具(SVN/CC)获取测试脚本;步骤 3:Jenkins 调用 Ant 编译测试脚本;步骤 4:Jenkins 调用 Ant 去运行 Junit 测试案例;步骤 5:Junit 通过 Selenium 2.0 操作浏览器;步骤 6:Jenkins 输出测试报告,并以邮件的形式向测试人员发送自动化测试结果。 秘密秘密第 7 页 共 32 页持续集成引擎(Jenkins)AntJunitMailWebDriverSelenium ClientSelenium-RC浏览器(Browser)Sele

11、nium 2.0开发持续集成Report配置管理工具(SVN/CC)测试结果输出图 2-1 新 Web 自动化测试整体框架2.2新新 Web 自动化测试代码架构自动化测试代码架构基于 Selenium 2.0 的 Web 自动化测试,每个测试案例就是一个 Junit Test Case。Junit测试案例,由测试数据和测试逻辑两部分组成。测试逻辑最底层的实现是 Selenium2.0 库,通过抽象和扩展出 webtest 类。测试人员通过调用 webtest 类的方法,来构建测试逻辑。关 秘密秘密第 8 页 共 32 页于测试数据,请参考第 5 章数据管理。Junit Test CaseTes

12、t LogicWebtest Class(Jar)Selenium 2.0 libTest Data图 2-2 新 Web 自动化测试代码框架3Web 自动化测试编写自动化测试编写3.1 集成开发环境搭建集成开发环境搭建3.1.1选择底层实现方法选择底层实现方法前面提到,Selenium 2.0 集成了 WebDriver 的 API,因此我们首先需要选择底层的实现方法是 Selenium 还是 WebDriver。二者对比如表 3-1 所示,Selenium 提供了丰富的方法,支持多种浏览器,可以满足各种各样的测试逻辑需求,所以,一般情况下优先选择Selenium。但有些系统比较特殊,某些功

13、能 Selenium 无法支持,此时可考虑使用WebDriver。WebDriver 提供的方法虽不及 Selenium 多(如截屏等功能) ,但是也基本能满足系统的要求,最主要的是它的执行速度非常的快,这点是 Selenium 所望尘莫及的。总而言之,还是要根据系统的实际情况,选择合适的实现方法。 秘密秘密第 9 页 共 32 页表 3-1 Selenium 与 WebDriver 的对比对比项SeleniumWebDriver编码语言JavaPythonRuby 等多种语言Java是否支持录制/回放模式是否执行效率一般高支持的浏览器IE、Firefox、Chrome、Safari、Oper

14、aIE、Firefox、Chrome提供的测试方法多基本3.1.2eclipse 配置配置新标装的电脑,Eclipse 配置已经完成,请按照下述步骤检查配置是否正确:步骤 1:设置电脑环境变量 JAVA_HOME:我的电脑(右键) 属性 高级 环境变量 (系统变量)新建 ,进行如下编辑:变量名:JAVA_HOME变量值(java 安装的目录):C:Program FilesJavajdk1.6.0_20 步骤 2:设置电脑环境变量 CLASSPATH:我的电脑(右键) 属性 高级 环境变量 (系统变量)新建,进行如下编辑:变量名:CLASSPATH变量值(java 安装的目录):.;%JAVA

15、_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;步骤 3:在 eclipse 中配置 java点击 eclipse 菜单中 Window Preferences Java Installed JREs ,配置如图 3-1。图 3-1 Eclipse 中 JRES 配置图 秘密秘密第 10 页 共 32 页3.1.3项目环境配置项目环境配置1)新建 Eclipse 项目FileNewProject(参见图 3-2)Java ProjectNext(参见图 3-3)Project Name(项目名 Webtest_Project,参见图

16、 3-4)NextFinish(参见图 3-5)图 3-2图 3-3输入创建的工程名字 秘密秘密第 11 页 共 32 页图 3-4图 3-52)导入自动化测试的 jar 包和相应的 lib 库 秘密秘密第 12 页 共 32 页ClasspathBuild PathConfigure Buid path(参见图 3-6)LibrariesAdd External JARs加入 jarOK(参见图 3-7)图 3-6图 3-7从官网上下载的 selenium,包含了 selenium-java-2.0b3.jar、selenium-java-2.0b3-srcs.jar和 libs,其中 se

17、lenium-java-2.0b3-srcs.jar 是源文件的 jar 包,不需要导入工程,其他包都要导入。所有需导入工程的 jar 包已整理在 Selenium0 2.0 中,详细说明如下:a)webtest_selenium.jar/webtest_webdirver.jar(参见 3.1.1 章节,根据选择的实现方法加入对应的 jar 包) ;b)加入 selenium-java-2.0b3.jar;c)加入 selenium-java-2.0b3 文件夹下 libs 里面的所有 jar;3)新建 package 包在 src 包文件夹下面建立一个属于自己系统的 Web 自动化测试的

18、package 包。包(package)的命名规范:全部小写,测试代码 package 为 com.paic.。例如:com.paic.its.demo。选中 src 资源包右键单击NewPackage(参见图 3-8)name(com.paic.its.demo)Finish(参见图 3-9)图 3-8图 3-93.2 测试案例编写测试案例编写 秘密秘密第 14 页 共 32 页3.2.1Selenese 语法语法Selenium 提供了一套丰富的命令来测试你的 web 应用,这套命令通常叫 Selenese。 它可以用于测试基于 HTML 标签的页面元素,例如:链接,输入框,下拉框,提交表

19、单,表格数据等。 (具体常用命令可以参见附录 A)Selenese 命令调用格式主要包括三部分:Command(命令) 、Target(目标) 、Value(值) ,下面通过个简单的例子说明:selenium.type(j_username,username);此命令的目的是输入登陆用户名,具体解析如图 3-10 所示:Command(命令)(命令) Target(目标)(目标) Value(值)(值) 例1 selenium.type j_username username 图 3-11 Selenese 命令调用格式图Selenese 命令可以转变为编程代码,他可以同时支持包括 C#、ja

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

21、115;/登陆用户名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); /等待加载界面selenium.s

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

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

24、密秘密第 16 页 共 32 页图 3-15 代码解析图3.2.3测试案例框架测试案例框架Selenium 的开发提供的 SeleneseTestCase 是 Junit3 风格的,所以我们的自动化测试案例要符合 Junit3 的框架。Junit3 的测试案例,包括三个部分:测试方法 test*()、初始化函数 setUp()和结束初始化函数 tearDown()。这三者的执行顺序是:setUp()test*()tearDown()。此外,Junit3 在命名规范和继承层次上有严格的要求:1)测试类测试类必须继承 TestCase。SeleneseTestCase 是 TestCase 的子类

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

26、kage右键NewJunit Test Case(参见图 3.15)NameFinish(参见图 3.16) 秘密秘密第 17 页 共 32 页图 3-16图 3-17建好的 SeleneseTestCase,会提示“The type SeleneseTestCase is deprecated” ,根据提示增加“SuppressWarnings(deprecation)” ,忽略类已过时的警告。接下来完善我们的测试案例,根据命名规则,新建测试方法,重写 setUp()和 tearDown(),详见模板文件Demo.java。步骤简单介绍如下:1)创建 webtest 类的对象webtest

27、itsTest = new webtest();2)重写 setUp() 秘密秘密第 18 页 共 32 页setUp()需要完成 webtest 的初始化和测试系统的登陆。相关参数均从配置文件中读取(参见第 5 章,数据管理) ,范例如下:public void setUp() throws Exception /-变量赋值-String fileName = config.xml;/配置文件名String ip = itsTest.parserFromXml(fileName, ip);/ipint port = Integer.parseInt(itsTest.parserFromXml

28、(fileName, port);/端口号String browser = itsTest.parserFromXml(fileName, browser);/浏览器String baseUrl = itsTest.parserFromXml(fileName, url);/基本URLString extendedUrl = itsTest.parserFromXml(fileName, extendedUrl);/扩展URLString username = itsTest.parserFromXml(fileName, user);/登陆用户名String password = itsTe

29、st.parserFromXml(fileName, pwd);/登陆密码/-测试初始化-itsTest.initialize(baseUrl, ip, port, browser);/初始化itsTest.login(extendedUrl, username, password);/系统登陆上面的范例是基于 selenium 的,如果是基于 WebDriver,在初始化的时候,只需要传Url 参数,其他参数不用传,如:itsTest.initialize(baseUrl, null, 0, null);/初始化3)重写 tearDown()public void tearDown() th

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

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

32、/点击 “名单批次查询”itsTest.type(inputBatchName,valueBatchName);itsTest.click(btnSerch);/点击查询按钮assertEquals(valueBatchName, itsTest.getText(resultBatchName); 秘密秘密第 19 页 共 32 页至此,一个测试案例就完成了,参照图 3.17 运行测试案例。需要注意的是,如果使用的底层实现方法是 Selenium,要先启动Selenium server,启动命令如下:java jar selenium-server.jar图 3-18 4管理测试案例管理测试案

33、例4.1 测试工程目录结构测试工程目录结构单个测试案例调试完毕之后,需将案例放到执行机下的固定目录,统一运行和管理测试案例集。现在我们使用的方案是通过 Jenkins 调用 Ant,完成测试案例的编译和运行。如图 4-1,这是一个被测系统在执行机上必须要有的文件和文件夹:src:测试案例源文件,直接复制 Eclipse 工程下的测试案例文件,后续将会统一从配置管理工具(CC/SVN)上取得。lib:需要用到的外部包和配置文件,即在 Eclipse 中加载到 Classpath 中的所有包和文件xsl:Ant 输出的测试报告样式,待 Jenkins 功能完善后,Ant 不需要输出测试报告,则该文

34、件夹可以取消。样式模板详见:测试报告样式模板。build.xml:Ant 的脚本文件,一般不作修改。perties:配置 Ant 的测试脚本,可以根据实际的目录修改。模板详见:脚本文件模板libxslsrc 测试案例源文件测试报告的样式文件需要用到的外部jar包和配置文件pertiesAnt的脚本文件Ant的脚本文件的配置文件系统名称图 4-1 秘密秘密第 20 页 共 32 页4.2 使用使用 Ant 运行测试案例运行测试案例4.2.1Ant 介绍介绍Ant-Another Neat Tool,是一个基于 Java 的跨平台构建工具,作为一个优秀

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

36、时候这么引用$test如果变量是路径的话,则可以这么定义:4)定义 target: name 的值为 target 的名称,可以在编译的时候指定是完成哪个 target, 否则采用 project 那里定义的 default。 depends 则定义了依赖关系,值为其他 target 的 name。多个依赖关系用,隔开, 顺序执行完定义的依赖关系,才会执行这个 target。 target 在 build.xml 中定义的顺序无所谓,但是 depends 中的顺序必须正确。5)构建文件包括元素,以及其中嵌套的、 和 元素,下面是一个通用的构建文件,它很适合作为一个模板。 秘密秘密第 21 页

37、共 32 页关于构建文件的注意事项: 所有构建文件都要有元素,而且至少有一个 元素; 对于 元素的 default 属性并没有默认值; 构建文件并不一定要被命名为 build.xml。不过 build.xml 是 Ant 要搜索的默认文件名; 每个构建文件只能有一个 元素。4.2.3输出测试报告样式输出测试报告样式将 xsl 文件夹下,测试报告样式模板中的“NETS-ITSADMIN”全部替换成当前测试系统名称即可。4.2.4Ant BuildAnt 的 XML 配置文件的结构很简单,这也是 Ant 的一个优点,简单易懂,容易上手,Ant 的配置文件主要由 project,target 和 t

38、ask 三层树型结构组成。一般情况下,工程中的 build.xml 不需要修改,只需要根据当前的目录,修改配置文件 perties 即可。我们用到的 build.xml,其中包含了 4 个任务(target) ,分别是Junit、Compile、RunTest、DataClean,且按顺序执行,每个 target 的实现,请结合4.2.2Ant 基本语法参看模板文件(build.xml) 。Junit:完成初始化;Compile:完成测试案例的编译;RunTest:运行测试案例,并生成测试报告;DataClean:清理测试数据。测试人员可根据执行机上的实际目录修改

39、perties 配置文件。perties 中有6 个参数, 如下:testSrc.dir=测试案例目录;xsl.dir=测试报告样式目录;lib.dir=引用外部 jar 包和配置文件目录;reports.dir=执行机本地生成的测试报告目录;run.classes=编译后的测试案例目录;use_jenkins=是否在使用 Jenkins 监控(yes/no) ; 秘密秘密第 22 页 共 32 页4.3 使用使用 Jenkins 管理自动化测试任务管理自动化测试任务4.3.1Jenkins介绍介绍Jenkins(原 Hudson)是一款 Java 平台的开源持续集成(Conti

40、nuous Integration,CI)引擎。它易于安装,配置简单,丰富的插件支持,高度的可扩展性,强大的分布式构建能力都让它在众多的 CI 引擎中脱颖而出。所以我们选用 Jenkins 来管理测试案例,以便以后进行持续集成。4.3.2Jenkins任务创建任务创建在 Jenkins 中创建任务的步骤如下:1)登陆 Jenkins:http:/hcd-it-44:8000/jenkins/ (此地址后续可能会更改) ;2)新建任务,根据测试系统填写任务名称,选择构建一个多配置项目,点击OK(参见图 4-2) ;图 4-23)选择执行机:Configuration MatrixSlavesIn

41、dividual nodes 勾选执行测试案例的执行机(参见图 4.3、图 4.4) 秘密秘密第 23 页 共 32 页图 4-3图 4-44)选择构建方式:BuildInvoke Ant(参见图 4.5)Targets:build.xml 文件中的defaultBuild File:执行机上 build.xml 的路径(参见图 4.6) 。图 4-5图 4-65)选择打印输出结果:Post-build Actions Publish JUnit test result report Test report XMLs:/*/*.xml(参见图 4.7) 秘密秘密第 24 页 共 32 页图 4

42、-74.3.3Jenkins任务执行任务执行选中建好的 Jenkins 任务(NETS-ITSADMIN) ,点击立即构建,即可运行测试案例(参见图 4.8) 。图 4-84.3.4Jenkins执行结果查看执行结果查看案例执行完之后,可以通过执行状态,查看执行结果。任务状态及描述如图 4.9。 秘密秘密第 25 页 共 32 页图 4-9在案例执行的时候,也可进入构建状态,通过查看命令行输出,进行测试案例的监控。参加图 4.10。图 4-105数据管理数据管理5.1.1自动化测试流程图自动化测试流程图自动化测试的过程包括:测试数据准备、测试脚本运行、生成测试报告;其中测试数据准备包括两个步骤

43、:JDBC 连接数据库、数据回滚脚本的运行,如图 5-1 所示。 秘密秘密第 26 页 共 32 页JDBC连接数据库运行数据回滚脚本自动化测试报告自动化测试开始自动化测试结束运行测试脚本测试数据准备图 5-1 自动化测试流程图5.1.2JDBC 连接数据库代码范例连接数据库代码范例JAVA 的数据库操作,需要先建立 DB 连接,然后在 DB 中执行查询、更新、插入、删除等操作,并从查询操作中获取数据。代码范例如下:public void DBTest() throws Exception 秘密秘密第 27 页 共 32 页String url; /Oracel DB URLString us

44、ername; /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 = insert into N_OTHER_TESTING;String cmd_delete = delete from N_O

45、THER_TESTING;String cmd_commit = commit;/-Fetch parameter from config file-fileName = config.xml;url = parserFromXml(fileName, url);username = parserFromXml(fileName, ldsuser);password = parserFromXml(fileName, ldspwd);/Load Oracle Server JDBC driver. Class.forName(oracle.jdbc.driver.OracleDriver).n

46、ewInstance();/ 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 QueryResultSet result_select = st.executeQuery(cmd_select);ResultSet re

47、sult_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 result_select object.String description = ;while (result_selec

48、t.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.

49、OracleDriver).newInstance();注:需要加载 oracle JDBC 的 jar 包到 Eclipse 的 lib 中下载地址:http:/ 步骤 3:登录 oracle 数据库;Connection con = DriverManager.getConnection(url, user, pwd);步骤 4:创建 Statement 对象;Statement st= con.createStatement(); 秘密秘密第 28 页 共 32 页步骤 5:通过 Statement 对象执行 SQL 语句;ResultSet result_select = st.exe

50、cuteQuery(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);步骤 6:获取测试人员关心的查询结果;String description = ;while (result_select.

51、next() description = result_select.getString(description);步骤 7:关闭数据库连接:con.close();注:如果不关闭数据库连接可能带来一些严重的问题。5.1.3数据回滚脚本数据回滚脚本数据回滚脚本的基本原则:数据回滚脚本需将自动化数据回滚到初始化状态;测试人员应该屏蔽系统归档/备份功能对测试数据的影响,例如可以通过修改创建日期使其永远不会被归档或备份;自动化测试新生成的垃圾数据,建议及时清理(如 delete 语句) ,以免造成系统负载过大;建议测试逻辑涵盖测试数据的整个生命周期,例如:案例 A:新建测试机构 Dept案例 B:查

52、询测试机构 Dept案例 C:修改测试机构 Dept案例 D:删除测试机构 Dept数据回滚脚本应在每次执行自动化测试案例前执行。5.1.4数据初始化脚本数据初始化脚本数据初始化脚本的基本原则:1)自动化测试数据要与手动测试分离,如将自动化测试数据特定到某个特定条件,如某个机构或某天;2)自动化测试数据的命名应该显著区别于手工测试数据;3)数据初始化脚本要有备份,以便在数据库发生变更后快速恢复测试数据;4)数据初始化脚本不需要定期执行,仅在新建测试环境或测试数据库发生变更后执行。 秘密秘密第 29 页 共 32 页5.1.5配置文件管理配置文件管理1)配置文件内容范例自动化测试的配置文件用来存放一

温馨提示

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

评论

0/150

提交评论