《2022年2022年开源Web自动化测试指南》由会员分享,可在线阅读,更多相关《2022年2022年开源Web自动化测试指南(32页珍藏版)》请在金锄头文库上搜索。
1、秘密第 1 页 共 32 页开源WEB 自动化测试实施指南说明:1.本文件中“ ”中内容为举例和说明文字,请在文件拟制时替换或删除;2.若文中某章节内容可省略、不需要或适用,请保留该标题,并根据实际在内容部分写明“略”、“勿需”或“不适用”等,同时适当说明原因;3.请作者注意在文档右上角修改该文档的密级。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 32 页 - - - - - - - - - 秘密第 2 页 共 32 页文件修订历史修订时间修订说明作者审核2011-
2、8-5 创建目录岑海菊温素剑2011-8-17 章节 1、2、4、岑海菊温素剑章节 3 李颖、陈建红、岑海菊温素剑章节 5 李颖温素剑模板修订历史版本生效时间变更概要作者审核批准1.0.0 2011-8-5 创建自动化测试方法文档岑海菊名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 32 页 - - - - - - - - - 秘密第 3 页 共 32 页目录1引言与概述 . 41.1背景 . 41.2开源 WEB自动化测试的优势 . 41.2.1Selenium简介 .
3、 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.2测试案例编写. 133.2.1Selenese语法 . 143.2.2XPath介绍. 143.2.3测试案例框架. 164管理测试案例. 194.1测试工程目录结构. 194.2使用 ANT运行测试案例. 204.2.1Ant介绍 . 204.2.2
4、Ant基本语法 . 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自动化测试流程图. 255.1.2JDBC连接数据库代码范例 . 265.1.3数据回滚脚本. 285.1.4数据初始化脚本. 285.1.5配置文件管理. 296疑难手册 . 31附录ASELENIUM 2.0常用命令 . 32附录B案例文件、配置文件DEMO
5、 . 32附录CCC使用及培训资料. 32名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 32 页 - - - - - - - - - 秘密第 4 页 共 32 页1引言与概述1.1背景目前 QTP 是我司使用最广泛的自动化测试工具,在实际使用中发现, QTP 存在以下不足之处:1)QTP 基于测试对象库来识别测试对象,其内部机制是不透明的, 在实际工作中, 对测试对象库的维护工作量很大,耗费了测试人员大量的精力,效果却并不好;2)QTP 的设计架构决定了当前测试脚本可复
6、用性差,很难积累可重复使用的函数、 组件、包等测试资产;3)使用 QTP 的描述性编程来创建测试脚本, 严重依赖于测试人员的个人经验和技巧,难以大规模推广;4)自动化测试数据经常失效,原因在于没有统一的数据回滚措施。基于商业自动化测试工具QTP 的录制 /回放模式, 无法构建健壮的自动化测试脚本,所以我们迫切地需要新的工具来替换QTP。当前有多种开源自动化测试工具可供选择,Selenium 2.0 便是目前使用最广泛的开源测试工具之一。1.2 开源 Web 自动化测试的优势1.2.1Selenium 简介Selenium是一系列基于 Web的自动化测试工具。 Selenium提供了一系列测试函
7、数用于支持 Web 自动化测试,这些函数非常灵活,他们能够通过多种方式定位UI 元素,并将预期结果与系统实际表现相比较, 测试人员通过这些测试函数来模拟用户操作,从而实现 Web自动化测试。Selenium 2.0 集成了 WebDriver API ,解决了 Selenium 1.0 的局限,二者相互弥补,提供了更多可选的编程接口。1.2.2Selenium 的优势QTP 的测试对象库,对与测试人员来说是不透明的。图1-1 为构建 QTP 自动化测试脚本的流程,在使用 QTP 录制测试脚本的时候,测试人员根本不清楚测试对象库中的测试对象是否有效,能否满足需求,这给使用者带来很大的困扰。名师资
8、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 32 页 - - - - - - - - - 秘密第 5 页 共 32 页图 1-1 构建 QTP 自动化测试脚本的流程Selenium 2.0具有很强的灵活性和很好的扩展性,测试人员从页面数据中提取对象,引入测试逻辑构建测试脚本。通过这样的方式,测试人员能够确保测试对象的有效性,对测试对象的维护也更容易。图 1-2 构建 Selenium 2.0 自动化测试脚本的流程对比 QTP 和 Selenium2.0构建自动化测试脚本的流
9、程图,我们可以发现,Selenium不再基于录制 /回放模式来创建自动化测试脚本,弥补了QTP 的不足:1)开源测试工具识别测试对象的机制是透明的,可以减少测试人员的维护工作量;2)采用开源测试工具,可以将需要重用的测试代码打包到jar 中。后续计划引入配置管理,保证可重用jar 包的质量;3)采用 java 语言来编写测试脚本, 在测试对象识别得到保证的前提下,这并不是一件名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 32 页 - - - - - - - - - 秘密
10、第 6 页 共 32 页充满技巧性的工作;4)针对自动化测试数据经常失效的问题, 新渠道目前的做法是将恢复测试数据的SQL放在定时 JOB 中,在自动化测试运行前恢复相关测试数据。除此之外, Selenium 2.0在很多方面都优于QTP,如表 1-1 所示。表 1-1 QTP 与 Selenium 2.0 的对比对比项QTP(商业)Selenium 2.0(开源)Selenium WebDriver 购置成本昂贵免费免费测试对象识别机制不透明透明透明编码语言VBS JavaPythonRuby 等多种语言Java 代码可重用性低高高脚本维护工作量高低低是否支持录制/回放模式是是(功能较弱)否
11、执行效率低一般高测试脚本是否支持配置管理不支持支持支持是否支持订制否是是2开源 Web 自动化测试架构2.1基于 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操作浏览器;步骤
12、6:Jenkins 输出测试报告,并以邮件的形式向测试人员发送自动化测试结果。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 32 页 - - - - - - - - - 秘密第 7 页 共 32 页持续集成引擎(Jenkins )AntJunitMailWebDriverSelenium ClientSelenium-RC浏览器( Browser )Selenium 2.0开发持续集成Report配置管理工具(SVN/CC )测试结果输出图 2-1 新 Web 自动化测
13、试整体框架2.2新 Web 自动化测试代码架构基于 Selenium 2.0 的 Web 自动化测试,每个测试案例就是一个Junit Test Case 。Junit测试案例,由测试数据和测试逻辑两部分组成。测试逻辑最底层的实现是Selenium2.0库,通过抽象和扩展出webtest类。测试人员通过调用webtest类的方法,来构建测试逻辑。关名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 32 页 - - - - - - - - - 秘密第 8 页 共 32 页于测试
14、数据,请参考第5 章数据管理。Junit Test CaseTest 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。但
15、有些系统比较特殊, 某些功能 Selenium 无法支持,此时可考虑使用 WebDriver。 WebDriver提供的方法虽不及Selenium 多(如截屏等功能),但是也基本能满足系统的要求,最主要的是它的执行速度非常的快,这点是Selenium所望尘莫及的。总而言之,还是要根据系统的实际情况,选择合适的实现方法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 32 页 - - - - - - - - - 秘密第 9 页 共 32 页表 3-1 Selenium 与
16、WebDriver 的对比对比项Selenium WebDriver 编码语言JavaPythonRuby 等多种语言Java 是否支持录制/回放模式是否执行效率一般高支持的浏览器IE、Firefox 、 Chrome、Safari、Opera IE、Firefox 、Chrome 提供的测试方法多基本3.1.2eclipse配置新标装的电脑, Eclipse配置已经完成,请按照下述步骤检查配置是否正确:步骤 1:设置电脑环境变量JAVA_HOME :我的电脑(右键) 属性 高级 环境变量(系统变量)新建,进行如下编辑:变量名: JAVA_HOME 变量值( java 安装的目录):C:Pro
17、gram FilesJavajdk1.6.0_20 步骤 2:设置电脑环境变量CLASSPATH: :我的电脑(右键) 属性 高级 环境变量(系统变量)新建,进行如下编辑:变量名: CLASSPATH 变量值( java 安装的目录):.;%JAVA_HOME%lib;%JA VA_HOME%libdt.jar;%JA VA_HOME%libtools.jar; 步骤 3:在 eclipse中配置 java 点击 eclipse菜单中 Window Preferences Java Installed JREs ,配置如图 3-1。图 3-1 Eclipse 中 JRES 配置图名师资料总结
18、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 32 页 - - - - - - - - - 秘密第 10 页 共 32 页3.1.3项目环境配置1)新建 Eclipse 项目FileNewProject(参见图 3-2)Java ProjectNext(参见图 3-3)Project Name(项目名 Webtest_Project ,参见图 3-4)NextFinish(参见图 3-5)图 3-2 图 3-3 输入创建的工程名字名师资料总结 - - -精品资料欢迎下载 - - -
19、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 32 页 - - - - - - - - - 秘密第 11 页 共 32 页图 3-4 图 3-5 2)导入自动化测试的jar 包和相应的 lib 库名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 32 页 - - - - - - - - - 秘密第 12 页 共 32 页Classpath Build PathConfigure Buid path(
20、参见图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,其中 selenium-java-2.0b3-srcs.jar是源文件的 jar 包,不需要导入工程,其他包都要导入。所有需导入工程的jar 包已整理在 Selenium0 2.0中,详细说明如下:a)webtest_selenium.jar/webtest_webdirver.jar (参见 3.1.1 章节,根
21、据选择的实现方法加入对应的 jar 包) ;b)加入 selenium-java-2.0b3.jar ;c)加入 selenium-java-2.0b3文件夹下 libs 里面的所有 jar;3)新建 package包在 src 包文件夹下面建立一个属于自己系统的Web自动化测试的 package包。包(package )的命名规范:全部小写,测试代码package为 com.paic.。例如: com.paic.its.demo。选中 src 资源包 右键单击 NewPackage (参见图 3-8)name (com.paic.its.demo )Finish(参见图 3-9)图 3-8
22、图 3-9 3.2 测试案例编写名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 32 页 - - - - - - - - - 秘密第 14 页 共 32 页3.2.1Selenese语法Selenium提供了一套丰富的命令来测试你的web 应用,这套命令通常叫Selenese 。 它可以用于测试基于HTML 标签的页面元素,例如:链接,输入框,下拉框,提交表单,表格数据等。(具体常用命令可以参见附录A)Selenese命令调用格式主要包括三部分: Command (命令
23、) 、Target (目标) 、 Value (值) ,下面通过个简单的例子说明:selenium.type(j_username,username); 此命令的目的是输入登陆用户名,具体解析如图3-10 所示:Command(命令)Target (目标)Value(值)例1 selenium.type j_username username 图 3-11 Selenese命令调用格式图Selenese命令可以转变为编程代码,他可以同时支持包括C#、java、php、Perl 在内的多种语言,这里我以java 语言为例举一个简单的例子。这是一个系统登陆的案例,实现的功能包括:打开登陆界面-输入
24、登陆用户名、密码 -点击登陆。通过这个案例我们可以很容易的理解selenium如何运行 Selenese命令,同时细心的人应该注意到了,在Selenese命令中 Target (目标)或者 Value(值)有时是可以省略的(例如:selenium.open 、selenium. waitForPageToLoad ) 。public void testLogin() throws Exception String username = gtdtest115; /登陆用户名String password = vvvvv88888 ; /登陆密码selenium.open(/nets-tmr-li
25、fe/login.jsp); /打开登陆界面selenium.waitForPageToLoad( 30000 ); /等待页面加载selenium.type(j_username,username); /输入登陆用户名selenium.type(j_password ,password); /输入登陆密码selenium.click( Submit ); /点击登陆按钮selenium.waitForPageToLoad(60000); /等待加载界面selenium.stop(); /关闭selenium 3.2.2XPath 介绍XPath 是一门在XML 文档中查找信息的语言。 XPa
26、th 用于在 XML 文档中通过元素和属性进行导航。它包含一个标准函数库,使用路径表达式来选取,这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。Selenium用 XPath技术来记录网页元素的位置和属性。下面通过个简单的例子说明:在这个案例中我们要做的操作是选择查询结果中的第一条数据,系统界面图和代码解析图见图 3-11 和图 3-12。XPath 路径为/tableid=questResult/tbody/tr1/td1/input 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
27、- - - - 第 14 页,共 32 页 - - - - - - - - - 秘密第 15 页 共 32 页图 3-12 系统界面图图 3-13 代码解析图解析如下:1)路径以双斜线/ 开头, 则表示选择文档中所有满足双斜线/之后规则的元素 (无论层级关系 ),即寻找 table 下面所有满足此路径条件的数据。2)前缀 用于指定属性, /tableid=questResult则表示在table 下面查询到满足id=questResult 的数据,如图 3-13 。图 3-14 代码解析图3)以 斜 线/ 开 始 , 那 么 该 路 径 就 表 示 到一 个 元 素 的 绝 对 路 径 ,在
28、此 案 例 中/tbody/tr1/td1/input则表示选择在tbody 下面第一行第一列的input 数据,如图3-14。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 32 页 - - - - - - - - - 秘密第 16 页 共 32 页图 3-15 代码解析图3.2.3测试案例框架Selenium的开发提供的 SeleneseTestCase 是 Junit3风格的,所以我们的自动化测试案例要符合 Junit3 的框架。Junit3 的测试案例,包括三个
29、部分:测试方法test*() 、初始化函数setUp()和结束初始化函数 tearDown()。这三者的执行顺序是: setUp() test* () tearDown() 。此外,Junit3在命名规范和继承层次上有严格的要求:1)测试类测试类必须继承 TestCase 。SeleneseTestCase 是 TestCase的子类,所以在新建的测试类直接继承 SeleneseTestCase 即可。2)测试方法测试方法必须是Public,且以 test 开头。为了使命名更为规范,测试方法名应与测试案例的功能模块相关,如:测试保单查询功能的测试方法写为testPolicySerch()。3)
30、初始化函数测试案例中,必须包含初始化函数setUp()和 tearDown()。setUp()执行在测试方法之前,我们统一将初始化浏览器,登陆测试系统的操作放在这一函数中,在每次测试方法运行前执行。tearDown()函数中统一放置关闭浏览器的操作,在测试方法之后执行, 结束当前测试案例。新建测试案例的步骤如下:选中新建的 Package 右键NewJunit Test Case (参见图 3.15)NameFinish(参见图 3.16)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
31、第 16 页,共 32 页 - - - - - - - - - 秘密第 17 页 共 32 页图 3-16 图 3-17 建好的 SeleneseTestCase,会提示“ The type SeleneseTestCase is deprecated” ,根据提示增加“ SuppressWarnings(deprecation) ” ,忽略类已过时的警告。接下来完善我们的测试案例,根据命名规则, 新建测试方法,重写 setUp()和 tearDown(), 详见模板文件 Demo.java。步骤简单介绍如下:1)创建 webtest类的对象webtest itsTest = new webt
32、est();2)重写 setUp() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 32 页 - - - - - - - - - 秘密第 18 页 共 32 页setUp()需要完成webtest 的初始化和测试系统的登陆。相关参数均从配置文件中读取(参见第 5 章,数据管理),范例如下:public void setUp() throws Exception /- 变量赋值 -String fileName = config.xml ; /配置文件名String i
33、p = itsTest.parserFromXml(fileName, ip ); /ip int port = Integer. parseInt(itsTest.parserFromXml(fileName, port ); /端口号String browser = itsTest.parserFromXml(fileName, browser ); /浏览器String baseUrl = itsTest.parserFromXml(fileName, url ); /基本 URLString extendedUrl = itsTest.parserFromXml(fileName, e
34、xtendedUrl ); /扩展 URLString username = itsTest.parserFromXml(fileName, user); /登陆用户名String password = itsTest.parserFromXml(fileName, pwd ); /登陆密码/- 测试初始化 -itsTest.initialize(baseUrl, ip, port, browser); /初始化itsTest.login(extendedUrl, username, password); /系统登陆 上面的范例是基于selenium 的,如果是基于WebDriver,在初始化
35、的时候,只需要传Url 参数,其他参数不用传,如:itsTest.initialize(baseUrl, null, 0, null); /初始化3)重写 tearDown() public void tearDown() throws Exception itsTest.close(); /关闭浏览器,结束测试 4)新建测试方法在不同的测试案例中,除了测试方法,其他基本大同小异。编写测试方法的时候,要以测试逻辑为依据,并结合selenese命令去实现测试逻辑。以NETS-ITSADMIN 的名单批次查询为例,测试方法编写如下:/* 测试方法* throws Exception*/public
36、 void testDemo() throws Exception String firMenu = Image2 ; /一级菜单String secMenu = link= 名单批次查询 ; /二级菜单String inputBatchName = batchName; /名单批次String btnSerch = /inputvalue= 查 询 ; /查询按钮String resultBatchName = /trid=row0/td1; /查询结果String valueBatchName= CMP201103021564-03-201103 ; /批次名称String serchMo
37、de1 = elementitsTest.isPresent(10, firMenu, serchMode1); /验证菜单是否存在itsTest.click(firMenu); /点击“ 名单管理 ”itsTest.click(secMenu); /点击“ 名单批次查询 ”itsTest.type(inputBatchName,valueBatchName); itsTest.click(btnSerch); /点击查询按钮assertEquals(valueBatchName, itsTest.getText(resultBatchName); 名师资料总结 - - -精品资料欢迎下载 -
38、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 32 页 - - - - - - - - - 秘密第 19 页 共 32 页至此,一个测试案例就完成了,参照图3.17 运行测试案例。需要注意的是,如果使用的底层实现方法是Selenium,要先启动Selenium server,启动命令如下:java jar selenium-server.jar图 3-184管理测试案例4.1 测试工程目录结构单个测试案例调试完毕之后,需将案例放到执行机下的固定目录,统一运行和管理测试案例集。现在我们使用的方案是通过Jenkin
39、s调用 Ant,完成测试案例的编译和运行。如图 4-1,这是一个被测系统在执行机上必须要有的文件和文件夹:src:测试案例源文件,直接复制Eclipse 工程下的测试案例文件,后续将会统一从配置管理工具( CC/SVN)上取得。lib:需要用到的外部包和配置文件,即在Eclipse 中加载到 Classpath中的所有包和文件xsl:Ant 输出的测试报告样式,待Jenkins功能完善后, Ant 不需要输出测试报告,则该文件夹可以取消。样式模板详见:测试报告样式模板。build.xml :Ant 的脚本文件,一般不作修改。run.properties :配置 Ant 的测试脚本,可以根据实际
40、的目录修改。模板详见:脚本文件模板libxslsrc测试案例源文件测试报告的样式文件需要用到的外部 jar 包和配置文件build.xmlrun.propertiesAnt的脚本文件Ant的脚本文件的配置文件系统名称图 4-1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 32 页 - - - - - - - - - 秘密第 20 页 共 32 页4.2使用 Ant 运行测试案例4.2.1Ant 介绍Ant-Another Neat Tool,是一个基于 Java的跨
41、平台构建工具,作为一个优秀的构建工具 Ant 有如下的优点 : 1)跨平台 -因为 ant 是使用 java 实现的,所以它跨平台;2)使用简单 -与 ant的兄弟 make比起来;3)语法清晰 -同样是和 make 相比。Ant 下载地址: http:/ant.apache.org/bindownload.cgi4.2.2Ant 基本语法1)ant的编译文件默认为build.xml ,一般无需改变。2)build.xml 的根节点为 ,一般格式如下:name为工程名称;default 为默认的 target,就是任务; basedir就是基路径。一般为 .3)property 可以定义变量,
42、一般格式如下:引用的时候这么引用 $test 如果变量是路径的话,则可以这么定义:4)定义 target:name的值为 target的名称,可以在编译的时候指定是完成哪个target,否则采用 project 那里定义的 default。 depends则定义了依赖关系,值为其他target的 name。多个依赖关系用 ,隔开,顺序执行完定义的依赖关系,才会执行这个target。 target在 build.xml 中定义的顺序无所谓,但是depends中的顺序必须正确。5)构建文件包括 元素,以及其中嵌套的 、 和 元素,下面是一个通用的构建文件,它很适合作为一个模板。名师资料总结 - -
43、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 32 页 - - - - - - - - - 秘密第 21 页 共 32 页关于构建文件的注意事项: 所有构建文件都要有 元素,而且至少有一个 元素; 对于 元素的 default 属性并没有默认值; 构建文件并不一定要被命名为build.xml 。不过 build.xml 是 Ant 要搜索的默认文件名; 每个构建文件只能有一个 元素。4.2.3输出测试报告样式将 xsl 文件夹下,测试报告样式模板中的“NETS-ITSADMIN ”全部替
44、换成当前测试系统名称即可。4.2.4Ant Build Ant 的 XML 配置文件的结构很简单,这也是Ant 的一个优点,简单易懂,容易上手,Ant 的配置文件主要由project,target和 task 三层树型结构组成。一般情况下,工程中的build.xml 不需要修改,只需要根据当前的目录,修改配置文件run.properties即可。我们用到的build.xml,其中包含了 4 个任务( target) ,分别是 Junit、Compile、RunTest 、DataClean ,且按顺序执行,每个target 的实现,请结合4.2.2Ant 基本语法参看模板文件( build.x
45、ml ) 。Junit:完成初始化;Compile:完成测试案例的编译;RunTest :运行测试案例,并生成测试报告;DataClean :清理测试数据。测试人员可根据执行机上的实际目录修改run.properties配置文件。run.properties中有 6个参数,如下:testSrc.dir=测试案例目录;xsl.dir=测试报告样式目录;lib.dir= 引用外部 jar 包和配置文件目录;reports.dir=执行机本地生成的测试报告目录;run.classes= 编译后的测试案例目录;use_jenkins=是否在使用 Jenkins监控( yes/no ) ;名师资料总结
46、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 32 页 - - - - - - - - - 秘密第 22 页 共 32 页4.3 使用 Jenkins管理自动化测试任务4.3.1Jenkins介绍Jenkins(原 Hudson)是一款 Java平台的开源持续集成( Continuous Integration,CI)引擎。它易于安装,配置简单,丰富的插件支持,高度的可扩展性,强大的分布式构建能力都让它在众多的CI 引擎中脱颖而出。所以我们选用Jenkins来管理测试案例,以便以后
47、进行持续集成。4.3.2Jenkins任务创建在 Jenkins中创建任务的步骤如下:1)登陆 Jenkins:http:/hcd-it-44:8000/jenkins/ (此地址后续可能会更改) ;2)新建任务,根据测试系统填写任务名称,选择构建一个多配置项目,点击OK(参见图 4-2) ;图 4-2 3)选择执行机: Configuration Matrix Slaves Individual nodes 勾选执行测试案例的执行机(参见图 4.3、图 4.4)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
48、- - - - - - 第 22 页,共 32 页 - - - - - - - - - 秘密第 23 页 共 32 页图 4-3 图 4-4 4)选择构建方式: BuildInvoke Ant(参见图4.5)Targets :build.xml文件中的defaultBuild File :执行机上 build.xml 的路径(参见图 4.6) 。图 4-5 图 4-6 5)选择打印输出结果: Post-build Actions Publish JUnit test result report Test report XMLs:/*/*.xml (参见图 4.7)名师资料总结 - - -精品资
49、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 32 页 - - - - - - - - - 秘密第 24 页 共 32 页图 4-7 4.3.3Jenkins任务执行选中建好的 Jenkins任务(NETS-ITSADMIN ) ,点击立即构建, 即可运行测试案例 (参见图 4.8) 。图 4-8 4.3.4Jenkins执行结果查看案例执行完之后,可以通过执行状态,查看执行结果。任务状态及描述如图4.9。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
50、 - - - - - 名师精心整理 - - - - - - - 第 24 页,共 32 页 - - - - - - - - - 秘密第 25 页 共 32 页图 4-9 在案例执行的时候,也可进入构建状态,通过查看命令行输出,进行测试案例的监控。参加图 4.10。图 4-10 5数据管理5.1.1自动化测试流程图自动化测试的过程包括:测试数据准备、测试脚本运行、生成测试报告;其中测试数据准备包括两个步骤: JDBC 连接数据库、数据回滚脚本的运行,如图5-1 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
51、 - - - - - - 第 25 页,共 32 页 - - - - - - - - - 秘密第 26 页 共 32 页JDBC 连接数据库运行数据回滚脚本自动化测试报告自动化测试开始自动化测试结束运行测试脚本测试数据准备图 5-1 自动化测试流程图5.1.2JDBC 连接数据库代码范例JAVA 的数据库操作,需要先建立DB 连接,然后在 DB 中执行查询、更新、插入、删除等操作,并从查询操作中获取数据。代码范例如下:public voidDBTest() throws Exception名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
52、- - 名师精心整理 - - - - - - - 第 26 页,共 32 页 - - - - - - - - - 秘密第 27 页 共 32 页 String url; /Oracel DB URL String username; /Oracel DB username String password; /Oracle DB password String fileName ; /config file String cmd_select = select description from N_OTHER_TESTING; String cmd_update = update N_OTHER
53、_TESTING set description=NUll; String cmd_insert = insert into N_OTHER_TESTING; String cmd_delete = delete from N_OTHER_TESTING; String cmd_commit = commit ; /-Fetch parameter from config file-fileName = config.xml ; url = parserFromXml (fileName, url ); username = parserFromXml (fileName, ldsuser )
54、; password = parserFromXml (fileName , ldspwd ); /Load Oracle Server JDBC 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 S
55、QL SELECT statements to the database via the Statement.execute QueryResultSetresult_select = st.executeQuery(cmd_select); ResultSetresult_update = st.executeQuery(cmd_update); ResultSetresult_insert = st.executeQuery(cmd_insert); ResultSetresult_delete = st.executeQuery(cmd_delete); ResultSetresult_
56、commit = st.executeQuery(cmd_commit ); / Fetch value of description from result_select object.String description = ; while (result_select.next() description = result_select.getString(description ); con.close(); 步骤 1:从配置文件中获取登录数据库的连接串,用户名、密码;fileName = config.xml ; url = parserFromXml (fileName , url
57、 ); username = parserFromXml (fileName , ldsuser); password = parserFromXml (fileName , ldspwd ); 步骤 2:加载 oracle数据库驱动;Class.forName(oracle.jdbc.driver.OracleDriver).newInstance(); 注:需要加载oracle JDBC 的 jar 包到 Eclipse 的 lib 中下载地址: http:/ 3:登录 oracle数据库;Connection con = DriverManager .getConnection(url,
58、 user, pwd); 步骤 4:创建 Statement对象;Statement st= con.createStatement(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 32 页 - - - - - - - - - 秘密第 28 页 共 32 页步骤 5:通过 Statement对象执行 SQL 语句;ResultSet result_select = st.executeQuery(cmd_select); ResultSet result_upda
59、te = 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.next() description = result_select.ge
60、tString(description ); 步骤 7:关闭数据库连接:con.close(); 注:如果不关闭数据库连接可能带来一些严重的问题。5.1.3数据回滚脚本数据回滚脚本的基本原则:数据回滚脚本需将自动化数据回滚到初始化状态;测试人员应该屏蔽系统归档/备份功能对测试数据的影响,例如可以通过修改创建日期使其永远不会被归档或备份;自动化测试新生成的垃圾数据,建议及时清理(如delete语句) ,以免造成系统负载过大;建议测试逻辑涵盖测试数据的整个生命周期,例如:案例 A:新建测试机构 Dept 案例 B:查询测试机构 Dept 案例 C:修改测试机构 Dept 案例 D:删除测试机构 D
61、ept 数据回滚脚本应在每次执行自动化测试案例前执行。5.1.4数据初始化脚本数据初始化脚本的基本原则:1)自动化测试数据要与手动测试分离,如将自动化测试数据特定到某个特定条件,如某个机构或某天;2)自动化测试数据的命名应该显著区别于手工测试数据;3)数据初始化脚本要有备份,以便在数据库发生变更后快速恢复测试数据;4)数据初始化脚本不需要定期执行,仅在新建测试环境或测试数据库发生变更后执行。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 28 页,共 32 页 - - - - - -
62、 - - - 秘密第 29 页 共 32 页5.1.5配置文件管理1)配置文件内容范例自动化测试的配置文件用来存放一些参数,例如:登录URL、用户名、密码等,便于后续维护。配置文件范例如下: http:/netsv2-lds- /lds /lds 0.0.0.0 4444 iexplore jiangyujun001 jiangyujun001 DONGXIAOHUAN921 abcde123 AUTOTest1024 AUTOTESTQstionnaire0001 a)设置配置文件的类型为XML ,编码格式为 UTF-8:b)设置测试系统的登录地址: http:/netsv2-lds- /l
63、ds /lds c)定义 Selenium服务器的 IP、端口号、浏览器类型: 0.0.0.0 4444 iexplore d)定义登录系统的用户名、密码:jiangyujun001 jiangyujun001 DONGXIAOHUAN921 abcde123e)测试人员自定义的其他参数: AUTOTest1024 AUTOTESTQstionnaire0001 2)配置文件放置位置步骤 1:在自动化测试工程的lib 目录下新建文件夹(如: config) ,并将配置文件放入此文件夹,如图 5-2 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
64、- - - - - - 名师精心整理 - - - - - - - 第 29 页,共 32 页 - - - - - - - - - 秘密第 30 页 共 32 页图 5-2 配置文件放置图步骤 2:进入工程的 build-path 页面,如图 5-3 所示。图 5-3 配置文件放置图步骤 3:选择添加“ Class Folder” ,如图 5-4 所示。图 5-4 配置文件放置图步骤 4:勾选中新建的config 文件夹,点击 OK,加载完毕,如图5-5 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
65、- - - - - 第 30 页,共 32 页 - - - - - - - - - 秘密第 31 页 共 32 页图 5-5 配置文件放置图6疑难手册1)为什么测试脚本会不稳定,单独执行能通过,批量执行的时候就有可能失败的?答:基于 Web 的系统,很容易受到外界因素(如网络、部署、性能等)的影响,导致系统运行缓慢, 这就要求我们的测试脚本有很强的健壮性。解决办法是在测试脚本中,加上动态等待和动态检测(如waitforpageload()、isPresent() ) ,给系统足够的响应时间。2)弹出的 Alert 窗口如何处理?答:一般情况下,直接使用isAlertPresent()、getA
66、lert()等函数可以处理弹出窗口。如果选用的是基于WebDriver 的方式实现, 若使用这些函数无效时, 可以用其扩展函数 isAlertPresentExtend()、getAlert()。3)为什么在案例运行的时候,会出现“没有权限”的错误?答:由于浏览器的同源策略,会抛出“没有权限”的错误。解决方法之一是,在抛出错误的函数套上一层trycatch() 。4)为什么选择 frame 之后,就不能再选其他的frame 了?答:选择 iframe 后,必须使用“ selenium.selectFrame(relative=up); ” ,才可以再选择其他 iframe。关于 iframe
67、的相关介绍,可以查看:http:/ - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 31 页,共 32 页 - - - - - - - - - 秘密第 32 页 共 32 页5)Selenium 2.0在哪里下载?答:可从官网上下载最新版本:http:/seleniumhq.org/download/6)Selenium-RC如何启动?答:先从官网上下载SeleniumServer ,解压到本地。新建一个批处理文件,写入命令:java jar 。如:java -jar C: selenium-se
68、rverselenium-server-standalone-2.0b3.jar 执行案例前启动 Server即可。附录ASelenium 2.0常用命令请参看 Selenium中文 API:Selenium_中文API.pdf附录B案例文件demo 1)基于 selenium 的测试案例demo 2)基于 webdriver 的测试案例demo 附录CCC使用及培训资料更多详细信息请参考以下网址:http:/ _E4928554.htmlcclicense3CC_CQ_v7 客户端安装路径开发过程管理规范培训课件-CC 使用手册 .ppt名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 32 页,共 32 页 - - - - - - - - -