• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    自動進行團隊構建和單元測試過程

    發布: 2009-4-01 10:11 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 131次 | 進入軟件測試論壇討論

    領測軟件測試網

    Ant 在項目構建的方式方面有很高的靈活性,所以不可能確定地指出項目重新構建時會更新文件系統的哪個區域。在這里可以采用的唯一方法就是檢查每個文件的 build.xml 文件,找出它把構建的制品放在哪兒。然后才能把合適的<filesystem>元素添加到依賴這些制品的項目中。簡化的 meta-config.xml 文件支持一個<modificationset>元素,里面可以包含任何 CruiseControl 元素。它們會被拷貝到 config.xml 文件中。例如,依賴 XStream 的項目可能包含以下內容:

    <project name="my-project">[...]<modificationset> <filesystem folder="/home/cruise/src/xstream/xstream-SNAPSHOT.jar"/> </modificationset> </project>

    Maven 在每個項目上放了一個公共構建過程,所以在 Maven 項目間指定依賴性時,可以提供一些公共規則。項目可以對 Maven 倉庫中由指定群組創建的制品指定依賴。更準確地說,包含<repo-dependency>classworlds</repo-dependency>可以讓項目在 /home/cruise/.maven/repository/classworlds 下的文件發生變化時,重新進行構建。假設classworlds構建是在本地 Maven 倉庫中安裝了制作好的 JAR 文件,那么任何包含這個元素的項目都會自動重新構建。

    項目也可以指定對其他項目的構建輸出的依賴。包含<srcdir-dependency>classworlds</srcdir-dependency>可以讓項目在 ${srcdir}/target 下的文件發生變化時重新進行構建,其中 ${srcdir} 是命名項目的源目錄。

    向構建添加項目

    下面是向持續集成構建添加新項目的步驟:

    作為cruise用戶,把源代碼簽出到 /home/cruise/src 目錄。 檢查是否可以手工構建源樹。 向 meta-config.xml 添加適當的條目。 運行./mkconfig。 重啟 CruiseControl,以便它能從 config.xml 讀取新的項目條目?梢杂胮s命令找到運行 CruiseControl 的 JVM 的進程 ID,然后用kill命令殺死進程。也可以用root用戶身份運行svc -t /service/cruisecontrol,讓daemontools殺死進程。不管采用哪種方法,supervise都可以保證 CruiseControl 會被重啟。 可選地,更新 /home/cruise/force-build/${project-name} 的時間戳也可以讓 CruiseControl 觸發自動重新構建。



    CruiseControl Web 應用程序

    目前為止運行的 CruiseControl 安裝把每個構建的結果用電子郵件消息發送給開發人員。但是開發過程可能包含不是這些消息收件人的人員 —— 例如,項目管理人員或測試人員。CruiseControl 包含一個簡單的 Web 應用程序,可以讓這些人員監視持續集成構建。

    CruiseControl Web 應用程序在 Apache Tomcat 應用程序服務器中運行,使用的是包含在 Fedora Core 4 發行版中的拷貝。需要安裝tomcat5和tomcat5-admin-webapps包:

    [root@fcvm ~]#yum install tomcat5 tomcat5-admin-webapps[...]Installed: tomcat5.i386 0:5.0.30-5jpp_6fc tomcat5-admin-webapps.i386 0:5.0.30-5jpp_6fc Dependency Installed: tomcat5-jasper.i386 0:5.0.30-5jpp_6fc Complete! [root@fcvm ~]#

    還需要安裝 Java 事務 API(JTA)的一個實現?梢杂 JPackage 中(請參閱參考資料)的 RPM 規范文件構建自己的 JTA RPM,但是最簡單的選擇就是安裝來自 Fedora 倉庫的geronimo-specs和geronimo-specs-compat:

    [root@fcvm ~]#rpm -Uvh http://download.fedora.redhat.com/\ pub/fedora/linux/core/development/i386/Fedora/RPMS/\ geronimo-specs-1.0-0.M2.2jpp_4fc.i386.rpmPreparing... ################################### [100%] 1:geronimo-specs ################################### [100%] [root@fcvm ~]#rpm -Uvh http://download.fedora.redhat.com/\ pub/fedora/linux/core/development/i386/Fedora/RPMS/\ geronimo-specs-compat-1.0-0.M2.2jpp_4fc.i386.rpmPreparing... ################################### [100%] 1:geronimo-specs-compat ################################### [100%] [root@fcvm ~]#

    使用默認的 Tomcat 安裝,CruiseControl Web 應用程序會找不到合適的 JAXPTransformerFactory實現,所以需要向選定的類目錄添加默認 JAXP XML 轉換器:

    [root@fcvm ~]#cd /usr/share/tomcat5/common/endorsed[root@fcvm endorsed]#ln -s /usr/share/java/jaxp_transform_impl.jar \ \[jaxp_transform_impl\].jar[root@fcvm endorsed]#ls -ltotal 12 lrwxrwxrwx 1 root root 36 Sep 19 01:33 [jaxp_parser_impl].jar -> /usr /share/java/jaxp_parser_impl.jar lrwxrwxrwx 1 root root 39 Sep 19 01:47 [jaxp_transform_impl].jar -> / usr/share/java/jaxp_transform_impl.jar lrwxrwxrwx 1 root root 36 Sep 19 01:33 [xml-commons-apis].jar -> /usr /share/java/xml-commons-apis.jar [root@fcvm endorsed]#

    CruiseControl Web 應用程序可以繪制重要的構建統計圖,例如成功構建與失敗構建的比例。畫圖的庫要使用 Java AWT,所以需要確保 JVM 運行在headless模式。要做到這一點,請編輯 /etc/tomcat5/tomcat5.conf 文件,并插入下面這一行:JAVA_OPTS="-Djava.awt.headless=true",位置大約在第 10 行。

    現在,在 /etc/tomcat5/Catalina/localhost 下創建一個叫作 cruisecontrol.xml 的文件,把 CruiseControl Web 應用程序添加到 Tomcat 的配置。清單 5 顯示了這個文件的內容:


    清單 5. /etc/tomcat5/Catalina/localhost/cruisecontrol.xml 的內容
    <Context path="/cruisecontrol" docBase="/home/cruise/pkg/cruisecontrol-2.2.1/reporting/jsp/d ist/cruisecontrol.war"> <Parameter name="logDir" value="/home/cruise/log/build" override="false"/> <Parameter name="cacheRoot" value="/var/cache/tomcat5/cruisecontrol" override="false"/> </Context>

    請注意,清單 5 中的第二行出于顯示的原因進行了回繞。docBase屬性在創建的文件中應該單獨占一行。

    還需要為 CruiseControl Web 應用程序創建一個保存頁面緩存的目錄:

    [root@fcvm ~]#cd /var/cache/tomcat5[root@fcvm tomcat5]#mkdir cruisecontrol[root@fcvm tomcat5]#chgrp tomcat cruisecontrol[root@fcvm tomcat5]#chmod g+w cruisecontrol[root@fcvm tomcat5]#ls -ltotal 24 drwxrwxr-x 2 root tomcat 4096 Sep 16 09:32 cruisecontrol drwxrwxr-x 2 root tomcat 4096 May 10 11:57 temp drwxrwxr-x 3 root tomcat 4096 Sep 15 22:53 work [root@fcvm tomcat5]#

    現在可以啟動 Tomcat,并把它設置成在系統啟動時重啟。啟動腳本目前會生成一些警告信息,但是可以忽略它們:

    [root@fcvm ~]# service tomcat5 start Starting tomcat5: find: warning: you have specified the -mindepth opti on after a non-option argument -type, but options are not positional ( -mindepth affects tests specified before it as well as those specified after it). Please specify options before other arguments. find: warning: you have specified the -maxdepth option after a non-opt ion argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Pleas e specify options before other arguments. Using CATALINA_BASE: /usr/share/tomcat5 Using CATALINA_HOME: /usr/share/tomcat5 Using CATALINA_TMPDIR: /usr/share/tomcat5/temp Using JAVA_HOME: /usr/lib/jvm/java [ OK ] [root@fcvm ~]# chkconfig tomcat5 on [root@fcvm ~]# chkconfig --list tomcat5 tomcat5 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@fcvm ~]#

    現在應當能夠用瀏覽器在 http://localhost:8080/cruisecontrol/ 上訪問 CruiseControl Web 應用程序了。圖 1 顯示了將會看到的輸出的示例:


    圖 1. CruiseControl Web 應用程序



    安全問題

    在我總結之前,我要指出兩個配置和運行自己的持續集成服務器所涉及的安全性問題。首先,我沒有解決構建服務器的訪問安全問題。您應當參考其他信息來源以確保您的系統安全,或者在提供適當保護的內部網絡上運行它。

    其次,對于要在持續集成服務器上構建的外部項目的開發人員,您要考慮對他們要信任到什么程度。項目的構建過程和單元測試可以訪問服務器的資源,包括服務器連接的網絡。自動構建過程意味著提交給遠程版本控制倉庫的變更會在沒有人為干預的情況下,自動下載到構建服務器并在上面執行。這就把構建服務器置于提交給源樹的 bug 和惡意代碼的風險之下。您可能想限制在構建服務器上構建的外部項目,或者做些工作來保護系統和網絡不受正在構建的項目的影響。



    結束語

    這篇文章介紹了運行 CruiseControl 的持續集成服務器的設置步驟。您安裝了 CruiseControl 并學習了保持服務器一直運行需要做的工作,還了解了持續集成服務器的日常管理工作。而且還把配置的重要元素提取到更簡單的 XML 文檔中,包括版本控制和構建工具的選擇以及用來構建每個項目的目標。

    現在您學會了如何指定項目之間的依賴性。對于 Maven 項目來說指定比較容易,因為它們擁有一致的構建過程,生成的制品也有共享的倉庫。Ant 則把這些機制留給每個項目,但是如果許多 Ant 項目都有公共的構建過程,那么可以用生成的<filesystem>元素對配置進行擴展,模擬這些項目之間的依賴性。CruiseControl 還有其他許多控制,可以用來增強持續集成過程?梢酝ㄟ^我介紹的 XSLT 樣式表輕松地利用它們。

    我快速介紹了運行 CruiseControl Web 應用程序需要的步驟,但是您可以提高自己安裝的安全性和可靠性。更安全的配置可以使用 Apache 的httpd處理請求并把它們交給 Tomcat。讓daemontools管理 Tomcat JVM(就像配置它來管理 CruiseControl 本身那樣)可能更可靠。除此之外,還應當考慮構建服務器和構建服務器所在網絡的安全需求,并嘗試 Linux 提供的一些安全工具。

    這篇文章的目的是通過采取持續集成方式,讓開發過程更敏捷并提高軟件的質量。創建構建服務器是具體而實用的一步,采用敏捷開發方法的更多實踐還會得到進一步提高。我鼓勵您閱讀關于這些方法的更多內容(請參閱參考資料)并用它們的想法來提高和調整開發過程。




    下載

    描述名字大小  下載方法 Sample tools j-simple-cc.tar.gz 2 KB  FTP 關于下載方法的信息 獲取 Adobe® Reader®

    參考資料

    學習

    您可以參閱本文在 developerWorks 全球站點上的英文原文。

    Open Source Development with CVS, 3rd Edition和Version Control with Subversion:這些版本控制方面的書可以在線得到。

    Extreme Programming: A gentle introduction:閱讀軟件開發方面的極限編程方式。

    Integrate Often和Unit Tests:極限編程主張持續集成和單元測試。

    Demystifying Extreme Programming:Roy Miller 以前在 developerWorks 上的專欄有助于理解 XP 和它的重要性。

    “讓編譯和測試過程自動化”(Erik Hatcher,developerWorks,2001 年 8 月):了解如何用 Ant 和 JUnit 框架對構建和測試過程的自動化進行定制。

    “Matching project and process”(Gary Pollice,developerWorks,2004 年 5 月):閱讀經常被忽視的關于調整軟件開發過程以便對人員、工具以及項目類型進行匹配的必要性的討論。

    Working with the SeaMonkey Tree和tinderbox:Mozilla 項目記錄了自己的開發實踐。其中一個最重要的工具就是 tinderbox 系統,它在許多不同的平臺上持續地構建和測試源樹。

    The Pragmatic Programmers:敏捷軟件開發實踐方面的經典著作。

    Apache Tomcat:Fedora Core 4 捆綁了 Apache Tomcat 應用程序服務器。在這里可以找到完整文檔。

    XStream:這篇文章用 XStream 項目的源樹作為示例項目。

    Java 技術專區:數百篇關于 Java 編程各方面的文章。


    獲得產品和技術

    CruiseControl:在 CruiseControl 項目的 Web 站點找到它的下載和文檔。

    CVS和Subversion:把源代碼置于版本控制之下。

    JUnit:JUnit 是 Java 編程流行的單元測試框架。

    Maven:Apache Maven 項目提供的構建系統集成了許多最佳實踐,包括 JUnit。

    Fedora Core 4:這個 Linux 發行版是這篇文章描述的構建服務器的基礎。

    JPackage:JPackage 項目源自對 Java 項目進行 RPM 打包,Fedora 項目采用了這一技術。項目不能把 Sun JDK 作為 RPM 重新進行發布,但是您可能找到自行構建 RPM 的指南和 RPM 規范文件。

    Fedora Core development repository:在這里可以獲得更新的 Xerces 包。只需對 xerces-j2-2.6.2-4jpp_8fc 包做最小的更新;xerces-j2-2.6.2-5jpp_2fc 是從倉庫中可以得到的最新版本。

    XMLStarlet:這個命令行程序支持在 XML 文檔上執行有用的操作。

    daemontools:D. J. Bernstein 的 daemontools 可以讓 CruiseControl 一直運行。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>