測試驅(qū)動開發(fā)_第1頁
測試驅(qū)動開發(fā)_第2頁
測試驅(qū)動開發(fā)_第3頁
測試驅(qū)動開發(fā)_第4頁
測試驅(qū)動開發(fā)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、JAVA開放源碼項目與工具在企業(yè)應(yīng)用開發(fā)中的運用曲俊生內(nèi)容:資深顧問,Ion Global內(nèi)容:2003年5月13日企業(yè)應(yīng)用開發(fā)目前面臨的主要近兩年,開放源碼項目發(fā)展日益壯大,出現(xiàn)了很多有著廣闊用戶群體的項問題目與產(chǎn)品,它們在企業(yè)應(yīng)用開發(fā)中正在發(fā)揮著越來越大的作用。本文以基于J2EE架構(gòu)的企業(yè)應(yīng)用開發(fā)為例,探討了如何在項目中深入運用JAVA開放源碼項目現(xiàn)狀 開發(fā)源碼項目與工具。企業(yè)應(yīng)用開發(fā)目前面臨的主要問題JAVA企業(yè)應(yīng)用開發(fā)目前面臨的主要問題JAVA開發(fā)源碼項目與丁具的 應(yīng)用企業(yè)應(yīng)用是指服務(wù)于商業(yè)目的,處理企業(yè)業(yè)務(wù)信息、數(shù)據(jù)的軟件系統(tǒng)。雖然隨著dot結(jié)論COM熱潮逐漸冷卻,企業(yè)開始謹(jǐn)慎考慮自

2、己在應(yīng)用系統(tǒng)開發(fā)方面的投入,但是畢竟企業(yè)的業(yè)務(wù)流程需要專門的信息系統(tǒng)處理,從而提高自動化程度、減少中間環(huán)節(jié)、參考資料加快信息處理速度。因此,目前國內(nèi)的企業(yè)應(yīng)用項目開發(fā)還是日益火爆,尤其在電關(guān)于作者子政務(wù)、CRM、SCM等領(lǐng)域更是如此。關(guān)于作者但是,不論企業(yè)應(yīng)用開發(fā)是采用自行開發(fā)或者委托系統(tǒng)集成商進行開發(fā),都存在著對本文的評價 下面一些情況:大部分項目超時或者超出預(yù)算;項目在部署以后BUG很多,而且修改的周期比較長;訂develdeveloperWorks 時事通訊3.4.沒有統(tǒng)一的FRAMEWORK,每個項目都會重新設(shè)計ARCHITECTURE;3.4.項目開發(fā)過程的自動化程度和重復(fù)步驟不是很

3、多,人為引入的BUG很多;開放源碼項目現(xiàn)狀開放源碼運動在90年代開始日益發(fā)展,目前已經(jīng)成為軟件業(yè)內(nèi)不可低估的一股勢力,比較著名的有Linux,、Apache、Tomcat、MySQL等。目前,開放源碼的潮流已經(jīng)超出了操作系統(tǒng)、數(shù)據(jù)庫管 理系統(tǒng)和WEB服務(wù)器等系統(tǒng)開發(fā)領(lǐng)域,開發(fā)在企業(yè)應(yīng)用開發(fā)中尋找新的領(lǐng)地。尤其是對于企業(yè)應(yīng)用開發(fā)的框架和 CASE工具,開放源碼項目都有很優(yōu)秀的解決方案。國外開放源碼項目的集中地有www apache org以及wwwsourceforgenet,其中,前者為大家奉獻了著名的Apache、Tomcat、Struts、Axis;而后者是最著名的開源項目中心。同時,國內(nèi)

