代碼質(zhì)量與評審_第1頁
代碼質(zhì)量與評審_第2頁
代碼質(zhì)量與評審_第3頁
代碼質(zhì)量與評審_第4頁
代碼質(zhì)量與評審_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

北美專業(yè)培訓(xùn)機構(gòu)AVTECH簡介AVTECH總部設(shè)在美國NEWJERSEY,是北美排行第一的專業(yè)培訓(xùn)機構(gòu),設(shè)有4大分校,數(shù)十個培訓(xùn)點遍布北美、西歐和東亞;;2000年進入中國,以培養(yǎng)國際化的中高端信息人才為己任,專注于國際前沿的新技術(shù)研發(fā)與信息科技新興行業(yè)的開拓教育。AVTECH進入中國13年,屬同行中歷史最久。AVTECH是國內(nèi)最大的國際認(rèn)證考試中心,提供上千門國際認(rèn)證考試。AVTECH的師資來自全球,在國內(nèi)培訓(xùn)機構(gòu)中獨一無二的。學(xué)院開設(shè)課程超過500門,學(xué)習(xí)培訓(xùn)內(nèi)容涵蓋IT技術(shù)及使用IT技術(shù)的醫(yī)學(xué)、生物、財會、管理等相關(guān)行業(yè)所有高、中、低級知識和技能。其中一些技術(shù)課程來自于如下廠家:微軟、IBM、Oracle、Cisco、SAS、ISTQB、SAP、PMI、EXIN、IIBA、OpenGroup、APMG、ISACA、Vmware、EXIN、Peoplecart、EPI、BRMI、IAOP、ScrumAlliance等

