`

利用selenium + ant 实现自动化测试

阅读更多
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+junit+hudson自动化测试初探

    本文旨在探讨如何利用Selenium、JUnit和Hudson构建一个自动化测试框架。Selenium是一款强大的开源Web功能测试工具,支持多种编程语言,如Ruby、Python、Java、Perl和C#。它能直接在浏览器中运行测试,模拟真实用户的...

    selenium+testng页面测试

    【标题】"selenium+testng页面测试"涉及的核心知识点主要围绕自动化测试工具Selenium以及测试框架TestNG展开,同时也提到了报告生成和错误处理机制。以下是对这些知识点的详细阐述: 1. **Selenium**: Selenium 是...

    Selenium自动化测试培训

    Selenium自动化测试培训旨在提供全面的知识和技能,帮助学员掌握Selenium工具的使用,自动化测试脚本的设计,以及自动化测试框架的构建。 ### 自动化测试基础 在开始学习Selenium之前,理解自动化测试的基本原理至...

    ant + Selenium2 + testNG 整合的相关例子

    通过学习和理解这个例子,你可以掌握自动化测试的基本流程,了解如何利用Ant管理构建过程,如何使用Selenium进行Web应用的自动化测试,以及如何利用TestNG进行更高效、更全面的测试。这将对你的软件测试工作带来显著...

    python+selenium+autoit实现文件上传功能.pdf

    Selenium是一款强大的Web自动化测试工具,它能够模拟用户行为,例如点击、输入等,但对文件上传的处理相对较弱。而AutoIt则是一个专门用来自动化桌面应用程序操作的脚本语言,它可以帮助我们处理Selenium无法直接...

    WebDriver+TestNG+ANT_实现多浏览器兼容性测试

    在自动化测试中,ANT可以用来执行测试脚本、生成测试报告,甚至可以配置为在不同的环境之间部署应用。 结合这三个工具,我们可以创建一个自动化测试流程来执行多浏览器兼容性测试。首先,使用ANT编写构建文件,配置...

    selenium ant 最新版本

    总之,"selenium ant 最新版本"代表了将Selenium的自动化测试能力与Ant的构建管理功能相结合的最新实践,为Web应用的持续集成和测试提供了强大的支持。通过这种方式,开发者可以更高效地进行自动化测试,确保代码的...

    Jenkins+Ant+Tomcat持续集成自动化测试平台搭建

    这些插件可能包括源代码管理工具(如Git或SVN)、构建触发器、构建工具(如Maven或Ant)以及自动化测试框架(如JUnit或Selenium)。 接下来,配置Jenkins的工作流: - **创建新Job**:在Jenkins中创建新的构建Job...

    jenkins+jmeter+ant集成用到的插件

    这些工具的组合可以有效地实现自动化测试和监控,从而提升软件开发的效率和质量。以下将详细介绍这些工具以及它们集成时所需的一些关键插件。 首先,Jenkins是一款开源的持续集成服务器,用于自动化各种任务,包括...

    3年Java全栈自动化简历模板.docx

    2. **接口自动化测试项目**:在高质量文化内容社区项目中,工程师利用 jmeter 的参数化功能、Mysql 数据库进行接口断言,通过 Jenkins、Ant 和 Jmeter 实现持续集成,并使用 Tapd 进行用例和缺陷管理。 3. **综合性...

    基于ant脚本的代码质量评价的研究与应用.doc

    本文档主要探讨了如何利用Apache Ant(简称ANT)脚本进行代码质量评价,并将其应用于自动化测试工具的开发和集成。 一、自动化测试技术与ANT 自动化测试是一种提高测试效率、减少人为错误的策略,它涵盖了软件生命...

    Selenium使用说明.pdf

    Selenium 是一个强大的开源自动化测试框架,用于模拟真实用户在Web应用程序中的交互。它支持多种浏览器和编程语言,使得Web应用的功能测试变得简单而高效。本文主要围绕Selenium的使用展开,包括其版本介绍、安装...

    3SELENIUM框架进行复杂WEB应用的自动测试.pdf

    Selenium是一个广泛用于Web应用程序自动化测试的开源框架,它的核心功能是通过模拟用户交互来验证网页的功能。Selenium框架包括三个主要组件:Selenium-IDE、Selenium-RC和Selenium-Core。 Selenium-IDE是一个Fire...

    自动化_项目管理好文章

    自动化测试工具如Selenium和Junit,以及持续集成工具如Jenkins,都是这个领域的关键组件。 接下来,我们看到“java项目.doc”,这表明可能有针对Java编程语言的特定自动化项目管理内容。Java是一个广泛使用的后端...

    selenium-java-2.47.1.zip

    Selenium 是一个强大的开源自动化测试框架,主要用于网页应用的测试。这个压缩包 "selenium-java-2.47.1.zip" 包含了Selenium的Java版本,具体是2.47.1的更新,发布于2015年8月。这个版本在当时是一个稳定且广泛使用...

    让开发自动化:持续测试

    本文将介绍如何使用Ant进行JUnit测试,结合DbUnit执行组件测试,利用JUnitPerf分析性能瓶颈,以及运用Selenium进行Web功能测试,同时还将展示如何借助Cobertura计算代码覆盖率和CruiseControl实现持续集成。...

Global site tag (gtag.js) - Google Analytics