




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
佳都新太提高代碼質量Java篇目錄(一)除了編碼,開發還可以做什么
編碼規范單元測試
代碼評審靜態檢查
持續集成目錄(二)補充
動態檢查缺陷管理
性能測試
WEB前端分析
自動化測試除了編碼,開發還可以做什么
現狀
項目開發過程中,由于開發人員的經驗、代碼風格各不相同,以及缺乏統一的標準和管理流程,往往導致整個項目的代碼質量較差,難于維護,需要較大的測試投入和周期等問題。
措施可以采用以下五個步驟來保證和提高整個項目的代碼質量:統一編碼規范、代碼樣式;靜態代碼分析(staticcodereview);單元測試;持續集成;代碼評審和重構(Review&Refactor)。下面將針對每個步驟和其所使用的工具、方法進行詳細描述。代碼質量保證步驟ContentTitle編碼規范規范統一的編碼能提高項目代碼的可讀性和可維護性,編碼規范主要應包含以下幾個方面:一般規則和格式規范。例如代碼縮進、程序塊規范、每行最大代碼長度等。命名規則。例如包名、類名、變量、方法、接口、參數等命名規范文檔規范。例如類文件頭聲明、類注釋、成員變量和方法注釋等規范。編程規范。例如異常、并發、多線程等方面的處理方式。其他規范。例如日志格式、屬性文件格式,返回值和消息格式。用eclipse控制代碼樣式(一)一旦編碼規范確定,就可以利用Eclipse來控制代碼樣式和格式。點擊Eclipse的Windows->Preference菜單項,在打開的Preferences對話框的左側欄中找到Java節點下的子項CodeStyle,該項和它的子項允許您對Java代碼的樣式進行控制:用eclipse控制代碼樣式(二)可以在Eclipse提供的默認代碼格式配置的基礎上建立自定義的格式。在Formatter面板中,點擊New,輸入新的名字并選擇一個默認的配置作為初始化格式,如圖所示:用eclipse控制代碼樣式(三)設置風格如圖所示:代碼靜態檢查_CheckStyleCheckStyle用來檢查代碼格式、規范、風格。檢查并強制執行統一的代碼風格;檢查Javadoc;檢查類、變量、方法的命名;檢查類和方法的大小;檢查編碼錯誤,例如magicnumber;……代碼常見問題舉例:代碼中的magic-number和magic-string:
Strings=“0000”+Integer.toString(ch,16);0000、16的含義,作者幾周后就忘記了。CheckStyle的安裝配置(一)CheckStyle插件地址。
自動安裝地址:/update
下載地址:/projects/eclipse-cs/develop安裝后出現:CheckStyle的安裝配置(二)
配置項說明:
CheckStyle的安裝配置(三)CheckStyle檢查結果:
其它工具
用于javascript靜態檢查的工具:Jslint-TheJavaScriptCodeQualityTool
代碼靜態檢查_FindBugsFindBugs是一個java代碼的靜態代碼分析工具,用來發現那些潛在的、常見的、很難被發現的bug。與其他靜態分析工具不同,FindBugs不注重樣式或者格式,它試圖只尋找真正的缺陷或者潛在的性能問題。如NullPoint空指針檢查、沒有合理管理資源等。Findbugs插件地址。
自動安裝地址:/eclipse
下載地址:/downloads.html?0?2Findbugs的使用
配置選項:
Findbugs的使用運行,右鍵項目執行“FindBugs”操作:
檢查結果:
單元測試單元測試
單元測試是最小粒度的測試,以測試某個功能或代碼塊,一般由程序員來做。用例設計和評審
設計階段需要具體考慮要對哪些代碼單元進行測試,被測單元之間的關系,測試策略,以及單元測試用例設計等,并最終輸出《單元測試用例設計》文檔,用來指導具體的單元測試執行。在用例設計完成之后,下一步的工作就是進行測試用例的評審。個人的理解和經驗始終是有限的,用例評審可以借集體之力,對用例設計進入查漏補缺,進一步保證測試用例的有效性。
單元測試_JUnitJUnit
JUnit是一個開發源代碼的Java測試框架,用于編寫和運行可重復的測試。它是用于單元測試框架體系xUnit的一個實例(用于java語言)。主要用于白盒測試,回歸測試。下載地址
eclipse自帶了JUnit,完整安裝包的下載地址:/projects/junit/files/junit/4.0/
Junit核心結構Junit
JUnit測試開發(一)下面舉例描述怎樣對一個類編寫單元測試代碼,待測試的類:
JUnit測試開發(二)JUnit3.8測試類:
JUnit測試開發(三)JUnit4.0測試類:
JUnit測試開發(四)setUp和tearDown方法:
Junit斷言(一)斷言Assert方法:
Junit斷言(二)斷言Assert方法:
在Eclipse上執行Junit(一)
下面說明怎樣在eclipse上執行Junit單元測試添加一個需要測試的類Hello:
在Eclipse上執行Junit(二)選中需要測試的類,右鍵點擊,選擇New->JUnitTestCase,如圖:在Eclipse上執行Junit(三)新建測試類:
在Eclipse上執行Junit(四)下一步選擇要測試的方法:
在Eclipse上執行Junit(五)完成HelloTest的Abs方法:
在Eclipse上執行Junit(六)執行測試程序,右鍵,RunAs->JUnitTest,就可以看到JUnit測試結果:
綠色表示測試通過,只要有1個測試未通過,就會顯示紅色并列出未通過測試的方法。單元測試_EasyMock模擬對象技術
在實際項目中,開發人員自己的代碼往往需要和其他的代碼模塊或系統進行交互,但在測試的過程中,這些需要被調用的真實對象常常很難被實例化,利用一個模擬對象來模擬我們的代碼所依賴的真實對象,來幫助完成測試,提高測試覆蓋率。常見的模擬技術模擬技術有很多種,如jMock,EasyMock,Mockito,PowerMock等等,下面用EasyMock舉例說明如何模擬對象。EasyMock(一)EasyMock(二)//校驗用戶名和密碼if("admin".equals(username)&&"123456".equals(password)){ServletContextcontext=getServletContext();RequestDispatcherdispatcher=context.getNamedDispatcher("dispatcher");dispatcher.forward(request,response);}else{thrownewRuntimeException("Loginfailed.");}}
}EasyMock(三)為測試doPost()方法,需要模擬HttpServletRequest等對象,以便脫離J2EE容器來測試這個Servlet。建立TestCase,名為LoginServletTest:
publicclassLoginServletTestextendsTestCase{}測試當用戶名和口令驗證失敗的情形:publicvoidtestLoginFailed()throwsException{//創建mock對象MockControlmc=MockControl.createControl(HttpServletRequest.class);HttpServletRequestrequest=(HttpServletRequest)mc.getMock();EasyMock(四)//設置mock參數
request.getParameter("username");//期望下面的測試將調用此
方法,參數為"username"mc.setReturnValue("admin",1);//期望返回值為"admin",僅調用1次request.getParameter("password");//期望下面的測試將調用此方
法,參數為"password"mc.setReturnValue("1234",1);//期望返回值為"1234",僅調用1
次//表示錄制完畢mc.replay();EasyMock(五)try{servlet.doPost(request,null);fail("Notcaughtexception!");}catch(RuntimeExceptionre){assertEquals("Loginfailed.",re.getMessage());}//verify:mc.verify();}運行JUnit,測試通過!表示我們的Mock對象正確工作了!單元測試_測試覆蓋率分析為了衡量單元測試的質量和覆蓋的范圍,需要對單元測試的代碼進行測試覆蓋分析。具體采用哪些指標可以根據項目的實際情況來定,以避免因過高的指標增加了代碼開發人員的工作量而影響了項目整體的進度。。
業內比較常用的工具有:
1、Cobertura,對應的eclipse插件:eCobertura。2、EclEmma是一款基于EMMA的Eclipse插件,方
便在EclipseIDE中進行測試覆蓋率分析。
插件下載地址:/
Eclipse測試覆蓋率分析(一)下面說怎樣在eclipse上執行測試覆蓋率分析:
先安裝插件EclEmma,然后在測試用例寫好后,可以在右鍵點擊測試類,選擇CoverageAs->JUnitTest.Eclipse測試覆蓋率分析(二)單元測試執行完后,Coverage視圖中會顯示所選擇的測試的覆蓋率。雙擊打開某一具體的類后,可以看到高亮顯示的覆蓋分析結果,如圖所示。紅色代表測試沒有覆蓋到該行,黃色表示部分覆蓋,綠色的行表示該行在本次測試中被覆蓋到。Eclipse測試覆蓋率分析(三)在Coverage視圖中可以通過點擊鼠標右鍵將測試覆蓋分析的結果導出成需要的格式,例如HTML。持續集成持續集成(ContinuousIntegration)是利用一系列的工具、方法和規則,做到快速的構建開發代碼,自動的測試化,來提高開發代碼的效率和質量。持續集成的提出
如果項目開發的規模比較小,比如一個人的項目,如果它對外部
系統的依賴很小,那么軟件集成不是問題,但是隨著軟件項目復雜度的增加(即使增加一個人),就會對集成和確保軟件組件能夠在一起工作提出了更多的要求-要早集成,常集成。早集成,頻繁的集成
幫助項目在早期發現項目風險和質量問題,如果到后期才發現這些問題,解決問題代價很大,很有可能導致項目延期或者項目失敗。持續集成
持續集成的常見做法是:持續集成框架+版本管理器+構建工具。
1、持續集成框架常用的有:Hudson(jenkins)、Continuum、CruiseControl等。2、版本管理器常用的有:ClearCase、Wincvs、SVN等。3、構建工具常用的有:Ant、Maven。
后面主要以SVN+Hudson+Ant實現方式舉例說明。
持續集成_版本管理器持續集成_自動構建
Ant在構建過程方面十分優秀,它是一個基于任務和依賴的構建工具。下載地址:
/bindownload.cgiMaven不單是構建工具,也是個項目管理平臺。下載地址:
/download.html
Maven與Ant對比,一些使用上的區別:1、Maven是基于中央倉庫的編譯,即把編譯所需要的資源放在一個中央倉庫里,如jar,tld等。當編譯的時候,maven會自動在倉庫中找到相應的包,而ant需要自己定義了。用maven編譯的項目在發布的時候只需要發布源碼,小得很,而反之,ant的發布則要把所有的包一起發布。2、Maven有大量的重用腳本可以利用,如生成網站,生成javadoc,sourcecodereference,等。而ant都需要自己去寫。3、Maven目前不足的地方就是沒有象ant那樣成熟的GUI界面。
持續集成_持續集成框架有了自動構建后,我們就可以通過Hudson每天定時用Ant腳本或Maven,加上JUnit、Cobertura/EMMA等的ANT腳本調用,每一次的構建都可以把這些檢查工作自動的進行一遍測試。然后生成測試報告進行查閱。Hudson(Jenkins的前身)可以說在安裝和配置上最簡單的CI產品。Hudson是基于java開發的,但它不僅限于構建基于Java的軟件,還能構建.net、Python、Ruby等。Hudson提供了一組很明確和可擴展API的Hudson組件。這批組成一個大的類庫的Hudson組件反過來又豐富了Hudson的功能;它們都是開源的,而且它們可以直接通過Hudson的控制臺來進行安裝。安裝軟件下載地址:/
Hudson安裝要點將jenkins.war拷貝到tomcat的webapps目錄下;修改Tomcat-7.0.8\conf\server.xml文件,設置UTF-8編碼:通過以下方式修改HUDSON_HOME的位置:在hudson的web.xml中找到HUDSON_HOME,默認value為空值,將其設置為你希望的路徑,然后重啟。
Hudson首頁Hudson管理界面Hudson插件安裝(一)Hudson插件安裝(二)Hudson
Job(一)Hudson
Job(二)Hudson
Job(三)Hudson
Job(四)Hudson質量度量(一)Hudson質量度量(二)openEAP應用的實踐(一)以下演示在實際的openEAP項目中,怎樣自動化完成以上活動。演示的是一個web項目,目錄結構如下圖所示:
openEAP應用的實踐(二)因為相關依賴資源都已經在quality目錄下了(運行只依賴數據庫環境,沒有對數據庫操作進行模擬),所以可以直接通過ant執行quality目錄下的build.xml,腳本執行完畢后,生成的報告在quality目錄下,如下圖所示:
openEAP應用的實踐(三)也可以發布到Hudson上執行構建:
openEAP應用的實踐(四)在Hudson上查看報告:
代碼評審代碼評審(CodeReview)是Java項目開發過程中的一個重要步驟,代碼評審可以幫助發現靜態代碼分析過程中無法發現的一些問題,例如代碼在邏輯上或者功能上是否存在錯誤,代碼在執行效率和性能上是否有需要改進的地方等。代碼評審還可以幫助新進入項目組的成員快速學習和了解項目,促進經驗分享。代碼評審主要包括兩種形式,同級評審(PeerReview)和小組評審(GroupReview)。同級評審主要指項目成員間的互相評審,小組評審是指通過召開評審會議,項目成員一起對項目代碼進行評審。為了提高代碼評審的有效性和效率,可以借助一些外部工具,比較常用的代碼評審工具有Jupiter和CodeStriker。Jupiter是一款開源的Eclipse插件,允許成員將評審意見定位到真實代碼的具體行,由于代碼評審的結果以XML文件的形式保存。Jupiter使用Eclipse插件下載地址:
/p/jupiter-eclipse-plugin/Jupiter里,代碼評審(codereview)分為4個流程:1.Configuration(配置):review發起者設置“ReviewID”,指定要
評審的代碼,參與代碼評審的人員,要討論的問題等等。2.Individualreview(個人評審):每個人獨自審查代碼,把可能出現
問題的代碼加入checklist。
3.Teamreview(團隊評審):大家在一起討論之前檢查出的問題代
碼,并決定如何處理。4.Rework:開發人員根據之前評審的結果,對代碼進行修復。
具體操作請參考《CodeReview工具Jupiter的使用.mht》補充除了以上提到的在開發過程中我們可以采取的措施外,我們還可以通過其它手段從不同方面提升我們的系統質量。下面將簡要介紹動態檢查、WEB前端分析、缺陷管理、自動化測試、性能測試的操作和相關工具。
動態檢查動態檢查是指當應用在運行時,檢查當前應用的對象、對象引用、內存、CPU使用情況、線程、線程運行情況(阻塞、等待等),同時可以查找應用內存使用得熱點,即:哪個對象占用的內存比較多;或者CPU熱點,即:哪兒方法占用的較大得CPU資源。常用的檢測工具有:JProfiler、JConsole。
動態檢查_JProfiler(一)動態檢查_JProfiler(二)監控界面如下圖所示:
動態檢查_JConsole(一)JConsole是一個基于JMX的GUI工具,用于監控正在運行的JVM。JConsole是jdk5.0自帶的工具,所以如果安裝的的jdk5以上版本,
那么就不用去另外安裝。JConsole畢竟是JDK自帶的東西,功能雖然沒有一些商業軟件那
么強大,但是穩定性好,在大壓力情況下也不會發生什么問題。而且,提供了相對全面的系統監控功能。在待監控的JVM啟動命令上增加以下參數,JConsole就可以遠程連接并監控了。-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.port=7080
其中7080是Jconsole連接的端口。
動態檢查_JConsole(二)在本機運行jdk\bin\jconsole.exe,輸入遠端機器的IP、JMX端口就可以連接上去了。如下圖所示:
動態檢查_JConsole(三)在本機運行jdk\bin\jconsole.exe,輸入遠端機器的IP、JMX端口就可以連接上去了。如下圖所示:
動態檢查_JMX(一)JMX(JavaManagementExtensions,即Java管理擴展)是一個為應用程序、設備、系統等植入管理功能的框架。通常使用JMX來監控系統的運行狀態或管理系統的某些方面,比如清空緩存、重新加載配置文件等。下面舉例說明怎樣通過JMX監控自己的程序:1、Hello是一個需要被管理的類:
動態檢查_JMX(二)2、要管理Hello則必須創建一個相應Mbean:
說明:包含在MBean中方法都將是可以被管理的。MBean起名是有規范的,就是原類名后加上MBean字樣。
動態檢查_JMX(三)3、創建Agent類注冊服務MBean:
動態檢查_JMX(四)4、運行后通過JConsole監控的情況如下圖:
WEB前端分析(一)為什么關注前端性能分析?“系統響應時間”指應用系統從請求發出開始到客戶端接收到所有數據所消耗的時間。這樣,“系統響應時間”加上“呈現時間”,才是完整的用戶感受到的響應時間。
響應時間=網絡響應時間+應用程序響應時間+瀏覽器處理時間響應時間=(N1+N2+N3+N4)+(A1+A2+A3)+TbWEB前端分析(二)為什么關注前端性能分析?
WEB前端分析(三)Yahoo!的ExceptionalPerformance團隊為改善Web性能帶來最佳實踐。他們為此進行了一系列的實驗、開發了各種工具、寫了大量的文章和博客并在各種會議上參與探討。最佳實踐的核心就是旨在提高網站性能。ExcetionalPerformance團隊總結出了一系列可以提高網站速度的方法。可以分為7大類34條。包括內容、服務器、cookie、CSS、JavaScript、圖片、移動應用等七部分。
詳情請參考附件:《雅虎團隊經驗-網站頁面性能優化的34條黃金守則.pdf》
WEB前端分析(四)Yahoo!的ExceptionalPerformance團隊為改善Web性能帶來最佳實踐。他們為此進行了一系列的實驗、開發了各種工具、寫了大量的文章和博客并在各種會議上參與探討。最佳實踐的核心就是旨在提高網站性能。ExcetionalPerformance團隊總結出了一系列可以提高網站速度的方法。可以分為7大類34條。包括內容、服務器、cookie、CSS、JavaScript、圖片、移動應用等七部分。
詳情請參考附件:《雅虎團隊經驗-網站頁面性能優化的34條黃金守則.pdf》
WEB前端分析(五)常用的前端性能分析工具有:FiddlerIBMPageDetailer(商用)FireBugYahooYSlowHTTPAnalyzer(商用)AOLPageTest
建議采用IBMPageDetailer、YahooYSlow。
缺陷管理缺陷管理/軟件缺陷管理(DefectManagement)是在軟件生命周期中獲取、管理、溝通任何變更請求的過程(從變更的建議到變更的解決)。可以確保你的問題如需求或者缺陷被跟蹤管理而不丟失。業內在用的缺陷管理工具:
自動化測試_QTP(一)QTP是QuicktestProfessional的簡稱,是一種自動測試工具。使用QTP的目的是想用它來執行重復的手動測試,主要是用于回歸測試和測試同一軟件的新版本。因此你在測試前要考慮好如何對應用程序進行測試,例如要測試那些功能、操作步驟、輸入數據和期望的輸出數據等。以驗證eapmgr登錄為例,簡單演示QTP的用法。1、測試用例:
自動化測試_QTP(二)2、運行QTP,在以下提示框中勾選“Web”
自動化測試_QTP(三)3、在主界面上,點擊“Record”,開始錄制腳本:
輸入測試URL后,點【確定】:自動化測試_QTP(三)在自動打開的eapmgr登錄頁面中,輸入用戶名:admin,密碼:suntek:點【登錄】按鈕,系統彈出提示:
自動化測試_QTP(三)4、完成錄制,點擊【stop】:
自動錄制的腳本如下:
修改腳本,加上提示內容校驗:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025授權合同 房地產評估委托協議書
- 山東省日照市莒縣第三中學教育集團2024-2025學年九年級下學期第一次月考數學試題(含簡單答案)
- 專業英語 Unit 16教案學習資料
- 《人類的“老師”》課件
- 房產公司安全培訓學習
- 江蘇省連云港市城頭高級中學2024-2025學年高二下學期第一次質量檢測政治試題(原卷版+解析版)
- 保險行業工作計劃
- 保險行業開門紅早會主持詞
- 現代藝術未來科技人文住宅景觀方案投標項目
- 《宮頸病變》課件大綱
- 【基于UASB+SBR的組合處理工藝的制藥廠廢水處理工藝設計12000字】
- 手術室對病理標本處置出現錯誤的原因分析品管圈魚骨圖柏拉圖
- 澳洲堅果雪花酥加工技術規程
- 小升初個人簡歷模板下載
- 6款課堂活動隨機點名-抽獎模板(可編輯)兩套
- 牛產后疾病課件
- 無人機在公安領域的應用
- 生產建設項目土壤流失量測算導則計算程序
- 5G共址基站電磁輻射投訴監測實例分析與討論
- 16-第六章-污染事故應急GIS-資源環境信息系統課件
- 慢性心力衰竭“新四聯”藥物治療臨床決策路徑專家共識(2022年)解讀
評論
0/150
提交評論