51Testing软件测试论坛

标题: 就本人公司 每日构建的 实现 [打印本页]

作者: cd_sz2000    时间: 2007-2-7 16:08
标题: 就本人公司 每日构建的 实现
当了版主这么长时间,没有发帖子,实在不好意思,现在,我只是针对 本公司 java 项目的每日构建 介绍一下,希望对大家有一些帮助。同时也可以相互探讨:

我们公司的一个项目是java 开发的,web 应用 基于 tomcat 运行,后台数据库是 oracle。   代码版本控制是 cvs 。 代码服务器在美国。

作为 一家外包公司,每天我们程序员 在上班的第一天开始 从cvs 下载最新的代码,编译,如果有冲突,会解决冲突,没有的话,开始编码,作为我们公司的 测试人员,基于公司的模式,我们实现以下 构建。

编译
     ant 提供了强大的编译功能,我们在开始写 build.xml 的时候,并没有写 compile 这步,而是直接从cvs 里面下载相应模块的build。xml 后,调用。这样做的目的是为了保证测试 和 开发的 使用同一套 编译脚步编译,保证协调 ,一致性。
     这里,我们使用了 ant 的如下功能:
      <ant antfile="build.xml" dir="./${release.home}/cvs/DPS/PhaseII/AE/" target="all"/>

    编译好的代码,我们会 自己拷贝到对应的 目录。

单元测试
     junit ,对应的测试模块,我们的开发人员已经 提交到cvs ,我们从cvs update 后,编译运行。在运行之前,先在数据库里 初始化 相应的测试数据,在ant 中,我们使用下面的方法 插入数据到 数据库:
    <target name="dbinit_insert">
      <sql
               driver="oracle.jdbc.driver.OracleDriver"
               url="jdbc:oracle:thin:@192.168.100.1:1521:china"
               userid="uni_app2"
               password="ladodgers"
               onfiltered="continue"
               >
               <transaction  src="./sql/InsertTestOrderNoteData.sql"/>   <!-- For Test Case TestUserLiveValidation -->
               <transaction  src="./sql/TestUserLiveValidationBegin.sql"/>   <!-- For Test Case TestUserLiveValidation -->
               <transaction  src="./sql/InsertTestCreateInventoryData.sql"/> <!-- For Test Case TestCreateInventory -->
               <transaction  src="./sql/InsertTestPerformanceVenueData.sql"/> <!-- For Test Case TestPerformanceVenue -->
               <transaction  src="./sql/InsertTestPerformanceManifestData.sql"/> <!-- For Test Case TestPerformanceManifest -->
               <transaction  src="./sql/InsertTestPerformanceData.sql"/> <!-- For Test Case TestPerformance -->
               <transaction  src="./sql/InsertTestPerformancePriceCodeData.sql"/> <!-- For Test Case TestPerformancePriceCode -->
               <classpath>
   <path refid="lib.path"/>
        </classpath>
          </sql>
     </target>

    然后开始 运行单元测试。

    在单元测试结束后,把插入的册书数据 清空,目的是 下次 运行 的时候,可以再次初始化 数据库。
   
    <target name="dbinit_delete">
         <sql
               driver="oracle.jdbc.driver.OracleDriver"
               url="jdbc:oracle:thin:@192.168.100.1:1521:china"
               userid="uni_app2"
               password="ladodgers"
               onfiltered="continue"
               >
               <transaction  src="./sql/deleteTestOrderNoteData.sql"/>   <!-- For Test Case TestUserLiveValidation -->
               <transaction  src="./sql/TestUserLiveValidationEnd.sql"/> <!-- For Test Case TestUserLiveValidation -->
               <transaction  src="./sql/deleteTestCreateInventoryData.sql"/> <!-- For Test Case TestCreateInventory -->
               <transaction  src="./sql/deleteTestPerformanceVenueData.sql"/> <!-- For Test Case TestPerformanceVenue -->
               <transaction  src="./sql/deleteTestPerformanceManifestData.sql"/> <!-- For Test Case TestPerformanceManifest -->
               <transaction  src="./sql/deleteTestPerformanceData.sql"/> <!-- For Test Case TestPerformance -->
               <transaction  src="./sql/deleteTestPerformancePriceCodeData.sql"/> <!-- For Test Case TestPerformancePriceCode -->
               <classpath>
   <path refid="lib.path"/>
        </classpath>
          </sql>
     </target>

     


    在我们的 build.xml 中,以下列顺序执行 target:

   1。 cvs update code
   2.   call build.xml compile source code
   3.   call build.xml compile unit test source code
   4.   insert data to database .
   5.   run unit test
   6.   generate unit test report
   7.   run clover check unit test cover rate
   8.   generate unit test cover rate  report
   9.   delete test data from data base
   10.  Email all report to PM and Leader . deploy these report base on web service .
作者: wenl    时间: 2007-2-9 12:01
ding
LZ 强人
使劲ding
作者: 论坛守护神    时间: 2007-2-9 16:12
拜读一下,楼主辛苦了。我们公司也是做java的,美国外包。。。。。
作者: tracy-fmsi    时间: 2007-2-26 13:28
学习
作者: hadywei    时间: 2007-3-16 09:45
作了一年的黑盒,想研究下白盒是怎么回事
作者: dandan    时间: 2007-3-16 10:08
顶一下,呵呵,虽然还是看不太懂ORCAL代码........
作者: star-drift0312    时间: 2007-6-27 18:05
ding
作者: lawgend    时间: 2007-9-13 22:06
请问版主是使用什么工具进行单元测试覆盖度的计算的?

thanks :)
作者: zhyly101    时间: 2007-9-25 12:31
学习下。
作者: laipi    时间: 2008-2-25 11:46
谢谢
作者: holmesray    时间: 2008-6-7 21:47
定,好文!
作者: 千里    时间: 2010-7-9 09:20
弱弱问一下,楼主是版主吗?
作者: testbelle    时间: 2010-11-26 15:10
如果更新的代码非常多的话,怎么保证程序都更新了?构建的历史该怎么处理?
作者: coolwind09    时间: 2011-4-6 09:05
上面的干嘛呢?还打广告````有意思不?

单元测试正在学习之中!
作者: zivieira    时间: 2011-6-1 14:16
学习了!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2