4、自90年代末開始也有很多人投入 到開源項目的開發(fā),比較集中的網(wǎng)址是共創(chuàng)軟件聯(lián)盟()等等,他們除了提供各種CASE工具 以外,還有一些項目是專注于特定領(lǐng)域的解決方案開發(fā),如CRM等。JAVA開發(fā)源碼項目與工具的應(yīng)用對于目前企業(yè)應(yīng)用開發(fā)競爭日益激烈,需求變更頻繁,各個系統(tǒng)集成商都面臨巨大的生存壓力。其中有兩個方面表 現(xiàn)尤其突出:沒有統(tǒng)一的軟件開發(fā)過程或者照搬重量級的軟件開發(fā)過程,例如RUP等,但是往往由于時間等壓力的影 響,并不能切實執(zhí)行;大部分企業(yè)仍然沒有擺脫手工作坊期間的做法,每個項目或者產(chǎn)品由于管理人員或者團隊的不同,重新設(shè) 計系統(tǒng)框架,浪費大量的時間在結(jié)構(gòu)驗證與調(diào)整上;企業(yè)應(yīng)用系統(tǒng)的開發(fā)中

5、,需求的變更是項目中唯一不變的東西,而且,為了保持開發(fā)的一致性和利益最大化,系統(tǒng) 集成商需要與客戶保持長期的合作。因此,采取演進式敏捷軟件開發(fā),可以更好的保證項目質(zhì)量。在所有的敏捷軟 件開發(fā)方法中,XP是目前應(yīng)用最為廣泛的一種。它是一種高度動態(tài)的過程,它通過非常短的迭代周期來應(yīng)對需求 的變化;溝通、簡單、反饋和勇氣是它的四大核心價值。同時,它集中了業(yè)界的很多最佳實踐,目前已經(jīng)有18條 之多,XP強調(diào)通過嚴(yán)格執(zhí)行全部的最佳實踐來獲得極限效果。同時,出于復(fù)用和效率的考慮,尤其是對于系統(tǒng)集成商,企業(yè)應(yīng)用系統(tǒng)應(yīng)該具有自己的框架和結(jié)構(gòu)。擁有具有良好 性能、經(jīng)過項目驗證的系統(tǒng)框架,結(jié)合有效的軟件開發(fā)過程,

6、系統(tǒng)集成商可以快速、成功地開發(fā)企業(yè)應(yīng)用系統(tǒng)。為了更好的開發(fā)成功的系統(tǒng),系統(tǒng)集成商們可以試著從以下兩個方面著手解決問題:結(jié)合開源工具的支持,在組織內(nèi)部實施敏捷軟件開發(fā)方法;為核心業(yè)務(wù)領(lǐng)域建立靈活、有效的Framework;由于目前很多企業(yè)應(yīng)用是采用基于J2EE技術(shù)的網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此,下面主要介紹基于JAVA的開源項目、 工具的應(yīng)用。1.開源工具與XPXP的12條最佳實踐,對于所有的企業(yè)應(yīng)用開發(fā)商而言,由于組織和文化的不同,不可能全部應(yīng)用,但是,下面幾 個實踐是有條件逐步實施的:代碼規(guī)范:CODE STANDARD測試驅(qū)動開發(fā):TEST-DRIVEN DEVELOPMENT日構(gòu)建:DAILY

7、 BUILDING持續(xù)集成:CONTINUOUS INTEGRATION小步發(fā)布:SMALL RELEASE每日晨會:DAILY MEETING每周40小時工作:40-HOURS A WEEK其中,CODE STANDARD 和 TDD 是 CONTINUOUS INTEGRATION、DAILY BUILDING 和 SMALL RELEASE 的 基礎(chǔ);而DAILY MEETING和40-HOURS A WORK是單獨的實踐過程,可以與其他的實踐想結(jié)合,增強項目小組的溝通,激發(fā)士氣。需要說明的是以上最佳實踐并非XP所獨有,而是被最多的軟件開發(fā)方法所應(yīng)用,其中日構(gòu)建就在微軟的軟件開發(fā) 方法中

8、正式出現(xiàn)過。代碼規(guī)范雖然大部分的企業(yè)在一定程度上推行代碼標(biāo)準(zhǔn)與規(guī)范,而且對于使用JAVA的應(yīng)用程序開發(fā),也有SUN 的推薦編碼規(guī)范,但是,實際的情況并不理想。主要的原因在于:一方面,開發(fā)人員的習(xí)慣勢力很大;另一方面,代碼審查的力度不夠。如果能夠借助工 具,從一定程度上幫助進行代碼標(biāo)準(zhǔn)的執(zhí)行情況檢查,那么代碼審查就可以著重檢查程序的邏輯和性能等 方面。開源產(chǎn)品CheckStyle ( HYPERLINK /projects/checkstyle)%e5%8f%af%e4%bb%a5%e5%b8%ae%e5%8a%a9%e5%bc%80%e5%8f%91%e7%bb%84%e7%bb%87%e8%

