




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第1章簡 歡迎 聯(lián)系Parasoft技術(shù)支 第2章安裝和Windows單機安 Windows插件安 Linux/Solaris單機安 Linux/Solaris插件安 Mac安 第3章概念和術(shù) Suppressions( BugDetective靜態(tài)分 單元測 樁函 測試配 第4章Jtest基本知識點案 和取消報告違 生成、執(zhí)行和擴展Junit測試用 創(chuàng)建并使用Objects提高測試覆 在執(zhí)試用的過程中檢測內(nèi)存 生成并執(zhí)行仙人掌測試(Cactus 使用 使用Jtest發(fā)現(xiàn)安全性第5章 查找錯 安全分析使用Jtest服務(wù) 測試EJBs和其他JavaEE組 確保代碼與項目/組/機構(gòu)的一 避免常見的Java編碼錯 鑒別不可的代碼行 仙人掌(Cactus)和HTTPUnit測試用例覆蓋范 測試質(zhì)量和記錄設(shè)定和質(zhì)量目 1歡迎ParasoftJtestJavaEE、SOA、WebJava應(yīng)用程序的一個綜合Java測試產(chǎn)品。不論是團隊正在嘗試建立高質(zhì)量的新代碼,還是基于遺留代碼的擴展,并且不影響現(xiàn)有的功能,JtestJava代碼安裝他們Jtest優(yōu)化開發(fā)資源——自動大約80%的編碼問題使得開發(fā)者能夠減少在逐行檢和調(diào)試代碼上花費的時間,從而使開發(fā)者的精力集中在設(shè)計、算法上。序的調(diào)試難度(SOA/WebJavaEE的應(yīng)用)對于Java代碼質(zhì)量和可讀性具備直觀可視化效果——通過對代碼質(zhì)量和預(yù)期目JavaSOA、WebservicesWeb應(yīng)用程序。JtestParasoftJtestParasoftGRSWeb的數(shù)據(jù)提取功能,允許團隊基于Jtest的結(jié)果和其他關(guān)鍵過程指標(biāo)項目狀態(tài)和傾向。開開放式源碼認(該解釋了幾種聯(lián)系技術(shù)支持的方法、以及如何準(zhǔn)備和發(fā)送“支持歸檔文件”,以幫獲取實時的支持(僅限Jtest可回答您的問題。這一實時支持允許您實時地與Jtest團隊交談,必要時還可進行桌面共享。要接收實時支持,請轉(zhuǎn)至 /jsp/pr/live_experts.jsp目前這一實時技術(shù)支持功能僅支持Windows操作系統(tǒng)。使用JtestParasoft的Jtest是一個活躍的會議場所,您可以在此與其它用戶和PARASOFT團隊成員交談,從他們那里學(xué)到知識。您可以在如下可以貼出您的問題, 可通過、電子郵件或傳真總:(888)305-0041(626)256-法:(331)648926德:+49894613323-英:+44(0)1923亞:+88626636-其它地參見 2裝和Windows單機安這個解釋如何在Windows系統(tǒng)中安裝Jtest的獨立版本(Jtest基于Eclipse框架)安裝準(zhǔn)OperatingWindows2000,XP,2003,orSunMicrosystemsJRE1.3orhigherNotethattheIBMJREsJtest.See“PreventingswiththeIBMJRE”,page734fordetailsandIn?PentiumIVSingleCore3.0GHZSVGA(1024x768)displayminimum; 1GBRAMminimum;2GBRAMAmouseorternative安WindowsWindowsExplorer中,定位并雙擊自解壓文件readmeNext在“InstallationLocation(安裝位置)”框中輸入所需的安裝,然后單擊“Next(下一步)”。然后,Jtest將開始文件。帶有進度指示器的框會打單擊“OK(確定)”按鈕,通知框就關(guān)閉。Jtest將安裝在指定的安裝。Jtest的工作將會被安裝到“C:\sandSettings\<username>\ApplicationData\Parasoft\jtest\workspace”啟Jtest8.3WindowsStartPrograms>Parasoft>JtestlincenseWindows插件安這個主要解釋如何在Windows系統(tǒng)上安裝Jtest的插件到Eclipse、ApplicationDeveloperJbuilder2007。安裝準(zhǔn)安WindowsWindowsExplorer中,定位并雙擊自解壓文件readmeNext在“InstallationLocation(安裝位置)”框中輸入所需的安 ,然后單 Eclipse安裝OK閉程序的框。Jtest將開始文件。帶有進度指示器的框會打開,指示啟通過雙擊合適的桌面圖標(biāo)或從Windows 選擇合適的菜 通過選擇Window>Open>Other打開Jtest視圖,然后在選擇視圖的JtestJtest。如果 在IDE的里不可見,選擇Window>Reset。如 仍然不可見,確保你使用的是的Jtest版本,你可以通過選擇HelpSoftwareUpdatesPendingUpdates和安裝任何掛起的更新。Jtestlincense。Linux/Solaris單機安這個主要解釋如何在Linux或Solaris系統(tǒng)上安裝Jtest的插件到Eclipse、ApplicationDeveloperJbuilder2007。安裝準(zhǔn)安UNIX安裝文件(jtest84.linux.tar.gz或者jtest84.solaris.tar.gz)到你希望安裝Jtest的目錄 ,用來為用戶安裝證。gzip–dcjtest84.linux.tar.gz|tarxvfgzip–dcjtest84.solaris.tar.gz|tarxvf在安裝的過程中,一個名為jtest的 將包含需要運行Jtest的程 將會安裝到”<$HOME>/.jtest/workspace(forSolaris)or.jtest_linux/workspace(for啟運行./jtestJtestlincenseLinux/Solaris插件安這個主要解釋如何在Linxu或Solaris系統(tǒng)上安裝Jtest的插件到Eclipse、ApplicationDeveloperJbuilder2007。安裝準(zhǔn)安UNIX安裝文件(jtestextension84.linux.tar.gz或者jtestextension84.solaris.tar.gz)到你希望安裝Jtest的 ,用來為用戶安裝證。gzip–dcjtest84-extension.linux.tar.gz|tarxvfgzip–dcjtest84-extension.solaris.tar.gz|tarxvf換 運行./install注意:Jtest插件可以通過刪除在Eclipse安 下創(chuàng)建的 來卸載運IDE(Eclipse、ApplicationDeveloperJbuilder2007)通過選擇Window>Open>Other打開Jtest視圖,然后在選擇視圖的JtestJtest。如果 在IDE的里不可見,選擇Window>Reset。如 仍然不可見,確保你使用的是的Jtest版本,你可以通過選擇HelpSoftwareUpdatesPendingUpdates和安裝任何掛起的更新。Jtestlincense。Mac安這個主要解釋如何在Mac系統(tǒng)上安裝Jtest的插件到Eclipse的工作副本中安裝準(zhǔn)安MacEclipse3.4Jtest:Eclipse3.3和更早版本Eclipse3.3HelpSoftwareUpdateFindandInstall,8HelpSoftwareUpdateEclipseupdateAvailableSoftwareAddSiteArchivezipOpenOKEclipseolderUpdateManagerLaunchSearchfornewfeaturestoinstallNextNewArchivedSitezipOpenOKFinish接受證協(xié)議,然后點擊Next如果你想為Jtest指定一個客戶安 ,點擊ChangeLocation,然后輸入期望。默認情況下,Jtest將安裝到Eclipse安裝 3JtestEclipseJtest程序文件將解壓到第13步指定 啟通過選擇Window>Open>Other打開Jtest視圖,然后在選擇視圖的JtestJtest。如果Jtest 在IDE的里不可見,選擇Window>Reset。注意:在使用Jtest之前你必須安裝lincense。 因為安裝Jtest可能幫助增加Eclipse的內(nèi)存設(shè)置通過使用下面令改變-vmargs–Xmx1024m的參數(shù)·在Mac系統(tǒng)上,符號測試生成是不可用的。JUnit測試用例將會按默認輸入生成。的方法是在其他平臺上生成JUnit測試用例,同意代碼控制,然后檢查并在MacJUnit測試。本解釋如何從GUI設(shè)置信息在針對命令行模式進行的Jtest安裝上,您可以在一個局部設(shè)置文件中定義權(quán)限信息,然后當(dāng)您在命令行模式下運行Jtest時,調(diào)用該文件。使用與機器綁定的要安裝與機器綁定的證>”在左邊窗格中選擇“License(證)”類別聯(lián)系您的Parasoft代表,接收證。您需要提供在“LocalLicense(本地許在,請致電1- 術(shù)支持”中提供的信息。如果您擁有服務(wù)器證,且想要不打開GUI就獲得機器標(biāo)識,請從命令行運行cpptestcli。輸出消息中將報告機器標(biāo)識。 證首選項頁面的“LocalLicense(本地證)”部分,輸入您的 單擊“Apply(應(yīng)用)”。證首選項頁面將顯示您被使用的功能、以單擊“OK(確定)”,以設(shè)置并保存您的證Parasoft在在不是所有用戶都能對Jtest進行寫入操作的情況下設(shè)證如果設(shè)置license的用戶沒有對Jtest安 ParasoftLicenseServer(分開提供)的情況下安 證,則可以選擇“Jtest>Preferences(Jtest>首選項)”,打開“Preferences(首選項)”框在左邊窗格中選擇“License(證)”類別選擇“UseLicenseServer(使用LicenseServer)”選項。證首選項頁面的證 務(wù)器)”“Set(設(shè)置)”“Hostname(主機名)”字段手動輸入組織的LicenseServer(IP地址“Portnumber(端口)”字段輸入組織的LicenseServer端口。“Edition(版本)”Jtest安裝使用的ProfessionalEdition:包含代碼規(guī)范靜態(tài)分析、單元測試和支持ServerEdition:包含代碼規(guī)范靜態(tài)分析、RuleWizard(自定義規(guī)則創(chuàng)建、ProfessionalEditionIT單元測試、BugDetective和命令行界面。CustomEdition:包含自定義要求。如果您在使用自定義證,請選擇此選項,然后單擊“Choose(選擇)”按鈕,并指定您想將哪些可用“OK(確定)”,以設(shè)置并保存您的LicenseServer Parasoft以獲取這些 技技Jtest”項。要重新激 證,則禁用“StartDeactivated(開始停用)”選項在停用 證的情況下·會清除Jtest視圖,并顯示一條消息,指 證不可用·Jtest操作(例如,測試用例生成或測試用例執(zhí) JtestLicenseServer ·Jtest視圖,并會顯示錯誤(如果可用3念和術(shù)代碼規(guī)范靜態(tài)分Jtest通過靜態(tài)地分析代碼,來執(zhí)行代碼規(guī)范靜態(tài)分析,以檢查與指定代碼規(guī)范規(guī)則的通過改進類設(shè)計和代碼組織,而改進代碼可性Jtest已預(yù)先配置了內(nèi)建的規(guī)則集,以執(zhí)行代碼規(guī)范靜態(tài)分析。缺省情況下,大多數(shù)代TestConfigurations(測試配置)中啟用的規(guī)則,已顯示出能快速而顯著地提如需了解Jtest代碼標(biāo)準(zhǔn)規(guī)則方面的信息,請選擇“Jtest>Help(Jtest>幫助)”,RulesJtest還能檢查用戶以RuleWizard模塊所設(shè)計的任意數(shù)量自定義規(guī)則。有了Suppressions(Suppressions()用來防止Jtest對額外出現(xiàn)的特定靜態(tài)分析任務(wù)進行報告(可能會為單個規(guī)則報告多項任務(wù)。消息會發(fā)送到專門的Suppressions()視圖,而非Jtest視圖;這就能讓你按需要那些違例,而把主要結(jié)果區(qū)域集中于其它錯誤。當(dāng)您通常想要遵循某條規(guī)則、但決定在少數(shù)異常情況下忽略該規(guī)則時,請使用suppressions()。通過使用suppressions,您可以繼續(xù)檢查代碼是否遵循該規(guī)則,而不會息,那么您建議修改TestConfigurations(測試配置TestConfigurationSuppressions()定義了哪些靜態(tài)分析結(jié)果應(yīng)在Jtest視圖和報告中可見這就意味著,分析期間在TestConfiguration中所選擇的規(guī)則會接受檢查,但匹配技技)是基于消息,而非基于規(guī)則。)態(tài)分析任務(wù)進行報告(例如,修正發(fā)生在Y行的X規(guī)則的違例但 對某條規(guī)則的所有違例進行報告RuleWizard(ArchitectandServeredition中提供)Java代碼語法、JSP代碼和代碼風(fēng)格問題創(chuàng)建自定義的代碼規(guī)范規(guī)則。JtestRuleWizard中創(chuàng)RuleWizardJtestLaunchRuleWizard(Jtest>RuleWizard)TestConfigurationsStatic(靜態(tài))New(新建)”Guide(通過在RuleWizardGUI中選擇“Help> 重重BugDetectiveServerEdition(服務(wù)器版漏、SQL注入和其他安全問題。BugDetective“可疑點”,開始分析正在測試的源碼??梢牲c是潛在的錯誤點。這些可疑點在BugDetective規(guī)則中被定義。只要識別了可疑點,BugDetective就導(dǎo)致該可疑點的可能執(zhí)行路徑,并檢查是否有任何確實BugDetective規(guī)則的路徑存在。如果找到了這樣的路徑,就報告一個違例。“除數(shù)為零”情形的規(guī)則就規(guī)定,任何使用了"/""%"運算符的點除”違例的描述就包含這樣的注釋,描述哪些變量、在流路徑的哪一點包含null值為使分析過程更靈活、更適合于項目的獨特要求,可以參數(shù)化某些規(guī)則。因此,BugDetectiveAPI使用相關(guān)的違例。通過使用BugDetective,開發(fā)團隊可以獲得以下關(guān)鍵好處:Performmorecomprehensivetestingwithexistingresources(使用現(xiàn)有資源執(zhí)行更綜合的測試:BugDetective對其它測試技術(shù)進行了補充,允許您發(fā)現(xiàn)一些問題,現(xiàn)這些問題。BugDetective程序中各種分支的可能性,提供了通過傳統(tǒng)測試很難達到的路徑覆蓋率水平。因此,BugDetective常能識別一些處理罕見情況時出Automaticallyidentifybugsthatpassthroughmultipleunits(自動識別通過了多個:誤。這很關(guān)鍵。不過,大多數(shù)開發(fā)在已執(zhí)行了徹底的單元級別測試、糾正了所有明顯的問題、集成了代碼之后,就會遇到諸如空指針解除之類的問題。BugDetectiveBugDetectiveBugDetective報告例如,BugDetectivestrlen,null值:intstrlen(string{return} FindAPImisuses(查找API誤用APIAPI1trueAPI2APInull。通過執(zhí)行過程間分析,BugDetective可以此類API使用中的不一致性。單元測數(shù)。單元測試通常由開發(fā)在項目開發(fā)周期內(nèi)執(zhí)行,而不是在QA階段進行。通過使用Jtest可將這些任務(wù)自動化,以使得單元測試更有效率,更具一致性。,Jtest可以執(zhí)行上述所有類型的單元測試;可以自定義所執(zhí)試的級別和范圍,以便當(dāng)您運行Jtest自動生成的測試用例時,請執(zhí)行異常測試。此類測試可意料之外的因此必要時,您可能會想要擴展自動生成的測試用例,以增強代碼覆蓋率。Jtest可測量測,它被分配了但在測試結(jié)束時回收器沒有銷毀該對象,則該對象被認為是的。每一Jtest確定發(fā)生,它報告三次測試執(zhí)行中最小的和標(biāo)記哪些內(nèi)存被分配的行的位置。,測試用例生不過,編寫測試是一項耗時的工作,如果不仔細就可能會遺漏重要的情況。Jtest提供的單元測試支持,可幫助開發(fā)和測試非常快速地創(chuàng)建良好的單元測試。Jtest之所Jtest自動生成大量測試用例,這些測試用例會試圖執(zhí)行代碼中的所有不同路徑,然后x射JtestJavaJtest中運CC++源碼來實現(xiàn)和保存(所用語言取決于要測試的原始源碼。這些測試用例使用與通用的CppUnit格式類似的格式。C++test的測試提供了比CppUnitC代碼、并在測試框架內(nèi)提供對私有和保護成員數(shù)據(jù)以及成現(xiàn)有CppUnit測試用例可以導(dǎo)入到C++test中,與自動生成的測試用例配合使用。可開發(fā),歷來是單元測試過程中最耗時的部分。通過使用Jtest,您無需編寫任何代碼以生成方法的擴展/·它使您能夠在完成類的編寫或修改之后,立即生成和執(zhí)試用例。這有助于您找·它通過自動生成必需的測試用例范圍和類型,使得快速徹底的可靠性測試成為可能,這是通過手動設(shè)計測試用例所無法達到的。Jtest會試圖創(chuàng)建測試用例,執(zhí)行所測試的全部方法的各種可能分支。例如,如果方法包含一個條件語句(例如if塊,Jtest會試圖生成測試用例,以測試if語句的true和false結(jié)果。樁函測試配TestConfiguration(測試配置)JTest來運行的測試方案。每次JTest在GUI中或從命令行界面運試時,它都使用指定的TestConfiguration(TestConfigurationDefaultTest(缺省的測試配置。TestConfiguration測試的類型(靜態(tài)分析、測試用例生成、測試用例執(zhí)行等每個測試的范圍(要覆蓋哪些行、要使用什么截止日期等JTest包含了一組預(yù)先配置好的“內(nèi)建”的TestConfigurations,代表了最常見的測試方這些配置進行進一步的自定義用戶定義的TestConfiguration可以放在“用戶定義的”類別或“團隊”類別中。用戶定義的Test 在本地機器上,可用于本地JTest裝執(zhí)行的所有測試團隊的TestConfiguration Managr 134“創(chuàng)建自定義的測試配置”TestConfiguration的命令行界面JTest令行界面(cpptestcli)允許您從命令行ss執(zhí)行靜態(tài)分析和單元測試,允許您從諸如s 、make和Ant之類的自動構(gòu)建實用程序中運行JTest。命令行模式可用于JTest的ServerEdition(服務(wù)器版。(GRS(TCM,HTMLXML(報告應(yīng)發(fā)送給誰、報告應(yīng)如何做選項卡、應(yīng)使用什么郵件服務(wù)器和域等、TCM設(shè)置、GRSEdition發(fā)工作站上安裝一套JTest(DeveloperEdition,在架構(gòu)設(shè)計師機器上安裝一套(ArchitectEdition,在團隊構(gòu)建機器或另一臺團隊機器上安裝一套TeamConfiguration檢查代碼和測試用例,并輸入到源碼控制器。每天晚上,cpptestcli在團隊機器上運行,以JTestGUI,以便進行錯誤檢查和糾正。另外,JTestPARASOFTGRS組報告系統(tǒng),用電子郵件給每個開發(fā)發(fā)送一份HTML報告,該報告僅包含與此名開發(fā)相關(guān)的錯誤/結(jié)果,用電子郵件給團隊管理發(fā)送一份HTML報告,列出所有團隊/項目錯誤標(biāo)識每個錯誤由哪一位開發(fā)負責(zé)并將報告和結(jié)果上傳到TeamConfiguration通過整個流程,TeamConfigurationManager(團隊配置管理器)對測試設(shè)置和測試文件JTestArchitectEdition。有關(guān)使用命令行界面的詳細信息,請參見第155頁上的“從命令行界面(cpptestcli)自動錯誤預(yù)防ParasoftAEPMethodology是一種改進質(zhì)量提高開發(fā)生命周期效率的新方法。它基于AEP概念,此概念的 成功運行。AEP概念提倡以下五個特定過程的自動化,至于如何應(yīng)用AEPnJava編不過,如果您要從AEP的角度來解決此問題,則還應(yīng)設(shè)法確定如何預(yù)防錯誤再次出現(xiàn)。在實現(xiàn)此措施的法,在于建立一條Java代碼規(guī)范,要求每個打開連接的類必須有finalize()finally塊來關(guān)閉連接。如果代碼遵循此規(guī)則,那么錯誤就不會再AEPJava中間件內(nèi)開放式連接的錯誤源碼作為資料單獨處理出來您發(fā)現(xiàn)Java代碼缺少finally()ParasoftAEPMethodology有五條主要原則,該方法提供了一個經(jīng)過良好測試的藍圖,AEP概念:應(yīng)用行業(yè)最佳實踐來防止普遍錯誤,并建立全周期的錯誤預(yù)防基礎(chǔ)AEPAEP利用統(tǒng)計來穩(wěn)定每一個過程,AEP產(chǎn)生最大效益,必須向整個團隊提供必需的技術(shù)、體系和培訓(xùn),正確并始終AEP有關(guān)AEP其它資源的信息,請 團隊配置管理器團隊配置管理器(TCM)模塊確保了所有團隊成員都能相應(yīng)團隊的TestManager(團隊配置管理器)是單獨提供和的。本版本的JTest可與TCM2.0和更高版本配合使用,后者是作為ParasoftServerTools的一部分的。行部署之后團隊架構(gòu)設(shè)計師或團隊管理可以在某一JTest安裝上配置相應(yīng)的團隊設(shè)置和文件,然后告訴TeamConfigurationManager(團隊配置管理器)在哪里可以設(shè)置和相關(guān)的測試文件。然后,開發(fā)可將他們的機器指向TeamConfigurationManager(團隊Manager(團隊配置管理器)會對團隊的所有JTest安裝進行適當(dāng)?shù)母?。TeamConfigurationManager(團隊配置管理器TeamConfigurationManager(團隊配置管理器)JTest文TCMParasoftJTestTCM(團隊配置管理器)“JTestTCM”組報告系統(tǒng)程期間生成的度量值,GRS將這些數(shù)據(jù)點轉(zhuǎn)換成有含義的統(tǒng)計信息和儀表板,這些統(tǒng)計信程的狀態(tài)、以及開發(fā)團隊的效率。有了GRS,開發(fā)團隊就能更方便地識別代碼和編碼流程中的風(fēng)險,并對風(fēng)險進行應(yīng)對和管理,這些風(fēng)險可能會項目計劃和質(zhì)量。GRS提供了一旦將JTest配置為向GRS發(fā)送信息,開發(fā)、架構(gòu)設(shè)計師和團隊管理者就可以使用GRS儀表板,來關(guān)于質(zhì)量、進度和生產(chǎn)率的基于角色的報告。JTestGRS74“JTest服務(wù)器連接至GRS”。4Jtest基本知識點案創(chuàng)建示例工JTest預(yù)先設(shè)定了兩個Java工程的例子,你將在學(xué)習(xí)的過程中使用它們實驗?zāi)縅testExampleJPetStoreExample實驗準(zhǔn)實驗過JtestExampleJtestExampleFileNewProjectJtestJtestExampleProject4-1-1JtestExampleJtest視圖里看到JtestExamplePackageExplorer里將會JtestExample工程。JtestExampleFileNewProjectJtestJPetStoreExampleProject4-1-2JPetStoreExample4-1-3JPetStoreJPetStore的web地址:4-1-3練檢查代碼標(biāo)實驗?zāi)繉嶒灉?zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)實驗過檢查Simple類是否遵守了默認的Jtest代碼規(guī)范集PackageExplorerJtestExampleexamples.eval在里點擊TestUsing按鈕,該按鈕如圖4-2-1所示4-2-1TestUsing默認情況下,當(dāng)你點擊這個按鈕時,Jtest將執(zhí)行代碼標(biāo)準(zhǔn)靜態(tài)分析就像執(zhí)行單元測試。后面的課程解釋如何運行關(guān)注的測試和當(dāng)你點擊TestUsing按鈕時,查出究竟有哪些動作被執(zhí)行。Jtest的總結(jié)面板,Static4-2-24-2-2Static制表符。(改圖對原圖進行了拉伸Close確認Jtest視圖是可見的(這個視圖通常位于工作臺的底部。如果Jtest視圖是不可Jtest>ShowView>Jtest。JtestJtestLayout>TestedFilesandCategories。JtestSimple.javaFixStaticysisViolations分支,你將會看到被雙擊[Line#]Textlabel‘case10’maybeatypofor‘case10’結(jié)點,違例的行被加亮顯示Simple.java編輯器就會被打開,并且光標(biāo)指到接近違例的位置。map()case10case1010的JtestJavaJsp檢查Jsp的一個包是否遵從默認的Jtest代碼標(biāo)準(zhǔn)集JtestExampleexamples.jsp點擊里的TestUsing按鈕JtestCloseJtestJsp文件的代碼標(biāo)準(zhǔn)違例報告。你將看到被檢測練自己編寫一個簡單的Jsp文件,對其進試,使其包含和4.2節(jié)Jsp代碼標(biāo)準(zhǔn)的違例:”Variable‘login’isassignedbutneverread”自動修正代碼標(biāo)準(zhǔn)違輯器中和TestConfiguration框的Static選項卡中都可以看到該圖標(biāo))。實驗?zāi)縅testQuickFix實驗準(zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)的那樣)Jtest視圖下可見。實驗過SimpleJtestSimple.java>FixStaticysisViolations分支并雙擊[Line#]Textlabel‘case1’maybeatypefor‘case10’違例。違例的行被加亮顯示的Simple.java編輯器就會被打開,并且光標(biāo)指到接近違例的位置。在Jtest視圖下,[Line#]Textlabel‘case10’maybeatypefor‘case10’的違ChangethelabeltoswitchcaseJtest自動更正代碼標(biāo)準(zhǔn)的違例。Jtest將會重構(gòu)編輯器中的代碼,以便代碼不再那個代碼標(biāo)準(zhǔn)。對于這個例子,’case10’替換了’case10’文本;這種糾正避免map方法在10時產(chǎn)生不正確的行為。另外,JtestJtest視圖中清除相關(guān)的違例消息,因為現(xiàn)在的代碼不再代碼規(guī)范。FileSave點擊里的Save按鈕CtrlS練Simple.java[LineTextlabelcase1maybeatypeforcase10’違例的方法,快速修正[1]ReviewExceptions中關(guān)于Simple.java中的另外一個違例:”[line#]java.lang.StringIndexOutOfBoundsException:Stringindexoutofrange:1”。代碼標(biāo)準(zhǔn)規(guī)則說明Jtest700個內(nèi)置的規(guī)則和任意數(shù)量的用戶規(guī)則,組織創(chuàng)建這些規(guī)則用來檢驗特定工程和組織的需求,同時避免最常見的錯誤重復(fù)發(fā)生。Jtest包含的每一個代實驗?zāi)垦菔救绾螌W(xué)習(xí)關(guān)于代碼標(biāo)準(zhǔn)違例的報告實驗準(zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)的那樣)Jtest視圖下可見。實驗過在Jtest視圖中,展開mycart.jsp>Fix ysisViolations分支[Line#]Variable‘num_items’isneverusedView ation。Jtest練選擇JtestExample工程中的一個包examples.eval,點擊TestUsingJtest視圖中,和取消報告違實驗?zāi)垦菔救绾魏腿∠a標(biāo)準(zhǔn)違例實驗準(zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)的那樣)Jtest視圖下可見。實驗過GUI輸入或者在源代碼中直接定義。使用GUI控制,來報告對Simple.java代碼標(biāo)準(zhǔn)違例。Jtestmycart.jspFixStaticysisViolations于這個例子,輸入Exploringsuppressions。你在框中點擊OK后,相關(guān)的代碼為了看消息在后續(xù)的測試中如何被處理重新測試examples.jsp,就像“4.2檢查代碼標(biāo)準(zhǔn)描述的那樣。你的那個錯誤Jtest視圖下報告。Jtest>ShowView>Suppressions打開。這個視圖將會顯示下面的信息:Message:被的代碼標(biāo)準(zhǔn)消息Resource:應(yīng)用的文件InFolder:包含這個文件的文件夾。Reason:消息被的原因。User:消息的人的。為了取消消息XDelete圖標(biāo)。examples.jsp,就像“4.2Jtest視圖PackageExplorerJtestExampleexamples.suppressAllFileSuppress.java瀏覽源代碼中的代碼注釋 INTER.ITT) INTER.ITT規(guī)則將會所有在兩個注釋之間的代碼。在這種情況下,該規(guī)則將會整個文件。Example.javaPackageExplorerJtestExampleexamples.suppressExample.javaOOP.AF規(guī)則將會該注釋之后的所有代碼。練清除錯誤消實驗?zāi)縅test實驗準(zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)JtestExmapleexamples.evalSimple類(4.2檢查代碼標(biāo)準(zhǔn)描述的那樣)Jtest視圖下可見。實驗過JtestJtestShift+leftclickCtrlleftclick右鍵單擊你想刪除的錯誤消息,然后選擇Delete。選擇的錯誤消息將會被從如果你重新運行產(chǎn)生這些錯誤的測試錯誤消息將會被重告——除非你在重新運試右鍵單擊那個項,然后選擇Jtest>ClearStatic ysisTasks或者Jtest>ClearUnitTestingTasks(基于你想清除那種類型的錯誤)。練運行內(nèi)置測試配實驗?zāi)繉嶒灉?zhǔn)測試的行為(例如:靜態(tài)分析,生成測試用例,測試用例執(zhí)行建的測試工程。具體步驟參照1.實驗過SunJTestExample下的examples.evalSimple.javaSimple.javaJtest>ClearStaticysisTasks選擇Simple.java文件右擊選擇Jtest>TestUsing>Built-in>Staticysis>CodeConventionsfortheJavaProgrammingLanguagebySun。這樣就完成了一次測試。待運行完成后,點擊按鈕close關(guān)閉框。在代碼窗口可以看到用標(biāo)識出來的不符合sum公司選擇菜單Jtest>TestBuilt-In>StaticysisCodeConventionsfortheJavaProgrammingguageby選擇Static>RulesTree選擇卡就可以看到可以使用的測試配置規(guī)則??梢赃x擇一個測試規(guī)則:選擇一個可復(fù)選框所在的結(jié)點右擊選擇ViewRule 練bug,Bug,JTest可選的配置中選擇一個測試配置進行操作,并且完成練通過示例配置修改規(guī)實驗?zāi)勘締卧v述的是如何來進試配置的設(shè)置在上一單元中已經(jīng)講述了如何運用已有的配置來進試,但是那些測試配置都是JTest平臺自身默認的配置。在本單元中實驗準(zhǔn)4.14.7實驗過選擇Jtest>TestConfigurations可以看到Testconfigurations窗口User-defined選項下面有一個Exampleconfiguration選擇項。。來配置測試規(guī)則。MetricCodeDuplicateDetectionEnableRules>EnableAllQuickFix(R)BugApply按鈕。雙擊右邊 則可以按照這個配置進試。也可以參4.7中的步驟來進試練4.7bug創(chuàng)建并運行簡單的用戶自定義測試配實驗?zāi)勘締卧膬?nèi)容是如何來創(chuàng)建自己定義的測試配置實驗準(zhǔn)完成4.7,4.8中的訓(xùn)實驗過選擇Jtest>TestConfigurations可以看到Testconfigurations窗口在builtin菜單中選擇Built-in> ysis>FindUnusedCodeStatic>Rules選擇CodeDuplicationDetection打開它下面的 且選擇View/ChangeRuleParameters。在彈出的新窗口中可以修改配置參數(shù)ApplytestExample>JtestTestUsingUserDefinedFindDupli-cateandUnusedCode4.7練按照如上步驟來自定義一個測試配置。并且選擇一個被測試對象來進計算度實驗?zāi)勘締卧獙嶒灥哪康氖沁M試的度量以及對這些度量進行分析精確的測試計算度量可以幫助發(fā)現(xiàn)程序中一些不好的設(shè)計。實驗準(zhǔn)實驗過JtestExample>TestUsing>Built-in>MetricsMetricsMcCabeCyclomaticComplexitymetric我可以看到總共有50個方法,并且這些方法形復(fù)雜度最高的方法是examples.nbank.Customervalidate(int[],String)方法。通常,如果環(huán)形復(fù)雜度超過10,則應(yīng)該考慮重寫這個方法,或是對類的結(jié)構(gòu)進重新設(shè)計以使程序更好,RobertMartinAfferentCoupling結(jié)果為零說明除了包中的類為沒有其他的類來這些類。也就是說,可以安全的在考慮對這些被測試程序進行修改的時候要考慮到修改這些包的地方。中的值的變化。這個度量值各個有自身的意義。例如:NumberofParameters的值為10表示在這個類有10個參數(shù)Customer(String,String)構(gòu)造函數(shù)的參數(shù)數(shù)目5個則要考慮修改該方法的設(shè)計。4.9如上圖打開可選項Metric選擇ReporttasksformetricsvaluesoutofacceptableNumberofStaticMethodsView/ChangeMetricApplyJtestExample>>>練測試程序來進試生成、執(zhí)行和擴展Junit測試用Jtest能自動的生成和執(zhí)行用來捕捉運行時異常的JUnit測試用例以及盡可能完整的運用實驗?zāi)繉嶒灉?zhǔn)Jtest實驗過JtestJUnitJtestDeleteAllJtestExample>examples.eval>Simple.javainthePackageExporerTestUsing默認的,當(dāng)你點擊這個按鈕時,Jtest執(zhí)行靜態(tài)分析以及單元測試。前面的課程關(guān)Jtest中。單元測試執(zhí)行策略顯示在Execution中Close注意Jtest將生成的JUnit測試類文件添加到JtestExample.jtest項目中的examples.eval使用測試文件驗證Jtest視圖并通過打開Jtest視圖下右側(cè)頂部的下拉菜單的 局,然后選擇Layout>TestedFilesandCategories。Jtest在Jtest 視圖中,擴充simple.java>Review java.lang.StringindexOutOfBoundsException:Stringindexoutofrange消息。雙擊堆棧元素,查看失敗的代碼。這揭示了:當(dāng)“0”和“00”被作為startsWithstrmatchfor循環(huán)中調(diào)用str.charAt(i)strmatch得長度。to"FixUnitTestProblems".異常將從復(fù)查未驗證的單元測試錯誤/失敗任務(wù)中被移除并且添加到修復(fù)單元測試問題任務(wù)中。Jtest還將用一個//verified注釋替換來自相關(guān)測試用例的//unverified注釋。ifstartsWith()方法來保護代碼免于異常;修改的代碼如publicstaticbooleanstartsWith(Stringstr,Stringmatch){if(str.length()<match.length()){return}for(inti=0;i<match.length();++i)if(str.charAt(i)!=match.charAt(i))returnfalse;return}這個方法始終檢查字符串的長度以保證不會發(fā)生File>Save復(fù)查每一個列在Jtest視圖的ReviewUnitTest es任務(wù) 右擊ReviewUnitTest es節(jié)點,然后從快捷方式中選擇VerifyAll。打開被測文件的編輯器(Simple.java)。Jtest使用左邊綠色的欄來表明相關(guān)的路線被100%的覆蓋率,所以對這個文件沒有紫色的欄。Jtest中的覆蓋視圖(Jtest>ShowView>Coverage)。覆蓋視圖顯示出針publicvoidtestMap(){assertTrue(Simple.map(34)==-}File>Save打開TestUsing下 然后 練Jtest創(chuàng)建并使用Objects提高測試覆實驗?zāi)繉嶒灉?zhǔn)Jtest實驗過打開TestUsing下 75%string_message沒有被初始化。field_messageJtest>ShowView>ObjectRepository在對象庫中,右擊JtestExample,然后從 快捷方式中選擇New>NewJavaProjectJtestExampleTypeexamples.repository.MessageBrowse按鈕瀏NameMessage擴展對象編輯器樹并且雙擊標(biāo)為Message()的最終節(jié)點。這個節(jié)點變成一個下 從下 File>Save修改生成和運行單元測試的測試配置以生成和執(zhí)行新的測試用例,如下通過打開測試配置框創(chuàng)建配置的一個副本右擊內(nèi)置的GenerateandRunUnitTests節(jié)點,然后從 快捷方式中選擇Duplicate。GenerateandRunUnitTests打開Generation>Filter,然后選擇Generatetestsforcode>Withup-to-datetestclasses選項。examples.repositoryTestUsing下拉,使用新的用戶定義的生成和運試配置重新運試實例,然后選擇TestUsing>User-defined>GenerateandRunUnitTests。練使用初始化信息擴展測試用Jtest測試類可以被擴展,在運試之前初始化其他的類實驗?zāi)繉嶒灉?zhǔn)實驗過選擇File>New>Project,然后完成框來創(chuàng)建一個名為Example的新Java項目右擊Example項目的包瀏覽節(jié)點,選擇New>Class,然后完成框以添加一個新TestMeJava類。 TestMe.javabeginpublicclassTestMe{publicstaticStringget(intindex){returnGlobalVectet(index);}} 右擊Example項目的包瀏覽節(jié)點,選擇New>Class,然后完成框,在同一個包VectorJava類。 importjava.util.Vector;classGlobalVector{staticStringget(intindex)if(index<0||index>=_vector.size())returnnull;}staticvoidinitialize(intsize)_vector=newVectorfor(inti=0;i<size;}} 通過選擇Example項目的包瀏覽節(jié)點,建立Examples項目,然后選擇Project>BuildJtest 快捷方式中選擇Duplicate。Execution>Severitiestab45。通過打開TestUsingTestUsing>User-defined>GenerateandRunUnitTests-ShowNPE顯示在Jtest視。GlobalVectorTestMe類被測通過打開包瀏覽器中Example.jtest項目,打開生成的TestMeTest.java測試類,打開examples.initializeexamples.initialize分支中的TestMeTest.java將setup()方法放到類的末尾。在執(zhí)試用例前,說明初始化的代碼需要被Example修改生成和運行單元測試-NPE測試配置來生成和執(zhí)行類的新的測試用例,如打開測試配置框并選擇User-defined>GenerateandRunUnitTestsShow打開Generation>Filter,然后選擇Generatetestsforcode>Withup-to-datetestclasses選項。TestMe.java上的新的用戶定義的生成和運行單元測試配置。注意到空指針異練Jtest為測試實例方法實例化一個如果想測試a)一個不能通過調(diào)用公共的構(gòu)造器來初始化的類或b)在測試運行之前需setUp()方法。置,Jtest不能完全的測試這些類的實例方法因為它只使用給定的構(gòu)造器來實例化類。為了setUp()方法,增加自動生Jtest有時候可能自動生成針對類的合適的對象;然而,有時,Jtest可能無法找到正確Jtest不能自動的生成一個合適的對象,應(yīng)該修改測試類的setUp()給定類的實例方法時,Jtest該使用什么值。實驗?zāi)繉嶒灉?zhǔn)Jtest實驗過打開TestUsing下拉 沒有達到JtestExample.jtestJtestJtest生成一個測試用例,用給定的構(gòu)造器創(chuàng)建類的一個實例。它不自動Jtest的自動生成測試工具不能方法。如果想讓Jtest完全測試那些實例方法,則需要在測試實例方JestExample.jtestGuestbookobject=newGuestbook();Guestbook.java運行"Built-in>GenerateandRunUnitTests"CloseJtest92%Guestbook類的每一個實例方法被調(diào)用之前,Jtest使用了的對象。練在 試實例方法之前,建立一個類并將其進行初始化執(zhí)行回歸測實驗?zāi)縅est實驗準(zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)實驗過JtestsimpleJtestDeleteAllPackageExplorerJtestExampleexamples.eval>TestUsingTestUsing>Built-in>UnitTesting>MaintainableRegressionTestSuite。simple.javaJtestExample工程的Packageexample.evalexample.evalSimple.javaadd()中的‘+’改成‘-returni1-Simple.javaJtestExample>examples.eval>Simple.java運行回歸測試(JtestExample.rtest工程中)打開TestUsing下拉菜單TestUsing>Built-in>UnitTesting>RunRegressionTests。QuickFix(R)選項能夠標(biāo)記這些新的結(jié)果作為預(yù)期結(jié)果:aReviewAssertionFailureChangeexpectedvalue,確認新的值是預(yù)期的結(jié)果。Jtest會修改相關(guān)的測試用例斷言。b、對于剩余的斷言重復(fù)以上的步驟cSimple.javaFixUnitTest問題任務(wù)消息。練在執(zhí)試用的過程中檢測內(nèi)存實驗?zāi)繉嶒灉?zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)實驗過檢查庫類(JtestExampleJeaks包)a、打開TestConfiguration框通過選擇Jtest>TestbExampleConfiguration測試配置類。c、打開Execution>Options。dDetectmemoryleaks2JtestExample>examples.leaksLibrary.java3TestUsing4Library.java>FixUnitTestProblemsLineMemoryLeak:
或在Testmega-bytespercall來講,內(nèi)存泄漏時因為每次用同樣的參數(shù)調(diào)用addBook()方法,代碼第36行分配的內(nèi)存將不會被。5、通過取消(和equal(方法的新實現(xiàn)來內(nèi)存泄漏再次出現(xiàn)這些方法能夠保證同樣的書重復(fù)的條目不會在館中出現(xiàn)?,F(xiàn)在,如果k()被相同的參數(shù)多次調(diào)用,這個調(diào)用能夠?qū)е轮挥幸粋€Book對象不能回收(kaddk()調(diào)用)練通過運行一個應(yīng)用程序生成功能測試用實驗?zāi)繉嶒灉?zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)。JPetStore工程(4.1創(chuàng)建示例工程中描述的那樣)。JtestTracer實驗過在輸出文件中記錄應(yīng)用程序行為,然后從文件測試用為了對了一個簡單獨立的應(yīng)用程序通過JtestTracer記錄輸出文件,在Eclipse中需1RunnableStackMachineaJtestPackageExplorerJtestExample>代碼,然后選擇RunAs>Run。Run框打開b、在Run框中選擇JavaApplication,然后選擇左上角的New按鈕cName域中填寫應(yīng)用程序的名字(RunnableStackMachine)dMainclassSearchRunnableStackMachine。eApplyClose。2TracerJtest>ShowView>3Packageprefixestotrace域中,點擊New選擇JtestExample工程并且examples.stackmachine4LaunchconfigurationtotraceChooseRunnableStackMachine啟5、選擇Starttracingimmedia ytofile(如果沒有被選擇,并且指定你想將記錄存在)RunnableStackMachine.out7a10壓棧,通過在Input域中輸入10,然后點擊PUSH按鈕b30壓棧,通過在Input域中輸入30,然后點擊PUSH按鈕cGUI上的+按鈕來加上兩個值。d80Input80PUSHeGUI上的/f50Input50PUSHgGUIxh505Input50PUSH5i50Input50POPJtestTracer1、在任何一臺有Jtest和Tracer的機器(可能不一定是相同的機器運行應(yīng)用程序,或者甚至是相同的平臺[Linux,Windows,等等],作為運行應(yīng)用程序的機器,開始2、Built-in>UnitTesting>GenerateandRunfromMonitoring的測試配置如下所示aJtest>TestConfigurations設(shè)置測試配置或者在TestUsing工具條中在下TestConfigurations。User-Defined的分支當(dāng)中。cGenerateandRunfromMonitoringfromOut-putfile.。3aUser-Defined>GenerateandRunfromMonitoring-fromOutputfile的測試b、在Generation>Inputs中,選擇ReadingfromaPre-recordedfile選項4、在PackageExplorer中,選擇 StackMachine,FifoStackachine,和LifoStack-Machine(所有在JtestExample工程中的examples.stackmachine包。5、通過"User-DefinedGenerateandRunfromMonitoringfromOutputfile6當(dāng)Jtest打開OpenPre-recordedFile框表明在程序中指定輸出文件的位置aPackageExplorerJtestExample.mtestbExamples.stackmachine注意在當(dāng)運行應(yīng)用程序執(zhí)行的步驟,在生成測試用例階段獲。通過連接運行的應(yīng)用程序來執(zhí)行JtestJPetStore1JPetStore2Jtest>ShowView>Tracer.TracerTracerTracer配置盡可能的通過收集關(guān)于被測工程和的信息然后運行Tracer來構(gòu)建合適的VM參數(shù)。3PackageprefixestotraceJPetStorecom.ibatis.jpetstoreandmon.util包4Listenforasignaltostarttracingonport,65435DisplayVMArgumentsVM的參數(shù),本來應(yīng)該被添加到應(yīng)用程序中。如果你不從Eclipse啟動應(yīng)用程序,你拷貝呈現(xiàn)的參數(shù),將粘貼到應(yīng)用程序的開始6LaunchConfigurationtotraceChooseJpetStoreTomcat5.5server啟動配置。aJPetStoreRunAS>Runb、在Run框中,選擇JavaApplication>StartSQLServer。cRun按鈕。8TracerLaunchTracerServerJPetStore應(yīng)用程序已經(jīng)被部署。9GenerateandRunfromMonitoringaGenerateandRunfromMonitoring的一個副本配置,通過打開TestConfiguration框,右擊Built-in>UnitTesting>GenerateandRunfromMonitoringDuplicate。bUser-DefinedGenerateandRunfromMonitoringcGenerateandRunfromMonitoringConnectingtoRunningd、打開Generation>Inputs,選擇ConnectingtoaRunningApplication選項10、選擇JPetStore>src> 11、以"User-Defined>GenerateandRunfromMonitoring-ConnectingtoRunning12JtestOK13、當(dāng)你已經(jīng)準(zhǔn)備好開始記錄測試用例生成的數(shù)據(jù)時,在Jtest監(jiān)視控制器框中點Start。14、打開瀏覽器與應(yīng)用程序進行交互。Jtest將為你執(zhí)行15(例如當(dāng)你對測試執(zhí)行的路徑感到滿意時監(jiān)視控制器框中點擊Finish。16、在.mtest在測試工程中的對象在開始前被創(chuàng)建了(step13)但是在完成以前再被,這些對象在ObjectRepository中能捉成快照并且通過單元測試能被修改。在ObjectRepository中被創(chuàng)建對象能被觀察到。練創(chuàng)建并使用參數(shù)化測試用實驗?zāi)縅Unit實驗準(zhǔn)JtestExample工程(4.1創(chuàng)建示例工程中描述的那樣)。測試用例參數(shù)化。實驗過Account類用戶定義的測試用例(JtestExample包中1JtestExample>examples.nbank>AccountTest.java.的可用2、通過選擇JtestExample>examples.nbank>Account.java,運試,然后運行"RunUnittestApply(),然后選擇Jtest>ExtractParameterizedTestCase。bGenerateExcelspreadsheetwithheuristicsandcornercasevalues.Jtest生成cornerExcel電子表格。c、點擊Next。OpenWith>SystemEditor。6JtestExample>examples.nbank>Account.java運行參數(shù)化測試,然后運行”RunUnitTests”測試配置。相似地,傳遞nulls 首先,在第8行,null作為名字來傳遞,將NullPointerException1818行,nullNullPointerExceptionCustomerequals方法時空指針異常,因為field_ssn是空。如果去查看代碼,會發(fā)現(xiàn)field_ssn被初nullCustomer它的值仍然為null,在equals方法中解時導(dǎo)致空指針異常。這是代碼中的一個JtestBugDetective或者自動化的單元測試發(fā)現(xiàn)。JUnit測試用例Excel電子表格手動添加測試數(shù)據(jù),Jtest指向你自己的測試數(shù)據(jù)。為了參數(shù)化測試方法,在Excel文件中保存原始測試值,然后為功能測試指外1Jtest視圖的PackageExplorer中,選擇JtestExample>examples.bank>BankAccount.java源文件。2、點擊TestUsing下拉菜單,然后選擇TestUsing>Built-in>DemoConfiguration。3、在完成測試后,在Package 視圖中定位JtestJtest>ExtractParameterizedTestCase。5GenerateExcelspreadsheetwithoriginaltestcasevaluesonlyFinish。JtesttestApply2方法里suiteApply2testApply2方法輸入BankAccount.xls里面的數(shù)據(jù),這個文件在JtestExample.jtest工程下的examples.bank包里。6JtestExample.jtest>BankAccount.xlsExcel(50,1,100,149,1(50,1,100,150,18.xls9JtestViewJtestview。這樣使你能夠關(guān)注下一次測試的10BankAccounta、在JtestPackageExplorerJtestExample>b、點擊TestUsing下拉菜單,然后選擇TestUsing>Built-in>Demo11Jtestview.xlsCSV在Jtest中的PackageExplorer,選擇JtestExample>examples.bank>TestUsingTestUsingBuilt-in>DemoConfigurationExplorerpublicvoidtestApply0(intinitial,intdeposit,intexpected){BankAccountaccount=newBankAccount(0,initial);Deposittransaction=newDeposit(deposit);}publicstaticTestsuiteApply0()throwsExceptionTesttest=PT.getCSVInputTestSuite(BankAccountTest.class,"testApply0",newFile("examples\\bank\\deposit.csv"),true,1);return}1Source>anizeImports。23、將deposit.csv文件從JtestExample>examples.bank到JtestExample.jtest>4BankAccountJtestPackageExplorerJtestExample>TestUsingTestUsingBuilt-in>Demo5JtestBankAcount·注意從csv1BankAccountTest.java中:publicstaticTestsuiteApply01()throwsException{{newInteger(1),new{newInteger(3),newInteger{newInteger(5),newTabularInputGeneratenerator=newTabularInputGenerator(newreturnne }3BankAccount1BankAccounttTest.java中:publicstaticTestsuiteApply02()throwsException{{newInteger(1),newIParameterValueGeneratorparameter2=newObjectGenerator(newInteger{newInteger(3),newInteger{newInteger(5),newInteger(6)});CombinatorialInputGeneratenerator=newIParameterValueGenerator[]{parameter1,parameter2,parameter3});generator,1);}anizeImports。BankAccount練生成并執(zhí)行仙人掌測試(Cactustaglibs,和servletfilters)自動生成仙人掌測試,然后在應(yīng)用程序容器執(zhí)行這些測試去模擬服務(wù)器執(zhí)行。這就允許較早的,在開發(fā)階段就把問題出來。否則到了QA階段,部署,或者生產(chǎn)階段,修復(fù)這些bug會更加和耗時。在開發(fā)的生命周期的后期,這些測試又可實驗?zāi)縅avaEE實驗準(zhǔn)實驗過StrutsStrutsclassPackageExplorer單擊TestUsingTestUsing>Built-in>UnitTesting>GenerateandRunIn-container.ServerSelectiondialogJPetStoreTomcat5.5Server生成和執(zhí)行完成以后,統(tǒng)計報告會報告5個測試用例生成,100%的覆蓋率達到。注意BeanActionTest.java(在JPetStore.ctest)servletunit.struts.CactusStrutsTestCase.Jtest使用一個容器內(nèi)置的方式去運行ServletAction對象的執(zhí)行就像他們真的是通過StrutsActionServletNon-JavaEEJtest能夠生成和執(zhí)行容器內(nèi)的測試對任何類——甚至是和容器沒有任何交互的。Non-JavaEE生成和執(zhí)行仙人掌測試: 單擊TestUsingTestUsing>Built-in>UnitTesting>GenerateandRunIn-container.ServerSelectiondialogJPetStoreTomcat5.5Server生成的測試類,OrderServiceTest.java(在 項目里),擴.apache.cactus.ServletTestCase.擴展這個類允許Jtest使用一個容器內(nèi)置的方式去運行ServletSpringSpringJPetStoreJPetStore.ctest項目JPetStoreSpring在PackageExplorer選擇RunIn-container.ServerSelectiondialogJPetStoreTomcat5.5ServerJtest9100%注意到這些生成的測試類,ViewProductControllerTest.java(JPetStore.ctest項目中,擴展Cactus框架類ServletTestCase.在編輯器中打開類然后檢查創(chuàng)建的方某些對方法handleRequest的測試方法通過異常給HttpServletRequest傳空值和HttpServletRequestModelandView對象的斷言。在某些用例中,Jtest使用了插樁雖然測試用例是運行在容器中的。這允許他code的值。當(dāng)然,不用插樁直接在容器中運TestConfiguration中設(shè)置取消創(chuàng)建插樁。練使用BugDectective徑——通常路徑能跨度多種方法,類和包——這樣會導(dǎo)致一些運行時bug比如NullPointException,內(nèi)存泄漏,SQL注入,或者其他的安全隱患。由于這些分析包括了確認的方法或者觀察是很的。些單元測試中的異常是否會在實際的程序路徑中。使用BugDetective需要一個可選的BugDetective的實
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 夫妻共同財產(chǎn)合同協(xié)議模板
- 地平墻工程合同協(xié)議書范本
- 年產(chǎn)50萬噸粉礦成球及燒結(jié)項目可行性研究報告寫作模板-拿地申報
- 2026屆廣東湛江市大成中學(xué)化學(xué)高三第一學(xué)期期末監(jiān)測試題含解析
- 安徽省馬鞍山含山2026屆化學(xué)高一第一學(xué)期期末監(jiān)測模擬試題含解析
- 2026屆福建省永春三中高三化學(xué)第一學(xué)期期中達標(biāo)檢測試題含解析
- 2026屆廣東省深圳四校發(fā)展聯(lián)盟體化學(xué)高一上期中質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 2026屆浙江省溫州市“十五校聯(lián)合體”化學(xué)高三上期末質(zhì)量檢測試題含解析
- 巴中市重點中學(xué)2026屆化學(xué)高三第一學(xué)期期末質(zhì)量檢測試題含解析
- 教育大數(shù)據(jù)在學(xué)生心理健康發(fā)展中的應(yīng)用研究
- 技術(shù)服務(wù)規(guī)范
- 學(xué)習(xí)風(fēng)格量表
- 皮瓣移植術(shù)后移植(再植)組織的局部觀察課件
- 代付農(nóng)民工工資委托付款書(模板)
- 蒂森克虜伯電梯 MC2-B控制系統(tǒng)用戶手冊
- 奶油的加工工藝
- 建設(shè)工程五方責(zé)任主體法定代表人授權(quán)書、項目負責(zé)人質(zhì)量終身責(zé)任承諾書
- 寶龍集團酒店盈虧平衡點及回報期測算表
- 只鐵綜合戰(zhàn)法系列之一
- 引線鍵合詳解ppt課件
- 教育部《普通高等學(xué)校本科專業(yè)目錄(2012年)》新舊專業(yè)對照表
評論
0/150
提交評論