-
selenium + ant 应用
2009-02-12 23:38:30
selenium ThoughtWorks专门为Web应用开发的自动化测试工具,适合用于功能测试与验收测试.也是近年来较为流行的开源测试工具.selenium这一强大的Web测试工具主要由selenium IDE, selenium core, selenium Remote Control 及selenium Grid组成. 其中selenium RC 应用较为广泛亦算是功能最为强大的一个,通常它会与其它工具结合起来使用以更好地发挥其强大功能.现介绍构建工具Ant与selenium结合用于测试java应用项目.Ant+selenium可以构建测试build,然后部署到相应的测试环境中,再编译执行生成测试报告,最后通过邮件发送测试报告.
对selenium 和ant 有所了解的同行应该看得出这个应用主要是使用Ant来构建版本,然后部署到测试环境中去,再然后执行测试脚本到生成发送测试报告.即是使用Ant这个强大的构建部署工具帮我们做那些外围的工作,使测试跟开发完美结合,让selenium 自动化测试应用完全自动化.所以这个应用主要是Ant的应用.
介绍下我当时使用情况.当时一个项目中使用selenium RC来做自动化测试,主要是冒烟测试跟回归测试.我们测试所用的build是在香港开发部门每天使用Bamboo持续构建的,所以我们必须用Ant通过网络从上面拿相应的build下来,修改相应的配置文件,然后部署到相应的测试环境中去. 部署好测试系统后,我们就可以通过Ant编译运行我们的测试脚本(用java写的selenium RC 脚本).运行完成后用Ant自带的方法来生成测试报告,最后还是能过Ant以邮件发送报告.所以,我们只需要用鼠标点一下,甚至不用点而用其它工具每天自动执行.
当然这也并不是什么很高明的应用,但借助Ant强大功能,使用selenium自动化测试做得更为彻底,将测试各个步骤很好地连接起来,当然带来更高效率.这个应用主要就是Ant的使用,难点也在Ant的使用,因为其中涉及到不少的Ant tasks.不过它官网上都有详细的使用介绍:http://ant.apache.org/manual/index.html. 现贴出我之前使用的ant build 文件,有兴趣的同行可以参考下.<?xml version="1.0"?>
<project name="camp-testuff" default="main">
<!-- properies -->
<property file="./resources/build.properties" /><!-- 定义classpath -->
<path id="master-classpath">
<fileset file="${lib.dir}/*.jar"/>
<pathelement path="${classes.dir}" />
<pathelement path="${resources.dir}" />
<pathelement path="${src.dir}" />
</path><!-- 初始化任务 -->
<target name="init">
<java jar="${selenimhome}/selenium-server.jar" fork="true" spawn="true" />
</target><!--下载更新build-->
<target name="download" if="isdowload">
<get src="${targeturl}" dest="${filePath.dir}/${filename}" verbose="true" usetimestamp="true" />
</target>
<!--更新编绎war文件-->
<target name="war" depends="download">
<unwar src="${filePath.dir}/${filename}" dest="${filePath.dir}/project" />
<propertyfile file="${filePath.dir}/project/WEB-INF/classes/jdbc.properties" comment="My properties">
<entry key="jdbc.url" value="${jdbc.url}" />
<entry key="jdbc.username" value="${jdbc.username}" />
<entry key="jdbc.password" value="${jdbc.password}" />
</propertyfile>
<propertyfile file="${filePath.dir}/project/WEB-INF/classes/systemConfiguration.properties" comment="My properties">
<entry key="mail.host" value="${mail.host}" />
</propertyfile><war destfile="${filePath.dir}/${projectfile}" needxmlfile="false">
<fileset dir="${filePath.dir}/project" includes="**/*.*" />
</war>
</target><!-- 部署项目 -->
<target name="deploy">
<mkdir dir="${tomcatlog.dir}" />
<mkdir dir="${tomcatconfig.dir}" />
<taskdef resource="cargo.tasks">
<classpath>
<pathelement location="${cargo-uberjar}" />
<pathelement location="${cargo-antjar}" />
</classpath>
</taskdef><cargo containerId="tomcat5x" home="D:\tomcat" ōutput="${tomcatlog.dir}/output.log" log="${tomcatlog.dir}/cargo.log" action="start" failonerror="false" wait="false">
<configuration home="${tomcatconfig.dir}">
<property name="cargo.servlet.port" value="8080" />
<property name="cargo.logging" value="high" />
<property name="cargo.jvmargs" value="-Xmx500m"/>
<deployable type="war" file="${filePath.dir}/${projectfile}" />
</configuration>
</cargo>
</target><!-- 编译脚本-->
<target name="compile" descrīption="compile the source files">
<mkdir dir="${classes.dir}" />
<javac srcdir="${src.dir}" failonerror="false" destdir="${classes.dir}">
<include name="**/*.*" />
<exclude name="**/*ViewCustomerTest.*" />
<exclude name="**/*SubmittingMaintenanceApplicationTest.*" />
<exclude name="**/*SubmittingMaintenanceApplicationTest.*" />
<exclude name="**/*AddMaintenance.*" />
<exclude name="**/*EditMaintenance.*" />
<classpath refid="master-classpath" />
</javac>
</target><!-- 测试 Junit脚本-->
<target name="test" descrīption="run junit test">
<tstamp>
<format property="stratTime" pattern="MM/dd/yyyy HH:mm:ss" />
</tstamp>
<mkdir dir="${report.dir}" />
<junit printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
<classpath refid="master-classpath" />
<formatter type="xml" /><batchtest todir="${report.dir}">
<fileset dir="${src.dir}">
<include name="${testname}" />
<exclude name="**/*ViewCustomerTest.*"/>
<exclude name="**/*SubmittingMaintenanceApplicationTest.*"/>
<exclude name="**/*SubmittingMaintenanceApplicationTest.*"/>
<exclude name="**/*AddMaintenance.*"/>
<exclude name="**/*EditMaintenance.*"/></fileset>
</batchtest>
</junit>
</target><!-- 生成报告 -->
<target name="junitreport" depends="test">
<mkdir dir="${report.dir}/html" />
<junitreport todir="${report.dir}">
<fileset dir="${report.dir}" includes="TEST-*.xml" />
<report format="frames" todir="${report.dir}/html" />
</junitreport>
</target><!-- 发送测试结果 -->
<target name="SendEmail" depends="junitreport">
<tstamp>
<format property="endTime" pattern="MM/dd/yyyy HH:mm:ss " />
<format property="endTime2" pattern="MM/dd/yyyy " />
<format property="endTime3" pattern="yyyyMMddHHmmss " />
</tstamp>
<zip destfile="${report.dir}/html/Report.zip">
<zipfileset dir="${report.dir}/html" includes="**/*.*" />
</zip>
<mail mailhost="${host}" messagemimetype="${messagetype}"
mailport="${mailport}" subject="Test Report_${endTime3}"
user="${user}" password="${password}" messagefile="${messagefile}"
tolist="${tolist}" cclist="${cclist}">
<from name="${fromname}" address="${fromaddress}" />
<attachments>
<fileset dir="${report.dir}/html">
<include name="*Report.zip" />
</fileset>
</attachments>
</mail>
</target><!-- 清除生成文件(报告) -->
<target name="clean">
<delete dir="${tomcatconfig.dir}" />
<delete dir="${report.dir}" />
<delete dir="${classes.dir}" />
<delete file="${filePath.dir}/project.war" />
<delete dir="${filePath.dir}/project" />
<sql driver="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://${jdbc.urlAndPort}"
userid="${jdbc.username}"
password="${jdbc.password}"
>
drop schema ${jdbc.schema};
<classpath location="${lib.dir}/mysql-connector-java-5.0.5.jar"/>
</sql>
</target><!-- 测试完成关闭计算机 -->
<target name="shutDown">
<sleep minutes="2" />
<exec executable="shutdown">
<arg value="-s" />
</exec>
</target><!-- Stop tomcat -->
<target name="stoptomcat">
<taskdef resource="cargo.tasks">
<classpath>
<pathelement location="${cargo-uberjar}" />
<pathelement location="${cargo-antjar}" />
</classpath>
</taskdef><cargo containerId="tomcat5x" home="D:\tomcat" action="stop">
<configuration home="${tomcatconfig.dir}"/>
</cargo>
</target><!-- 主要目标 -->
<target name="main">
<!-- 清理并初始化环境 -->
<antcall target="clean" />
<antcall target="init" />
<!-- 部署项目 -->
<antcall target="war" />
<antcall target="deploy" />
<!-- 编译脚本 -->
<antcall target="compile" />
<!-- 测试并发送报告 -->
<antcall target="SendEmail" />
<antcall target="stoptomcat" />
<antcall target="shutDown" />
</target></project>
-
Selenium学习三-selenium RC简介
2008-11-05 21:43:02
Selenium RC 就是使用程式语言编写脚本,通过Selenium RC服务器作为代理服务器去访问应用从而达到测试的目的.由于Selenium RC不再需要依附Firefox,所以其可以在其它更多的浏览器上进行测试,而这也是我们做WEB测试的一个比较重要的问题(解决了因为担心浏览器兼容问题而重要做测试的问题). RC的脚本由于是程序语言编写,所以更为灵活强大.并且它支持的语言极为丰富.所以RC是Selenium测试工具中的应用最广的.同时,它对测试人员编程水平要求也较高.下面将简介Selenium RC.Selenium RC使用包括两部分,一是服务器,一是脚本.服务器则下载后即可使用,记得开始跑脚本时把服务器打开.它是一个已经打包好的JAVA程序,运行 java -jar selenium-server.jar即可.要使用 selenium-rc ,启动这个server 是必须的。当然,启动的时候有一些参数,可以到其官方网站上参考.不过做一般的测试,不需要要额外的参数已经足够.另一部分是脚本,就是我们要编写的了.它可以使用多种语言编写,如C#,ruby,java等,在这里我采用java.它可以在多个测试框架上应用,如junit/nunit, testng等,这里采用junit.在整个测试框架中,Selenium提供了封装好的selenium 接口与类,如果使用junit它还提供了封装好的测试类.下面将按步骤以一个简单的例子介绍基于junit3.0的测试框架用java语言在Ecplise平台上编写并运行脚本.1>编写测试脚本.首先建立一个java project,记得要把junit3.0的包与selenium java(即是selenium-java-client-driver.jar) 包放到project中.然后建立一个类直接继承封装好的selenium测试类.脚本如下:package com.xpg.study;import com.thoughtworks.selenium.*;// 继承测试类public class DefaultTestCase extends SeleneseTestCase {//实例化Selenium 类Selenium selenium;//覆盖setUp方法public void setUp() throws Exception{//实例化DefaultSelenium类,其它命令均是它的方法selenium=new DefaultSelenium("localhost",4444,"*iexplore","http://www.baidu.com");//启动selenium 创建一个新的sessionselenium.start();}//覆盖teardown方法(在这里没有特别的设置)public void tearDown()throws Exception{selenium.stop();}//建立一个测试方法,里面是命令的集合了..public void testBaidu()throws Exception{// DefaultTestCase test=new DefaultTestCase();//注意这里的selenium即是类中的已经启动的selenium,命令都是它的方法selenium.open("http://www.baidu.com");selenium.waitForPageToLoad("6000");selenium.type("kw", "selenium");selenium.click("sb");Thread.sleep(3000);assertTrue(selenium.isTextPresent("相关搜索"));}}以上则是一个简单的用来测试百度网站的例子.当然一般情况下我们会将junit testCase放在专门的测试类中,这个测试类则直接继承SeleneseTestCase类,以更好的组织脚本也可达到重用的目的.编写好脚本当然是试运行下了.首先得开户Selenium 服务器,用命令java -jar selenium-server.jar -multiWindow 即可打开. 这里加了个参数-multiWindow是为了在运行时应用运行的浏览器与Selenium 服务的浏览器分开. 打开服务器后即可运行脚本了. 最后脚本不出意外的话应该是Passed.以上只是非常简单的一个selenium RC就用于测试的例子.要将selenium RC 很好地应用于测试则需要花点时间熟悉,研究下.... -
Selenium学习二---selenium IDE介绍
2008-10-31 00:03:50
Selenium IDE 是selenium测试工具中的其中一个,是一个基于FireFox的Web测试开发环境,可以录制、编辑和调试测试。Selenium IDE包含了Selenium Core,因此可以轻易地在浏览器中录制和回放测试。Selenium IDE不仅仅是一个测试录制工具,而是一个IDE,可以录制测试,也可以手工编辑测试,可设置断点进行调试,可把测试保存到HTML、Ruby、C#、Java等其他脚本格式,然后使用Selenium RC来实现并运行更加灵活和强大的测试。Selenium IDE是一个firfox插件,录制相当方便,而且效果不错,很多录制后不需要修改即可回放.编辑也相当简单,一行就是一个完整的命令.十分适合于编程基础较薄的测试人员使用.但是由于所用的语言是selenese即是类html脚本语言而非程式语言,于组织脚本不够灵活,所形成的功能不如selenium RC 强大,而且对脚本组织也不方便.更重要的是暂时只支持 firefox浏览器.所以一般情况下是以selenium IDE 来熟悉 selenium功具.然后利用IDE 来录制脚本作为selenium core的脚本文件或更多的是用IDE录制而保存为drive脚本即是程式语言脚本如java 脚本.但无论如何 selenium IDE是学习selenium的必修课,因为日后录制脚本需要它,即使用selenium rc也可用它录制部分脚本并可方便用于调试.下面将简单介绍Selenium IDE的整个使用过程.1> Selenium IDE 安装. 从其官方网站下载安装:http://selenium-ide.openqa.org/,跟普通frifox 插件安装没有什么两样(注意是firefox安装插件不是IE哦..).安装完成后,在浏览器"工具"菜单栏即可见Selenium IDE 工具.2>Selenium IDE录制脚本.安装完成后当然是开始录制脚本了.打开IDE工具后,类似一个小浏览器(此时默认是录制状态),在Base URL 中输入你要录制的网站网址如www.google.com.然后在Firefox 中打开google 网站,输入"Selenium ide",再点击搜索.然后点击IDE工具的停止录制按钮停止录制.此时你会发现在"Table"中有了一些命令行,每一有三个部分组成. command:命令如单击click, Target:目标即是命令的对象如单击按钮(用xpath或是其它定位方法表示),Value即是值如向输入框输入东西即在这里设置.而在"Sourse"中可看到类似html 的脚本,保存后就这样了,呵呵.3> Selenium IDE编辑脚本.你可以在Table中修改,点击相应命令行,所在行内部便会出现在下方,即可方便修改,如选择相应的command.当然你也可以在Sourece中修改,但人必须对 Selenium命令很熟悉. 现在修改下刚才录制的脚本,将第二行命令的value 修改为Selenium.4>Selenium IDE脚本运行. 修改完后即可点击运行按钮运行.运行刚才修改过的脚本,你会发现其迅速打开google浏览器并输入"Selenium"并点击进行搜索.此时运行结束.5>Selenium IDE脚本保存.保存时可保存为html脚本或是其它程式语言脚本,初步学习还是保存为html脚本吧.6>打开 seleniumIDE脚本并运行.这个就非常简单了....到此,Selenium IDE录制并修改运行整个过程完成了,你已经可以轻松方便使用selenium IDE进行录制运行脚本了.但是要运用到测试中去尚需要时间熟悉,如都有什么命令啊,如何进行定位啊,如何用assert来验证验证点啊,这也是selenium 测试主要学习的三点.如果这三占都搞明白了,熟悉了,恭喜你,你已经可以用selenium进行测试了.作为使用selenium IDE 工具并不复杂,而在于如何更熟悉它并用于测试中去.况且如前面提到只用Selenium IDE 进行测试局限性太高,所以建议借学习selenium IDE 了解并熟悉selenium工具,然后用其录制脚本并用 selenium 其它工具进行测试如selenium Core, selenium RC,selenium Grid.于本人使用经验而言,建议使用selenium RC.当然并不是说其它不好,其它有自己的优势或是功能也是RC不具备的.从学习与使用方面考虑是先学习 selenium IDE, 然后转向Selenium RC. 所以接下来将介绍Selenium RC. -
Selenium 学习一
2008-10-29 23:55:00
selenium 是openQA的一个用于Web应用程序测试的不错的开源工具。它是通过javascrīpt来驱动测试的,真实在浏览器中运行测试,更接近用户的实际操作。它定位方式很灵活,可以直接用标签ID,link等,当然最为灵活并可靠的就是通过xpath 来定位,能过xpath几乎没有不可定位的元素。此外它支持各类主流浏览器IE,firefox,safari,而且是同一个脚本就可搞定,这是它较为厉害的一点。当然它也有自己的缺点:不能处理非javascrīpt 类弹出窗口,跨网站处理不容易等。总的来说selenium 是一个非常不错的web应该程序测试工具。selenium本身亦有几个测试框架,selenium IDE, selenium RC, selenium Grid, selenium Core. 但总的来说脚本只有两种即是通过程式语言编写的脚本及HTML脚本。其中较为常用的是selenium RC 及selenium IDE. HTML 脚本编写较为简单易懂,但不够灵活,维护亦不那么容易,局限性较大,适合于非技术人员或是于编程不太熟悉者。而程式语言编写的脚本刚比较灵活强大,而且可以提供较多种类语言编写如java,c#,ruby等。所以建议有编程基础的同仁用selenium IDE 录制后保存为 程式语言脚本进行编辑维护。具体如何使用期selenium进行测试呢?下面将简单介绍selenium IDE 的使用并较为详细地与同仁们探讨selenium RC的使用。相关网站:http://selenium.openqa.org
标题搜索
我的存档
数据统计
- 访问量: 44559
- 日志数: 33
- 建立时间: 2007-05-03
- 更新时间: 2017-11-16