9、a7%a3%e5%86%b3%e4%bb%a3%e7%a0%81%e6%a0%87%e5%87%86%e5%ae%a1%e6%9f%a5%e7%9a%84 /projects/checkstyle)可以幫助開發(fā)組織解決代碼標(biāo)準(zhǔn)審查的 問題。目前的最新版本為3.0,它提供了兩種運行方式:一種是命令行;一種是與Ant結(jié)合(Ant自1.5以后提供 的OPTIONAL TASKS中有對于CheckStyle的支持)。同時,SourceForge中有對于JBuilder等流行IDE 的插件支持,可以定義Global、Project級別上的屬性文件,但是,目前只是支持2.42版本。在3.x版本之前,Che

10、ckStyle的配置信息寫在Property File中;而在3.x之后,配置信息為XML文件, 配置更加靈活。3.0的發(fā)布版本中提供了針對Sun Code Conventions的特定Check File,可以參考使用。建議執(zhí)行情況:o 手動執(zhí)行:開發(fā)人員在IDE中手動觸發(fā)CheckStyle檢查或者代碼審查時由審查者手動執(zhí)行;o自動執(zhí)行:將CheckStyle與源碼控制系統(tǒng)(CVS)結(jié)合,在源碼Checkin的時候進行規(guī)則判斷,如果不符合,則不允許代碼進入系統(tǒng)。測試驅(qū)動開發(fā)測試先行或者測試驅(qū)動是XP的基本實踐之一,同時測試在軟件開發(fā)中的重要作用正越來越得到人們的重 視。審查和測試作為系統(tǒng)確

11、認(rèn)和驗證的有效方式,是項目質(zhì)量保證的重要措施。下面按照一般的測試分類,介紹各個領(lǐng)域內(nèi)的開源測試工具:o 單元測試:JUnit ( HYPERLINK )JUnit 是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework),用于Java開發(fā)人員編寫單元測試之用。下面介紹的開源測試工具,很多都是對于 JUnit的擴展。它目前的版本為3.7,為編寫單元測試提供了主要的接口。目前主流的IDE都提供了對于JUnit 的支持。XP強調(diào)測試先行,尤其重視單元測試。系統(tǒng)集成商需要通過軟件開發(fā)過程的執(zhí)行,來強化JUnit的使用。目前

12、很多商業(yè)測試軟件都提供了與JUnit的聯(lián)合使用,例如獲得1999和2000年Jolt測試類工具 亞軍和生產(chǎn)率大獎的Jtest (ParaSoft公司產(chǎn)品,內(nèi)置200余條編碼規(guī)范,提供Java代碼靜態(tài)和 動態(tài)檢查,同時還可以自動生成簡單的測試用例等等)就可以導(dǎo)入和導(dǎo)出JUnit的測試用例。o 集成與功能測試: HttpUnit ( HYPERLINK ) & Cactus ( HYPERLINK /cactus/ /cactus/)HttpUnit是一套通過HTTP連接測試Web應(yīng)用程序的Java類。在結(jié)合JUnit的情況下,HttpUnit 可以作為一種創(chuàng)建測試程序的強大工具用來保證Web應(yīng)用

13、程序正常的端對端功能。雖然JUnit自身就可以通過編寫單一類的測試程序?qū)Ψ?wù)器端Java代碼進行測試,不過,有了 HttpUnit的幫助,JUnit就可以擴展為模擬Web瀏覽器-Web服務(wù)器的工作方式對整個Web程序 結(jié)構(gòu)進行測試。Cactus為我們提供了一種測試SERVLET等WEB組件的有效手段。它是JUnit的一個擴展,但 是它又和JUnit有一些不同。Cactus的測試分為三種不同的測試類別,JspTestCase, ServletTestCase,F(xiàn)ilterTestCase,而不是像 JUnit 就一種 TestCase。Cactus 的測試代碼有服 務(wù)器端和客戶端兩個部分,他們協(xié)