艾威最新推薦:ITIL、ITILExpert、CISSP、PMP、CISA、COBIT、Prince2、MSP、SCM、CSD、CBAP、TOGAF、CRISC、CGEIT、CISM、PGMP、PFMP、BRMP、CDCP、SGF、NPDP等認(rèn)證培訓(xùn)代碼質(zhì)量與評審內(nèi)容質(zhì)量管理的必要性質(zhì)量管理實踐看得見的改進總結(jié)互聯(lián)網(wǎng)開發(fā)特點市場競爭激烈,需求變化快開發(fā)周期長隱性成本時間/迭代代碼質(zhì)量的影響成本生產(chǎn)率質(zhì)量管理實踐代碼質(zhì)量質(zhì)量角度:演化、維護高內(nèi)聚、低耦合是有限度的目標(biāo)群體:開發(fā)人員代碼質(zhì)量保障步驟代碼評審持續(xù)集成對待變化的態(tài)度不只是擁抱變化,更要利用變化時間/迭代質(zhì)量拒絕退化重構(gòu)的時機某周一早上,你的老板要求編寫一個小程序,從鍵盤讀入字符,然后輸出到打印機上voidCopy(){intc;while((c=Rdkbd())!=EOF)wrtPrt(c);}CopyCharWriterPrtCharReadKbd重構(gòu)的時機booleanptFlag=false;booleanpunchFlag=false;voidcopy(){intc;while((c=(ptFlag?Rdpt():Rdkbd())!=EOF)punchFlag?wrtPunch():wrtPrt(c);}幾個月后,老板來找你,說有時希望Copy程序能從手寫板讀入信息幾個月后,老板又來找你,有時希望Copy程序可以輸出到U盤上ReadWriterCopyKbdPtCharCharPrtPuh質(zhì)量管理平臺SonarMavenJenkins插件體系結(jié)構(gòu)看得見的度量指標(biāo)代碼重復(fù)代碼單元測試復(fù)雜度圈復(fù)雜度度量代碼分支情況Ifforwhilecasecatchthrowreturn&&||?復(fù)雜性越高,測試成本越高復(fù)雜度編碼規(guī)則檢查注釋架構(gòu)依賴結(jié)構(gòu)矩陣(DSM)設(shè)計度量指標(biāo)LCOM4Lackofcohesionofmethods說明類內(nèi)部方法和變量之間的關(guān)系指標(biāo)LCOM4=0/BadLCOM4=1/高LCOM4>=2/低SRP原則RFCResponseForClass通過檢查方法被調(diào)用的情況來反映一個類的復(fù)雜程度可以簡單的理解為一個類所包含的方法多寡復(fù)雜度從類的內(nèi)部描述,RFC從類的外部來描述RFC=M+RRFC’=M+R’M=numberofmethodsintheclass

R=numberofremotemethodsdirectlycalledbymethodsoftheclass

R’=numberofremotemethodscalled,recursivelythroughtheentirecalltree設(shè)計設(shè)計高級度量Sonar插件插件改進效果改進架構(gòu)-模塊劃分原則采用Maven多Project結(jié)構(gòu),先根據(jù)職能分Project,再根據(jù)功能模塊分PackageREP(重用發(fā)布等價原則)重用的粒度就是發(fā)布的粒度CCP(共同封閉原則)包中所有類對于同一類性質(zhì)的變化應(yīng)該是共同封閉的ADP(無環(huán)依賴原則)在包的依賴關(guān)系圖中不允許存在環(huán)設(shè)計-變化應(yīng)對之道視角描述關(guān)注點概念對象是一組責(zé)任軟件要負(fù)責(zé)什么?規(guī)約對象是一組可以被其他對象或?qū)ο笞约赫{(diào)用的方法(也稱行為)怎么使用軟件?實現(xiàn)對象是代碼和數(shù)據(jù),以及它們之間的計算交互軟件怎樣履行自己的責(zé)任?MartinFowler的建議:對象的三個視角設(shè)計-變化應(yīng)對之道在概念上層次上交流,在實現(xiàn)層次上執(zhí)行,客戶端無需準(zhǔn)確知道具體操作細(xì)節(jié),只需一般性(概念性)知道即可只要概念不變,客戶端就可以與實現(xiàn)細(xì)節(jié)的變化隔離開來案例:下一節(jié)分享去哪里聽設(shè)計-變化應(yīng)對之道ProgrammingtoanInterface,notanImplementation客戶對象和服務(wù)對象之間的職責(zé)分配使用抽象類隱藏具體的實現(xiàn)創(chuàng)建和使用分離案例:評價、資料設(shè)計-變化應(yīng)對之道Favorobjectcompositionoverclassinheritance但是設(shè)計模式中為什么繼承無處不在?不要按照傳統(tǒng)的方式來使用繼承用新的行為來特化現(xiàn)有的具體對象案例:講師分類講師男女主題A男主題B男主題A女主題B女性別講師主題女男主題A主題B設(shè)計-變化應(yīng)對之道DesigningforChange在設(shè)計中思考什么應(yīng)該變化,并封裝會發(fā)生變化的概念封裝不只是隱藏數(shù)據(jù),也可以是封裝類型變化不只是算法和行為,可以是任何事情案例:委托評價講師聽眾公司A公司B主辦方usesusescreatecreate公司C設(shè)計-變化應(yīng)對之道SingleResponsibilityPrincipleOpenClosedPrincipleLiskovSubstitutionPrincipleInterfaceSegregationPrincipleDependencyInversionPrinciple注釋能用代碼來闡述的,盡量不用注釋好的注釋應(yīng)該解釋意圖,而不是解釋操作什么也比不上放置良好的注釋來得有用什么也不會比陳舊、提供錯誤信息的注釋更有破壞性目錄(一)除了編碼,開發(fā)還可以做什么

編碼規(guī)范單元測試

代碼評審靜態(tài)檢查

持續(xù)集成目錄(二)補充

動態(tài)檢查缺陷管理

性能測試

WEB前端分析

自動化測試除了編碼,開發(fā)還可以做什么

現(xiàn)狀

項目開發(fā)過程中,由于開發(fā)人員的經(jīng)驗、代碼風(fēng)格各不相同,以及缺乏統(tǒng)一的標(biāo)準(zhǔn)和管理流程,往往導(dǎo)致整個項目的代碼質(zhì)量較差,難于維護,需要較大的測試投入和周期等問題。

措施可以采用以下五個步驟來保證和提高整個項目的代碼質(zhì)量:統(tǒng)一編碼規(guī)范、代碼樣式;靜態(tài)代碼分析(staticcodereview);單元測試;持續(xù)集成;代碼評審和重構(gòu)(Review&Refactor)。下面將針對每個步驟和其所使用的工具、方法進行詳細(xì)描述。編碼規(guī)范規(guī)范統(tǒng)一的編碼能提高項目代碼的可讀性和可維護性,編碼規(guī)范主要應(yīng)包含以下幾個方面:一般規(guī)則和格式規(guī)范。例如代碼縮進、程序塊規(guī)范、每行最大代碼長度等。命名規(guī)則。例如包名、類名、變量、方法、接口、參數(shù)等命名規(guī)范文檔規(guī)范。例如類文件頭聲明、類注釋、成員變量和方法注釋等規(guī)范。編程規(guī)范。例如異常、并發(fā)、多線程等方面的處理方式。其他規(guī)范。例如日志格式、屬性文件格式,返回值和消息格式。用eclipse控制代碼樣式(一)一旦編碼規(guī)范確定,就可以利用Eclipse來控制代碼樣式和格式。點擊Eclipse的Windows->Preference菜單項,在打開的Preferences對話框的左側(cè)欄中找到Java節(jié)點下的子項CodeStyle,該項和它的子項允許您對Java代碼的樣式進行控制:用eclipse控制代碼樣式(二)可以在Eclipse提供的默認(rèn)代碼格式配置的基礎(chǔ)上建立自定義的格式。在Formatter面板中,點擊New,輸入新的名字并選擇一個默認(rèn)的配置作為初始化格式,如圖所示:用eclipse控制代碼樣式(三)設(shè)置風(fēng)格如圖所示:代碼靜態(tài)檢查_CheckStyleCheckStyle用來檢查代碼格式、規(guī)范、風(fēng)格。檢查并強制執(zhí)行統(tǒng)一的代碼風(fēng)格;檢查Javadoc;檢查類、變量、方法的命名;檢查類和方法的大?。粰z查編碼錯誤,例如magicnumber;……代碼常見問題舉例:代碼中的magic-number和magic-string:Strings=“0000”+Integer.toString(ch,16);0000、16的含義,作者幾周后就忘記了。CheckStyle的安裝配置(一)CheckStyle插件地址。

自動安裝地址:

下載地址:

安裝后出現(xiàn):CheckStyle的安裝配置(二)

配置項說明:

CheckStyle的安裝配置(三)CheckStyle檢查結(jié)果:

其它工具

用于javascript靜態(tài)檢查的工具:Jslint-TheJavaScriptCodeQualityTool

代碼靜態(tài)檢查_FindBugsFindBugs是一個java代碼的靜態(tài)代碼分析工具,用來發(fā)現(xiàn)那些潛在的、常見的、很難被發(fā)現(xiàn)的bug。與其他靜態(tài)分析工具不同,F(xiàn)indBugs不注重樣式或者格式,它試圖只尋找真正的缺陷或者潛在的性能問題。如NullPoint空指針檢查、沒有合理管理資源等。Findbugs插件地址。

自動安裝地址:

下載地址:Findbugs的使用

配置選項:

Findbugs的使用運行,右鍵項目執(zhí)行“FindBugs”操作:

檢查結(jié)果:

單元測試單元測試

單元測試是最小粒度的測試,以測試某個功能或代碼塊,一般由程序員來做。用例設(shè)計和評審

設(shè)計階段需要具體考慮要對哪些代碼單元進行測試,被測單元之間的關(guān)系,測試策略,以及單元測試用例設(shè)計等,并最終輸出《單元測試用例設(shè)計》文檔,用來指導(dǎo)具體的單元測試執(zhí)行。在用例設(shè)計完成之后,下一步的工作就是進行測試用例的評審。個人的理解和經(jīng)驗始終是有限的,用例評審可以借集體之力,對用例設(shè)計進入查漏補缺,進一步保證測試用例的有效性。

單元測試_JUnitJUnit

JUnit是一個開發(fā)源代碼的Java測試框架,用于編寫和運行可重復(fù)的測試。它是用于單元測試框架體系xUnit的一個實例(用于java語言)。主要用于白盒測試,回歸測試。下載地址

eclipse自帶了JUnit,完整安裝包的下載地址:

Junit核心結(jié)構(gòu)Junit

JUnit測試開發(fā)(一)下面舉例描述怎樣對一個類編寫單元測試代碼,待測試的類:

JUnit測試開發(fā)(二)JUnit3.8測試類:

JUnit測試開發(fā)(三)JUnit4.0測試類:

JUnit測試開發(fā)(四)setUp和tearDown方法:

Junit斷言(一)斷言Assert方法:

Junit斷言(二)斷言Assert方法:

在Eclipse上執(zhí)行Junit(一)

下面說明怎樣在eclipse上執(zhí)行Junit單元測試添加一個需要測試的類Hello:

在Eclipse上執(zhí)行Junit(二)選中需要測試的類,右鍵點擊,選擇New->JUnitTestCase,如圖:在Eclipse上執(zhí)行Junit(三)新建測試類:

在Eclipse上執(zhí)行Junit(四)下一步選擇要測試的方法:

在Eclipse上執(zhí)行Junit(五)完成HelloTest的Abs方法:

在Eclipse上執(zhí)行Junit(六)執(zhí)行測試程序,右鍵,RunAs->JUnitTest,就可以看到JUnit測試結(jié)果:

綠色表示測試通過,只要有1個測試未通過,就會顯示紅色并列出未通過測試的方法。單元測試_EasyMock模擬對象技術(shù)

在實際項目中,開發(fā)人員自己的代碼往往需要和其他的代碼模塊或系統(tǒng)進行交互,但在測試的過程中,這些需要被調(diào)用的真實對象常常很難被實例化,利用一個模擬對象來模擬我們的代碼所依賴的真實對象,來幫助完成測試,提高測試覆蓋率。常見的模擬技術(shù)模擬技術(shù)有很多種,如jMock,EasyMock,Mockito,PowerMock等等,下面用EasyMock舉例說明如何模擬對象。EasyMock(一)下載地址:使用樣例:

看一個用戶驗證的servlet:publicclassLoginServletextendsHttpServlet{protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");

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{}測試當(dāng)用戶名和口令驗證失敗的情形:publicvoidtestLoginFailed()throwsException{//創(chuàng)建mock對象MockControlmc=MockControl.createControl(HttpServletRequest.class);HttpServletRequestrequest=(HttpServletRequest)mc.getMock();EasyMock(四)//設(shè)置mock參數(shù)

request.getParameter("username");//期望下面的測試將調(diào)用此

方法,參數(shù)為"username"mc.setReturnValue("admin",1);//期望返回值為"admin",僅調(diào)用1次request.getParameter("password");//期望下面的測試將調(diào)用此方

法,參數(shù)為"password"mc.setReturnValue("1234",1);//期望返回值為"1234",僅調(diào)用1

次//表示錄制完畢mc.replay();EasyMock(五)try{servlet.doPost(request,null);fail("Notcaughtexception!");}catch(RuntimeExceptionre){assertEquals("Loginfailed.",re.getMessage());}//verify:mc.verify();}運行JUnit,測試通過!表示我們的Mock對象正確工作了!單元測試_測試覆蓋率分析為了衡量單元測試的質(zhì)量和覆蓋的范圍,需要對單元測試的代碼進行測試覆蓋分析。具體采用哪些指標(biāo)可以根據(jù)項目的實際情況來定,以避免因過高的指標(biāo)增加了代碼開發(fā)人員的工作量而影響了項目整體的進度。。

業(yè)內(nèi)比較常用的工具有:

1、Cobertura,對應(yīng)的eclipse插件:eCobertura。2、EclEmma是一款基于EMMA的Eclipse插件,方

便在EclipseIDE中進行測試覆蓋率分析。

插件下載地址:

Eclipse測試覆蓋率分析(一)下面說怎樣在eclipse上執(zhí)行測試覆蓋率分析:

先安裝插件EclEmma,然后在測試用例寫好后,可以在右鍵點擊測試類,選擇CoverageAs->JUnitTest.Eclipse測試覆蓋率分析(二)單元測試執(zhí)行完后,Coverage視圖中會顯示所選擇的測試的覆蓋率。雙擊打開某一具體的類后,可以看到高亮顯示的覆蓋分析結(jié)果,如圖所示。紅色代表測試沒有覆蓋到該行,黃色表示部分覆蓋,綠色的行表示該行在本次測試中被覆蓋到。Eclipse測試覆蓋率分析(三)在Coverage視圖中可以通過點擊鼠標(biāo)右鍵將測試覆蓋分析的結(jié)果導(dǎo)出成需要的格式,例如HTML。單元測試-FIRST原則Fast(快速)Independent(獨立)Repeatable(可重復(fù))Self-Validating(自足驗證)Timely(及時)持續(xù)集成持續(xù)集成(ContinuousIntegration)是利用一系列的工具、方法和規(guī)則,做到快速的構(gòu)建開發(fā)代碼,自動的測試化,來提高開發(fā)代碼的效率和質(zhì)量。持續(xù)集成的提出

如果項目開發(fā)的規(guī)模比較小,比如一個人的項目,如果它對外部

系統(tǒng)的依賴很小,那么軟件集成不是問題,但是隨著軟件項目復(fù)雜度的增加(即使增加一個人),就會對集成和確保軟件組件能夠在一起工作提出了更多的要求-要早集成,常集成。早集成,頻繁的集成

幫助項目在早期發(fā)現(xiàn)項目風(fēng)險和質(zhì)量問題,如果到后期才發(fā)現(xiàn)這些問題,解決問題代價很大,很有可能導(dǎo)致項目延期或者項目失敗。持續(xù)集成

持續(xù)集成的常見做法是:持續(xù)集成框架+版本管理器+構(gòu)建工具。

1、持續(xù)集成框架常用的有:Jenkins、Continuum、CruiseControl等。2、版本管理器常用的有:ClearCase、Wincvs、SVN等。3、構(gòu)建工具常用的有:Ant、Maven。

后面主要以SVN+Jenkins+Ant實現(xiàn)方式舉例說明。

持續(xù)集成_版本管理器SVN(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數(shù)開源軟件都使用svn作為代碼版本管理軟件。服務(wù)端下載地址:

客戶端下載地址:服務(wù)端安裝運行后如圖:

持續(xù)集成_自動構(gòu)建

Ant在構(gòu)建過程方面十分優(yōu)秀,它是一個基于任務(wù)和依賴的構(gòu)建工具。下載地址:

Maven不單是構(gòu)建工具,也是個項目管理平臺。下載地址:

Maven與Ant對比,一些使用上的區(qū)別:1、Maven是基于中央倉庫的編譯,即把編譯所需要的資源放在一個中央倉庫里,如jar,tld等。當(dāng)編譯的時候,maven會自動在倉庫中找到相應(yīng)的包,而ant需要自己定義了。用maven編譯的項目在發(fā)布的時候只需要發(fā)布源碼,小得很,而反之,ant的發(fā)布則要把所有的包一起發(fā)布。2、Maven有大量的重用腳本可以利用,如生成網(wǎng)站,生成javadoc,sourcecodereference,等。而ant都需要自己去寫。3、Maven目前不足的地方就是沒有象ant那樣成熟的GUI界面。

持續(xù)集成_持續(xù)集成框架有了自動構(gòu)建后,我們就可以通過Jenkins每天定時用Ant腳本或Maven,加上JUnit、Cobertura/EMMA等的ANT腳本調(diào)用,每一次的構(gòu)建都可以把這些檢查工作自動的進行一遍測試。然后生成測試報告進行查閱。Jenkins(Jenkins的前身)可以說在安裝和配置上最簡單的CI產(chǎn)品。Jenkins是基于java開發(fā)的,但它不僅限于構(gòu)建基于Java的軟件,還能構(gòu)建.net、Python、Ruby等。Jenkins提供了一組很明確和可擴展API的Jenkins組件。這批組成一個大的類庫的Jenkins組件反過來又豐富了Jenkins的功能;它們都是開源的,而且它們可以直接通過Jenkins的控制臺來進行安裝。安裝軟件下載地址:

Jenkins安裝要點將jenkins.war拷貝到tomcat的webapps目錄下;修改Tomcat-7.0.8\conf\server.xml文件,設(shè)置UTF-8編碼:通過以下方式修改Jenkins_HOME的位置:在Jenkins的web.xml中找到Jenkins_HOME,默認(rèn)value為空值,將其設(shè)置為你希望的路徑,然后重啟。

Jenkins首頁Jenkins管理界面Jenkins插件安裝(一)Jenkins插件安裝(二)Jenkins

Job(一)Jenkins

Job(二)Jenkins

Job(三)Jenkins

Job(四)Jenkins質(zhì)量度量(一)Jenkins質(zhì)量度量(二)openEAP應(yīng)用的實踐(一)以下演示在實際的openEAP項目中,怎樣自動化完成以上活動。演示的是一個web項目,目錄結(jié)構(gòu)如下圖所示:

openEAP應(yīng)用的實踐(二)因為相關(guān)依賴資源都已經(jīng)在quality目錄下了(運行只依賴數(shù)據(jù)庫環(huán)境,沒有對數(shù)據(jù)庫操作進行模擬),所以可以直接通過ant執(zhí)行quality目錄下的build.xml,腳本執(zhí)行完畢后,生成的報告在quality目錄下,如下圖所示:

openEAP應(yīng)用的實踐(三)也可以發(fā)布到Jenkins上執(zhí)行構(gòu)建:

openEAP應(yīng)用的實踐(四)在Jenkins上查看報告:

代碼評審代碼評審(CodeReview)是Java項目開發(fā)過程中的一個重要步驟,代碼評審可以幫助發(fā)現(xiàn)靜態(tài)代碼分析過程中無法發(fā)現(xiàn)的一些問題,例如代碼在邏輯上或者功能上是否存在錯誤,代碼在執(zhí)行效率和性能上是否有需要改進的地方等。代碼評審還可以幫助新進入項目組的成員快速學(xué)習(xí)和了解項目,促進經(jīng)驗分享。代碼評審主要包括兩種形式,同級評審(PeerReview)和小組評審(GroupReview)。同級評審主要指項目成員間的互相評審,小組評審是指通過召開評審會議,項目成員一起對項目代碼進行評審。為了提高代碼評審的有效性和效率,可以借助一些外部工具,比較常用的代碼評審工具有Jupiter和CodeStriker。Jupiter是一款開源的Eclipse插件,允許成員將評審意見定位到真實代碼的具體行,由于代碼評審的結(jié)果以XML文件的形式保存。Jupiter使用Eclipse插件下載地址:Jupiter里,代碼評審(codereview)分為4個流程:1.Configuration(配置):review發(fā)起者設(shè)置“ReviewID”,指定要

評審的代碼,參與代碼評審的人員,要討論的問題等等。2.Individualreview(個人評審):每個人獨自審查代碼,把可能出現(xiàn)

問題的代碼加入checklist。

3.Teamreview(團隊評審):大家在一起討論之前檢查出的問題代

碼,并決定如何處理。4.Rework:開發(fā)人員根據(jù)之前評審的結(jié)果,對代碼進行修復(fù)。

具體操作請參考《CodeReview工具Jupiter的使用.mht》補充除了以上提到的在開發(fā)過程中我們可以采取的措施外,我們還可以通過其它手段從不同方面提升我們的系統(tǒng)質(zhì)量。下面將簡要介紹動態(tài)檢查、WEB前端分析、缺陷管理、自動化測試、性能測試的操作和相關(guān)工具。動態(tài)檢查動態(tài)檢查是指當(dāng)應(yīng)用在運行時,檢查當(dāng)前應(yīng)用的對象、對象引用、內(nèi)存、CPU使用情況、線程、線程運行情況(阻塞、等待等),同時可以查找應(yīng)用內(nèi)存使用得熱點,即:哪個對象占用的內(nèi)存比較多;或者CPU熱點,即:哪兒方法占用的較大得CPU資源。常用的檢測工具有:JProfiler、JConsole。

動態(tài)檢查_JProfiler(一)Jprofiler功能強大,是款付費軟件,官方網(wǎng)站:

。JProfiler監(jiān)控比較消耗系統(tǒng)資源的,所以性能測試的一般情況下不要運行。如果要用于相對大壓力情況下,可以有選擇的打開監(jiān)控項,不用所有都打開。主要有兩個,一個是內(nèi)存監(jiān)控,打開的情況下可以查找內(nèi)存分配熱點。一個是CPU監(jiān)控,打開的情況下可以查看CPU使用熱點。動態(tài)檢查_JProfiler(二)監(jiān)控界面如下圖所示:

動態(tài)檢查_JConsole(一)JConsole是一個基于JMX的GUI工具,用于監(jiān)控正在運行的JVM。JConsole是jdk5.0自帶的工具,所以如果安裝的的jdk5以上版本,那么就不用去另外安裝。JConsole畢竟是JDK自帶的東西,功能雖然沒有一些商業(yè)軟件那么強大,但是穩(wěn)定性好,在大壓力情況下也不會發(fā)生什么問題。而且,提供了相對全面的系統(tǒng)監(jiān)控功能。在待監(jiān)控的JVM啟動命令上增加以下參數(shù),JConsole就可以遠程連接并監(jiān)控了。-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.port=7080

其中7080是Jconsole連接的端口。

動態(tài)檢查_JConsole(二)在本機運行jdk\bin\jconsole.exe,輸入遠端機器的IP、JMX端口就可以連接上去了。如下圖所示:

動態(tài)檢查_JConsole(三)在本機運行jdk\bin\jconsole.exe,輸入遠端機器的IP、JMX端口就可以連接上去了。如下圖所示:動態(tài)檢查_JMX(一)JMX(JavaManagementExtensions,即Java管理擴展)是一個為應(yīng)用程序、設(shè)備、系統(tǒng)等植入管理功能的框架。通常使用JMX來監(jiān)控系統(tǒng)的運行狀態(tài)或管理系統(tǒng)的某些方面,比如清空緩存、重新加載配置文件等。下面舉例說明怎樣通過JMX監(jiān)控自己的程序:1、Hello是一個需要被管理的類:

動態(tài)檢查_JMX(二)2、要管理Hello則必須創(chuàng)建一個相應(yīng)Mbean:

說明:包含在MBean中方法都將是可以被管理的。MBean起名是有規(guī)范的,就是原類名后加上MBean字樣。

動態(tài)檢查_JMX(三)3、創(chuàng)建Agent類注冊服務(wù)MBean:

動態(tài)檢查_JMX(四)4、運行后通過JConsole監(jiān)控的情況如下圖:

WEB前端分析(一)為什么關(guān)注前端性能分析?“系統(tǒng)響應(yīng)時間”指應(yīng)用系統(tǒng)從請求發(fā)出開始到客戶端接收到所有數(shù)據(jù)所消耗的時間。這樣,“系統(tǒng)響應(yīng)時間”加上“呈現(xiàn)時間”,才是完整的用戶感受到的響應(yīng)時間。

響應(yīng)時間=網(wǎng)絡(luò)響應(yīng)時間+應(yīng)用程序響應(yīng)時間+瀏覽器處理時間響應(yīng)時間=(N1+N2+N3+N4)+(A1+A2+A3)+TbWEB前端分析(二)為什么關(guān)注前端性能分析?

WEB前端分析(三)Yahoo!的ExceptionalPerformance團隊為改善Web性能帶來最佳實踐。他們?yōu)榇诉M行了一系列的實驗、開發(fā)了各種工具、寫了大量的文章和博客并在各種會議上參與探討。最佳實踐的核心就是旨在提高網(wǎng)站性能。ExcetionalPerformance團隊總結(jié)出了一系列可以提高網(wǎng)站速度的方法。可以分為7大類34條。包括內(nèi)容、服務(wù)器、cookie、CSS、JavaScript、圖片、移動應(yīng)用等七部分。

詳情請參考附件:《雅虎團隊經(jīng)驗-網(wǎng)站頁面性能優(yōu)化的34條黃金守則.pdf》

WEB前端分析(四)Yahoo!的ExceptionalPerformance團隊為改善Web性能帶來最佳實踐。他們?yōu)榇诉M行了一系列的實驗、開發(fā)了各種工具、寫了大量的文章和博客并在各種會議上參與探討。最佳實踐的核心就是旨在提高網(wǎng)站性能。ExcetionalPerformance團隊總結(jié)出了一系列可以提高網(wǎng)站速度的方法??梢苑譃?大類34條。包括內(nèi)容、服務(wù)器、cookie、CSS、JavaScript、圖片、移動應(yīng)用等七部分。

詳情請參考附件:《雅虎團隊經(jīng)驗-網(wǎng)站頁面性能優(yōu)化的34條黃金守則.pdf》

WEB前端分析(五)常用的前端性能分析工具有:FiddlerIBMPageDetailer(商用)FireBugYahooYSlowHTTPAnalyzer(商用)AOLPageTest

建議采用IBMPageDetailer、YahooYSlow。

缺陷管理缺陷管理/軟件缺陷管理(DefectManagement)是在軟件生命周期中獲取、管理、溝通任何變更請求的過程(從變更的建議到變更的解決)。可以確保你的問題如需求或者缺陷被跟蹤管理而不丟失。業(yè)內(nèi)在用的缺陷管理工具:

自動化測試_QTP(一)QTP是QuicktestProfessional的簡稱,是一種自動測試工具。使用QTP的目的是想用它來執(zhí)行重復(fù)的手動測試,主要是用于回歸測試和測試同一軟件的新版本。因此你在測試前要考慮好如何對應(yīng)用程序進行測試,例如要測試那些功能、操作步驟、輸入數(shù)

溫馨提示

  • 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

提交評論