14、同工作。一般意義上,可以采用Cactus作集成測試;而使用HttpUnit做功能測試。雖然在集成與功能測試方面,有很多優(yōu)秀的開源工具,但是在實際應(yīng)用過程中,還是采用商業(yè)測 試軟件的比較多,對于復(fù)雜應(yīng)用更是如此。這是因為集成與功能測試大部分還是由專門的測試人 員進行,而他們對于已有的商業(yè)軟件,例如Rational Robot、E-Test Suite、WinRunner等都比 較熟悉,同時商業(yè)軟件也提供了更為強大的功能。o 壓力與性能測試: JMeter ( HYPERLINK /jmeter/ /jmeter/)由于企業(yè)應(yīng)用越來越復(fù)雜,用戶數(shù)量也是越來越多,系統(tǒng)的性能參數(shù)以及眾多的非功能性需求

15、在 開發(fā)中獲得了越來越多的重視。因此,很多壓力與性能測試工具也開始出現(xiàn),這其中有一定影響 的是 Apache Software Foundation 的 JMeter。JMeter是100%的JAVA桌面應(yīng)用,用來測試系統(tǒng)的負(fù)載與性能。它最開始設(shè)計是用來測試WEB 應(yīng)用,后來加以擴展,可以測試Http,F(xiàn)TP,支持JDBC的關(guān)系型數(shù)據(jù)庫的性能與壓力。同時, JMeter提供一定的定制功能,系統(tǒng)集成商可以自行開發(fā)針對EJB、CORBA或者SOAP的插件。壓力與性能測試方面,由于測試比較復(fù)雜,實際企業(yè)應(yīng)用測試中,也是采用商業(yè)測試軟件比較多, 例如 LoadRunner、JProbe Suite 以

16、及與 JBuilder8 同步發(fā)布的 OptimizerIT;3.日構(gòu)建在軟件開發(fā)的領(lǐng)域里有各種各樣的最佳實踐,它們經(jīng)常被人們談起,但是似乎很少有真正得到實現(xiàn)的。 這些實踐最基本、最有價值的就是:都有一個完全自動化的創(chuàng)建、測試過程,讓開發(fā)團隊可以每天多次創(chuàng) 建他們的軟件。日創(chuàng)建也是人們經(jīng)常討論的一個觀點,McConnell在他的快速軟件開發(fā)中將日創(chuàng)建作為一個最佳實 踐來推薦,同時日創(chuàng)建也是微軟很出名的一項開發(fā)方法。但是,我們更支持XP社群的觀點:日創(chuàng)建只是 最低要求。一個完全自動化的過程讓你可以每天完成多次創(chuàng)建,這是可以做到的,也是完全值得的。Ant是Apache Jakarta的一個項目,是

17、不帶make缺點的make。Ant正在成為開放源代碼世界中實際 上的標(biāo)準(zhǔn)。原因很簡單:Ant是使用Java語言編寫的,這種語言可以讓創(chuàng)建過程在多種平臺上使用。Ant目前的版本為1.5,它的執(zhí)行是基于一個XML文件,配置文件由目標(biāo)樹構(gòu)成。每個目標(biāo)都包含了要執(zhí) 行的任務(wù),其中任務(wù)就是可以執(zhí)行的代碼。在下面給出的例子中,mkdir是目標(biāo)compile的任務(wù)。mkdir是 建立在Ant中的一個任務(wù),用于創(chuàng)建目錄。Ant帶有一套健全的內(nèi)置任務(wù),也可以通過擴展Ant任務(wù)類 來添加自己的功能。Ant 內(nèi)置了對于 JUnit、CVS、ClearCase、Visual SourceSafe 以及 CheckSt

18、yle 的支持,通過于系統(tǒng)定時 功能,例如Windows的任務(wù)計劃”或者Linux/Unix的cron”,可以很方便的利用Ant來自動完成每日構(gòu)建 的工作。4.持續(xù)集成4.持續(xù)集成是XP的重要實踐之一,Martin Fowler在參考文獻6中有詳細(xì)的介紹,上述實踐都是它的基礎(chǔ)。開源項目中有一個著名的工具是用來幫助實現(xiàn)持續(xù)集成的:CruiseControl,其次,目前還有一款商業(yè)軟件 AntHill也為持續(xù)集成提供了很好的支持。o CruiseControl ( HYPERLINK / /)CruiseControl是著名的ThoughtWorks公司的產(chǎn)品,目前它的源碼已經(jīng)公開,它是一個持續(xù)集

19、成 的框架。它包含,但是并不局限于Email通知、Ant以及其他源碼控制工具。同時,它還提供了 WEB界面來查看當(dāng)前和已往Build的詳細(xì)信息。o AntHill ( HYPERLINK /projects/anthill/ /projects/anthill/)AntHill可以確保Build過程受控,同時,幫助組織內(nèi)部的知識共享。它在每次Build之前從源碼 控制系統(tǒng)(CVS、VisualSourceSafe、ClearCase等)中獲取最新的源碼,同時在Build完成之 后為源碼分配一個唯一的數(shù)字進行標(biāo)定。同時,它還會在根據(jù)Build的情況,更新Intranet的信 息。5.小步發(fā)布有了

20、以上實踐的支持,小步發(fā)布就有了實現(xiàn)的可能。XP強調(diào)在非常短的周期內(nèi)以遞增的方式發(fā)布新版本, 從而可以很容易地估計每個迭代周期的進度,便于控制工作量和風(fēng)險;同時,也可以及時處理用戶的反饋。為了成功的進行應(yīng)用系統(tǒng)的版本發(fā)布,需要SCM,尤其是源碼控制程序的配合。在開源項目中,CVS (Concurrent Version System)是最著名的版本控制程序。目前CVS的版本為1.5.11,它是一個將一組文件放在層次目錄樹中以保持同步的系統(tǒng)。人們可以從CVS 服務(wù)器上更新他們的本地層次樹副本,并將修改的結(jié)果或新文件發(fā)回;或者刪除舊文件。CVS基于客戶端 /服務(wù)器的行為使得其可容納多用戶,構(gòu)成網(wǎng)絡(luò)也

21、很方便。這一特性使得CVS成為位于不同地點的人同時 處理數(shù)據(jù)文件(特別是程序的源代碼)時的首選。所有重要的免費軟件項目都使用CVS作為其程序員之間 的中心點,以便能夠綜合各程序員的改進和更改?;诙鄠€操作系統(tǒng)的CVS的客戶端軟件也很多,其中以WinCVS最為著名。2.開源項目與Framework:目前,對于基于J2EE的應(yīng)用程序開發(fā),有很多開源的Framework,例如Struts ( HYPERLINK /struts/ /struts/) WebWork等,都提供了利用J2EE技術(shù)的優(yōu)秀解決方案。其中,Struts是目前應(yīng)用最為廣泛和獲得關(guān)注最多的框架 之一。Struts目前的版本為1.1

22、,它是基于Model2的MVC實現(xiàn)框架。Struts的核心是基于Servlet、JavaBean、 ResourceBundles和XML技術(shù)的控制層。還有很多開源項目為Struts提供支持,例如:配置文件 GUI: Struts Console;Code Generator: Easy Struts;Unit-Test: StrutsTestCase獲得2002年JAVA IDE大獎的JBuilder 8更是內(nèi)置了對于Struts的支持,這也從另外一個側(cè)面體現(xiàn)了 Struts的重 要意義。同時,需要注意的是,Struts本身并沒有提供Persistence層的標(biāo)準(zhǔn)實現(xiàn),但是,目前這個方面的解決方案比較多, 系統(tǒng)集成開發(fā)商可以根據(jù)具體情況加以選擇。如果可以在Struts等Framework的基礎(chǔ)上,結(jié)合不同業(yè)務(wù)系統(tǒng)的專業(yè)知識,開發(fā)獨立的系統(tǒng)平臺,系統(tǒng)集成商的 項

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論