




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章簡 歡迎 聯系Parasoft技術支 第2章安裝和Windows單機安 Windows插件安 Linux/Solaris單機安 Linux/Solaris插件安 Mac安 第3章概念和術 Suppressions( BugDetective靜態分 單元測 樁函 測試配 第4章Jtest基本知識點案 和取消報告違 生成、執行和擴展Junit測試用 創建并使用Objects提高測試覆 在執試用的過程中檢測內存 生成并執行仙人掌測試(Cactus 使用 使用Jtest發現安全性第5章 查找錯 安全分析使用Jtest服務 測試EJBs和其他JavaEE組 確保代碼與項目/組/機構的一 避免常見的Java編碼錯 鑒別不可的代碼行 仙人掌(Cactus)和HTTPUnit測試用例覆蓋范 測試質量和記錄設定和質量目 1歡迎ParasoftJtestJavaEE、SOA、WebJava應用程序的一個綜合Java測試產品。不論是團隊正在嘗試建立高質量的新代碼,還是基于遺留代碼的擴展,并且不影響現有的功能,JtestJava代碼安裝他們Jtest優化開發資源——自動大約80%的編碼問題使得開發者能夠減少在逐行檢和調試代碼上花費的時間,從而使開發者的精力集中在設計、算法上。序的調試難度(SOA/WebJavaEE的應用)對于Java代碼質量和可讀性具備直觀可視化效果——通過對代碼質量和預期目JavaSOA、WebservicesWeb應用程序。JtestParasoftJtestParasoftGRSWeb的數據提取功能,允許團隊基于Jtest的結果和其他關鍵過程指標項目狀態和傾向。開開放式源碼認(該解釋了幾種聯系技術支持的方法、以及如何準備和發送“支持歸檔文件”,以幫獲取實時的支持(僅限Jtest可回答您的問題。這一實時支持允許您實時地與Jtest團隊交談,必要時還可進行桌面共享。要接收實時支持,請轉至 /jsp/pr/live_experts.jsp目前這一實時技術支持功能僅支持Windows操作系統。使用JtestParasoft的Jtest是一個活躍的會議場所,您可以在此與其它用戶和PARASOFT團隊成員交談,從他們那里學到知識。您可以在如下可以貼出您的問題, 可通過、電子郵件或傳真總:(888)305-0041(626)256-法:(331)648926德:+49894613323-英:+44(0)1923亞:+88626636-其它地參見 2裝和Windows單機安這個解釋如何在Windows系統中安裝Jtest的獨立版本(Jtest基于Eclipse框架)安裝準OperatingWindows2000,XP,2003,orSunMicrosystemsJRE1.3orhigherNotethattheIBMJREsJtest.See“PreventingswiththeIBMJRE”,page734fordetailsandIn?PentiumIVSingleCore3.0GHZSVGA(1024x768)displayminimum; 1GBRAMminimum;2GBRAMAmouseorternative安WindowsWindowsExplorer中,定位并雙擊自解壓文件readmeNext在“InstallationLocation(安裝位置)”框中輸入所需的安裝,然后單擊“Next(下一步)”。然后,Jtest將開始文件。帶有進度指示器的框會打單擊“OK(確定)”按鈕,通知框就關閉。Jtest將安裝在指定的安裝。Jtest的工作將會被安裝到“C:\sandSettings\<username>\ApplicationData\Parasoft\jtest\workspace”啟Jtest8.3WindowsStartPrograms>Parasoft>JtestlincenseWindows插件安這個主要解釋如何在Windows系統上安裝Jtest的插件到Eclipse、ApplicationDeveloperJbuilder2007。安裝準安WindowsWindowsExplorer中,定位并雙擊自解壓文件readmeNext在“InstallationLocation(安裝位置)”框中輸入所需的安 ,然后單 Eclipse安裝OK閉程序的框。Jtest將開始文件。帶有進度指示器的框會打開,指示啟通過雙擊合適的桌面圖標或從Windows 選擇合適的菜 通過選擇Window>Open>Other打開Jtest視圖,然后在選擇視圖的JtestJtest。如果 在IDE的里不可見,選擇Window>Reset。如 仍然不可見,確保你使用的是的Jtest版本,你可以通過選擇HelpSoftwareUpdatesPendingUpdates和安裝任何掛起的更新。Jtestlincense。Linux/Solaris單機安這個主要解釋如何在Linux或Solaris系統上安裝Jtest的插件到Eclipse、ApplicationDeveloperJbuilder2007。安裝準安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系統上安裝Jtest的插件到Eclipse、ApplicationDeveloperJbuilder2007。安裝準安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安 下創建的 來卸載運IDE(Eclipse、ApplicationDeveloperJbuilder2007)通過選擇Window>Open>Other打開Jtest視圖,然后在選擇視圖的JtestJtest。如果 在IDE的里不可見,選擇Window>Reset。如 仍然不可見,確保你使用的是的Jtest版本,你可以通過選擇HelpSoftwareUpdatesPendingUpdates和安裝任何掛起的更新。Jtestlincense。Mac安這個主要解釋如何在Mac系統上安裝Jtest的插件到Eclipse的工作副本中安裝準安MacEclipse3.4Jtest:Eclipse3.3和更早版本Eclipse3.3HelpSoftwareUpdateFindandInstall,8HelpSoftwareUpdateEclipseupdateAvailableSoftwareAddSiteArchivezipOpenOKEclipseolderUpdateManagerLaunchSearchfornewfeaturestoinstallNextNewArchivedSitezipOpenOKFinish接受證協議,然后點擊Next如果你想為Jtest指定一個客戶安 ,點擊ChangeLocation,然后輸入期望。默認情況下,Jtest將安裝到Eclipse安裝 3JtestEclipseJtest程序文件將解壓到第13步指定 啟通過選擇Window>Open>Other打開Jtest視圖,然后在選擇視圖的JtestJtest。如果Jtest 在IDE的里不可見,選擇Window>Reset。注意:在使用Jtest之前你必須安裝lincense。 因為安裝Jtest可能幫助增加Eclipse的內存設置通過使用下面令改變-vmargs–Xmx1024m的參數·在Mac系統上,符號測試生成是不可用的。JUnit測試用例將會按默認輸入生成。的方法是在其他平臺上生成JUnit測試用例,同意代碼控制,然后檢查并在MacJUnit測試。本解釋如何從GUI設置信息在針對命令行模式進行的Jtest安裝上,您可以在一個局部設置文件中定義權限信息,然后當您在命令行模式下運行Jtest時,調用該文件。使用與機器綁定的要安裝與機器綁定的證>”在左邊窗格中選擇“License(證)”類別聯系您的Parasoft代表,接收證。您需要提供在“LocalLicense(本地許在,請致電1- 術支持”中提供的信息。如果您擁有服務器證,且想要不打開GUI就獲得機器標識,請從命令行運行cpptestcli。輸出消息中將報告機器標識。 證首選項頁面的“LocalLicense(本地證)”部分,輸入您的 單擊“Apply(應用)”。證首選項頁面將顯示您被使用的功能、以單擊“OK(確定)”,以設置并保存您的證Parasoft在在不是所有用戶都能對Jtest進行寫入操作的情況下設證如果設置license的用戶沒有對Jtest安 ParasoftLicenseServer(分開提供)的情況下安 證,則可以選擇“Jtest>Preferences(Jtest>首選項)”,打開“Preferences(首選項)”框在左邊窗格中選擇“License(證)”類別選擇“UseLicenseServer(使用LicenseServer)”選項。證首選項頁面的證 務器)”“Set(設置)”“Hostname(主機名)”字段手動輸入組織的LicenseServer(IP地址“Portnumber(端口)”字段輸入組織的LicenseServer端口。“Edition(版本)”Jtest安裝使用的ProfessionalEdition:包含代碼規范靜態分析、單元測試和支持ServerEdition:包含代碼規范靜態分析、RuleWizard(自定義規則創建、ProfessionalEditionIT單元測試、BugDetective和命令行界面。CustomEdition:包含自定義要求。如果您在使用自定義證,請選擇此選項,然后單擊“Choose(選擇)”按鈕,并指定您想將哪些可用“OK(確定)”,以設置并保存您的LicenseServer Parasoft以獲取這些 技技Jtest”項。要重新激 證,則禁用“StartDeactivated(開始停用)”選項在停用 證的情況下·會清除Jtest視圖,并顯示一條消息,指 證不可用·Jtest操作(例如,測試用例生成或測試用例執 JtestLicenseServer ·Jtest視圖,并會顯示錯誤(如果可用3念和術代碼規范靜態分Jtest通過靜態地分析代碼,來執行代碼規范靜態分析,以檢查與指定代碼規范規則的通過改進類設計和代碼組織,而改進代碼可性Jtest已預先配置了內建的規則集,以執行代碼規范靜態分析。缺省情況下,大多數代TestConfigurations(測試配置)中啟用的規則,已顯示出能快速而顯著地提如需了解Jtest代碼標準規則方面的信息,請選擇“Jtest>Help(Jtest>幫助)”,RulesJtest還能檢查用戶以RuleWizard模塊所設計的任意數量自定義規則。有了Suppressions(Suppressions()用來防止Jtest對額外出現的特定靜態分析任務進行報告(可能會為單個規則報告多項任務。消息會發送到專門的Suppressions()視圖,而非Jtest視圖;這就能讓你按需要那些違例,而把主要結果區域集中于其它錯誤。當您通常想要遵循某條規則、但決定在少數異常情況下忽略該規則時,請使用suppressions()。通過使用suppressions,您可以繼續檢查代碼是否遵循該規則,而不會息,那么您建議修改TestConfigurations(測試配置TestConfigurationSuppressions()定義了哪些靜態分析結果應在Jtest視圖和報告中可見這就意味著,分析期間在TestConfiguration中所選擇的規則會接受檢查,但匹配技技)是基于消息,而非基于規則。)態分析任務進行報告(例如,修正發生在Y行的X規則的違例但 對某條規則的所有違例進行報告RuleWizard(ArchitectandServeredition中提供)Java代碼語法、JSP代碼和代碼風格問題創建自定義的代碼規范規則。JtestRuleWizard中創RuleWizardJtestLaunchRuleWizard(Jtest>RuleWizard)TestConfigurationsStatic(靜態)New(新建)”Guide(通過在RuleWizardGUI中選擇“Help> 重重BugDetectiveServerEdition(服務器版漏、SQL注入和其他安全問題。BugDetective“可疑點”,開始分析正在測試的源碼。可疑點是潛在的錯誤點。這些可疑點在BugDetective規則中被定義。只要識別了可疑點,BugDetective就導致該可疑點的可能執行路徑,并檢查是否有任何確實BugDetective規則的路徑存在。如果找到了這樣的路徑,就報告一個違例。“除數為零”情形的規則就規定,任何使用了"/""%"運算符的點除”違例的描述就包含這樣的注釋,描述哪些變量、在流路徑的哪一點包含null值為使分析過程更靈活、更適合于項目的獨特要求,可以參數化某些規則。因此,BugDetectiveAPI使用相關的違例。通過使用BugDetective,開發團隊可以獲得以下關鍵好處:Performmorecomprehensivetestingwithexistingresources(使用現有資源執行更綜合的測試:BugDetective對其它測試技術進行了補充,允許您發現一些問題,現這些問題。BugDetective程序中各種分支的可能性,提供了通過傳統測試很難達到的路徑覆蓋率水平。因此,BugDetective常能識別一些處理罕見情況時出Automaticallyidentifybugsthatpassthroughmultipleunits(自動識別通過了多個:誤。這很關鍵。不過,大多數開發在已執行了徹底的單元級別測試、糾正了所有明顯的問題、集成了代碼之后,就會遇到諸如空指針解除之類的問題。BugDetectiveBugDetectiveBugDetective報告例如,BugDetectivestrlen,null值:intstrlen(string{return} FindAPImisuses(查找API誤用APIAPI1trueAPI2APInull。通過執行過程間分析,BugDetective可以此類API使用中的不一致性。單元測數。單元測試通常由開發在項目開發周期內執行,而不是在QA階段進行。通過使用Jtest可將這些任務自動化,以使得單元測試更有效率,更具一致性。,Jtest可以執行上述所有類型的單元測試;可以自定義所執試的級別和范圍,以便當您運行Jtest自動生成的測試用例時,請執行異常測試。此類測試可意料之外的因此必要時,您可能會想要擴展自動生成的測試用例,以增強代碼覆蓋率。Jtest可測量測,它被分配了但在測試結束時回收器沒有銷毀該對象,則該對象被認為是的。每一Jtest確定發生,它報告三次測試執行中最小的和標記哪些內存被分配的行的位置。,測試用例生不過,編寫測試是一項耗時的工作,如果不仔細就可能會遺漏重要的情況。Jtest提供的單元測試支持,可幫助開發和測試非常快速地創建良好的單元測試。Jtest之所Jtest自動生成大量測試用例,這些測試用例會試圖執行代碼中的所有不同路徑,然后x射JtestJavaJtest中運CC++源碼來實現和保存(所用語言取決于要測試的原始源碼。這些測試用例使用與通用的CppUnit格式類似的格式。C++test的測試提供了比CppUnitC代碼、并在測試框架內提供對私有和保護成員數據以及成現有CppUnit測試用例可以導入到C++test中,與自動生成的測試用例配合使用。可開發,歷來是單元測試過程中最耗時的部分。通過使用Jtest,您無需編寫任何代碼以生成方法的擴展/·它使您能夠在完成類的編寫或修改之后,立即生成和執試用例。這有助于您找·它通過自動生成必需的測試用例范圍和類型,使得快速徹底的可靠性測試成為可能,這是通過手動設計測試用例所無法達到的。Jtest會試圖創建測試用例,執行所測試的全部方法的各種可能分支。例如,如果方法包含一個條件語句(例如if塊,Jtest會試圖生成測試用例,以測試if語句的true和false結果。樁函測試配TestConfiguration(測試配置)JTest來運行的測試方案。每次JTest在GUI中或從命令行界面運試時,它都使用指定的TestConfiguration(TestConfigurationDefaultTest(缺省的測試配置。TestConfiguration測試的類型(靜態分析、測試用例生成、測試用例執行等每個測試的范圍(要覆蓋哪些行、要使用什么截止日期等JTest包含了一組預先配置好的“內建”的TestConfigurations,代表了最常見的測試方這些配置進行進一步的自定義用戶定義的TestConfiguration可以放在“用戶定義的”類別或“團隊”類別中。用戶定義的Test 在本地機器上,可用于本地JTest裝執行的所有測試團隊的TestConfiguration Managr 134“創建自定義的測試配置”TestConfiguration的命令行界面JTest令行界面(cpptestcli)允許您從命令行ss執行靜態分析和單元測試,允許您從諸如s 、make和Ant之類的自動構建實用程序中運行JTest。命令行模式可用于JTest的ServerEdition(服務器版。(GRS(TCM,HTMLXML(報告應發送給誰、報告應如何做選項卡、應使用什么郵件服務器和域等、TCM設置、GRSEdition發工作站上安裝一套JTest(DeveloperEdition,在架構設計師機器上安裝一套(ArchitectEdition,在團隊構建機器或另一臺團隊機器上安裝一套TeamConfiguration檢查代碼和測試用例,并輸入到源碼控制器。每天晚上,cpptestcli在團隊機器上運行,以JTestGUI,以便進行錯誤檢查和糾正。另外,JTestPARASOFTGRS組報告系統,用電子郵件給每個開發發送一份HTML報告,該報告僅包含與此名開發相關的錯誤/結果,用電子郵件給團隊管理發送一份HTML報告,列出所有團隊/項目錯誤標識每個錯誤由哪一位開發負責并將報告和結果上傳到TeamConfiguration通過整個流程,TeamConfigurationManager(團隊配置管理器)對測試設置和測試文件JTestArchitectEdition。有關使用命令行界面的詳細信息,請參見第155頁上的“從命令行界面(cpptestcli)自動錯誤預防ParasoftAEPMethodology是一種改進質量提高開發生命周期效率的新方法。它基于AEP概念,此概念的 成功運行。AEP概念提倡以下五個特定過程的自動化,至于如何應用AEPnJava編不過,如果您要從AEP的角度來解決此問題,則還應設法確定如何預防錯誤再次出現。在實現此措施的法,在于建立一條Java代碼規范,要求每個打開連接的類必須有finalize()finally塊來關閉連接。如果代碼遵循此規則,那么錯誤就不會再AEPJava中間件內開放式連接的錯誤源碼作為資料單獨處理出來您發現Java代碼缺少finally()ParasoftAEPMethodology有五條主要原則,該方法提供了一個經過良好測試的藍圖,AEP概念:應用行業最佳實踐來防止普遍錯誤,并建立全周期的錯誤預防基礎AEPAEP利用統計來穩定每一個過程,AEP產生最大效益,必須向整個團隊提供必需的技術、體系和培訓,正確并始終AEP有關AEP其它資源的信息,請 團隊配置管理器團隊配置管理器(TCM)模塊確保了所有團隊成員都能相應團隊的TestManager(團隊配置管理器)是單獨提供和的。本版本的JTest可與TCM2.0和更高版本配合使用,后者是作為ParasoftServerTools的一部分的。行部署之后團隊架構設計師或團隊管理可以在某一JTest安裝上配置相應的團隊設置和文件,然后告訴TeamConfigurationManager(團隊配置管理器)在哪里可以設置和相關的測試文件。然后,開發可將他們的機器指向TeamConfigurationManager(團隊Manager(團隊配置管理器)會對團隊的所有JTest安裝進行適當的更新。TeamConfigurationManager(團隊配置管理器TeamConfigurationManager(團隊配置管理器)JTest文TCMParasoftJTestTCM(團隊配置管理器)“JTestTCM”組報告系統程期間生成的度量值,GRS將這些數據點轉換成有含義的統計信息和儀表板,這些統計信程的狀態、以及開發團隊的效率。有了GRS,開發團隊就能更方便地識別代碼和編碼流程中的風險,并對風險進行應對和管理,這些風險可能會項目計劃和質量。GRS提供了一旦將JTest配置為向GRS發送信息,開發、架構設計師和團隊管理者就可以使用GRS儀表板,來關于質量、進度和生產率的基于角色的報告。JTestGRS74“JTest服務器連接至GRS”。4Jtest基本知識點案創建示例工JTest預先設定了兩個Java工程的例子,你將在學習的過程中使用它們實驗目JtestExampleJPetStoreExample實驗準實驗過JtestExampleJtestExampleFileNewProjectJtestJtestExampleProject4-1-1JtestExampleJtest視圖里看到JtestExamplePackageExplorer里將會JtestExample工程。JtestExampleFileNewProjectJtestJPetStoreExampleProject4-1-2JPetStoreExample4-1-3JPetStoreJPetStore的web地址:4-1-3練檢查代碼標實驗目實驗準JtestExample工程(4.1創建示例工程中描述的那樣)實驗過檢查Simple類是否遵守了默認的Jtest代碼規范集PackageExplorerJtestExampleexamples.eval在里點擊TestUsing按鈕,該按鈕如圖4-2-1所示4-2-1TestUsing默認情況下,當你點擊這個按鈕時,Jtest將執行代碼標準靜態分析就像執行單元測試。后面的課程解釋如何運行關注的測試和當你點擊TestUsing按鈕時,查出究竟有哪些動作被執行。Jtest的總結面板,Static4-2-24-2-2Static制表符。(改圖對原圖進行了拉伸Close確認Jtest視圖是可見的(這個視圖通常位于工作臺的底部。如果Jtest視圖是不可Jtest>ShowView>Jtest。JtestJtestLayout>TestedFilesandCategories。JtestSimple.javaFixStaticysisViolations分支,你將會看到被雙擊[Line#]Textlabel‘case10’maybeatypofor‘case10’結點,違例的行被加亮顯示Simple.java編輯器就會被打開,并且光標指到接近違例的位置。map()case10case1010的JtestJavaJsp檢查Jsp的一個包是否遵從默認的Jtest代碼標準集JtestExampleexamples.jsp點擊里的TestUsing按鈕JtestCloseJtestJsp文件的代碼標準違例報告。你將看到被檢測練自己編寫一個簡單的Jsp文件,對其進試,使其包含和4.2節Jsp代碼標準的違例:”Variable‘login’isassignedbutneverread”自動修正代碼標準違輯器中和TestConfiguration框的Static選項卡中都可以看到該圖標)。實驗目JtestQuickFix實驗準JtestExample工程(4.1創建示例工程中描述的那樣)的那樣)Jtest視圖下可見。實驗過SimpleJtestSimple.java>FixStaticysisViolations分支并雙擊[Line#]Textlabel‘case1’maybeatypefor‘case10’違例。違例的行被加亮顯示的Simple.java編輯器就會被打開,并且光標指到接近違例的位置。在Jtest視圖下,[Line#]Textlabel‘case10’maybeatypefor‘case10’的違ChangethelabeltoswitchcaseJtest自動更正代碼標準的違例。Jtest將會重構編輯器中的代碼,以便代碼不再那個代碼標準。對于這個例子,’case10’替換了’case10’文本;這種糾正避免map方法在10時產生不正確的行為。另外,JtestJtest視圖中清除相關的違例消息,因為現在的代碼不再代碼規范。FileSave點擊里的Save按鈕CtrlS練Simple.java[LineTextlabelcase1maybeatypeforcase10’違例的方法,快速修正[1]ReviewExceptions中關于Simple.java中的另外一個違例:”[line#]java.lang.StringIndexOutOfBoundsException:Stringindexoutofrange:1”。代碼標準規則說明Jtest700個內置的規則和任意數量的用戶規則,組織創建這些規則用來檢驗特定工程和組織的需求,同時避免最常見的錯誤重復發生。Jtest包含的每一個代實驗目演示如何學習關于代碼標準違例的報告實驗準JtestExample工程(4.1創建示例工程中描述的那樣)的那樣)Jtest視圖下可見。實驗過在Jtest視圖中,展開mycart.jsp>Fix ysisViolations分支[Line#]Variable‘num_items’isneverusedView ation。Jtest練選擇JtestExample工程中的一個包examples.eval,點擊TestUsingJtest視圖中,和取消報告違實驗目演示如何和取消代碼標準違例實驗準JtestExample工程(4.1創建示例工程中描述的那樣)的那樣)Jtest視圖下可見。實驗過GUI輸入或者在源代碼中直接定義。使用GUI控制,來報告對Simple.java代碼標準違例。Jtestmycart.jspFixStaticysisViolations于這個例子,輸入Exploringsuppressions。你在框中點擊OK后,相關的代碼為了看消息在后續的測試中如何被處理重新測試examples.jsp,就像“4.2檢查代碼標準描述的那樣。你的那個錯誤Jtest視圖下報告。Jtest>ShowView>Suppressions打開。這個視圖將會顯示下面的信息:Message:被的代碼標準消息Resource:應用的文件InFolder:包含這個文件的文件夾。Reason:消息被的原因。User:消息的人的。為了取消消息XDelete圖標。examples.jsp,就像“4.2Jtest視圖PackageExplorerJtestExampleexamples.suppressAllFileSuppress.java瀏覽源代碼中的代碼注釋 INTER.ITT) INTER.ITT規則將會所有在兩個注釋之間的代碼。在這種情況下,該規則將會整個文件。Example.javaPackageExplorerJtestExampleexamples.suppressExample.javaOOP.AF規則將會該注釋之后的所有代碼。練清除錯誤消實驗目Jtest實驗準JtestExample工程(4.1創建示例工程中描述的那樣)JtestExmapleexamples.evalSimple類(4.2檢查代碼標準描述的那樣)Jtest視圖下可見。實驗過JtestJtestShift+leftclickCtrlleftclick右鍵單擊你想刪除的錯誤消息,然后選擇Delete。選擇的錯誤消息將會被從如果你重新運行產生這些錯誤的測試錯誤消息將會被重告——除非你在重新運試右鍵單擊那個項,然后選擇Jtest>ClearStatic ysisTasks或者Jtest>ClearUnitTestingTasks(基于你想清除那種類型的錯誤)。練運行內置測試配實驗目實驗準測試的行為(例如:靜態分析,生成測試用例,測試用例執行建的測試工程。具體步驟參照1.實驗過SunJTestExample下的examples.evalSimple.javaSimple.javaJtest>ClearStaticysisTasks選擇Simple.java文件右擊選擇Jtest>TestUsing>Built-in>Staticysis>CodeConventionsfortheJavaProgrammingLanguagebySun。這樣就完成了一次測試。待運行完成后,點擊按鈕close關閉框。在代碼窗口可以看到用標識出來的不符合sum公司選擇菜單Jtest>TestBuilt-In>StaticysisCodeConventionsfortheJavaProgrammingguageby選擇Static>RulesTree選擇卡就可以看到可以使用的測試配置規則。可以選擇一個測試規則:選擇一個可復選框所在的結點右擊選擇ViewRule 練bug,Bug,JTest可選的配置中選擇一個測試配置進行操作,并且完成練通過示例配置修改規實驗目本單元講述的是如何來進試配置的設置在上一單元中已經講述了如何運用已有的配置來進試,但是那些測試配置都是JTest平臺自身默認的配置。在本單元中實驗準4.14.7實驗過選擇Jtest>TestConfigurations可以看到Testconfigurations窗口User-defined選項下面有一個Exampleconfiguration選擇項。。來配置測試規則。MetricCodeDuplicateDetectionEnableRules>EnableAllQuickFix(R)BugApply按鈕。雙擊右邊 則可以按照這個配置進試。也可以參4.7中的步驟來進試練4.7bug創建并運行簡單的用戶自定義測試配實驗目本單元的內容是如何來創建自己定義的測試配置實驗準完成4.7,4.8中的訓實驗過選擇Jtest>TestConfigurations可以看到Testconfigurations窗口在builtin菜單中選擇Built-in> ysis>FindUnusedCodeStatic>Rules選擇CodeDuplicationDetection打開它下面的 且選擇View/ChangeRuleParameters。在彈出的新窗口中可以修改配置參數ApplytestExample>JtestTestUsingUserDefinedFindDupli-cateandUnusedCode4.7練按照如上步驟來自定義一個測試配置。并且選擇一個被測試對象來進計算度實驗目本單元實驗的目的是進試的度量以及對這些度量進行分析精確的測試計算度量可以幫助發現程序中一些不好的設計。實驗準實驗過JtestExample>TestUsing>Built-in>MetricsMetricsMcCabeCyclomaticComplexitymetric我可以看到總共有50個方法,并且這些方法形復雜度最高的方法是examples.nbank.Customervalidate(int[],String)方法。通常,如果環形復雜度超過10,則應該考慮重寫這個方法,或是對類的結構進重新設計以使程序更好,RobertMartinAfferentCoupling結果為零說明除了包中的類為沒有其他的類來這些類。也就是說,可以安全的在考慮對這些被測試程序進行修改的時候要考慮到修改這些包的地方。中的值的變化。這個度量值各個有自身的意義。例如:NumberofParameters的值為10表示在這個類有10個參數Customer(String,String)構造函數的參數數目5個則要考慮修改該方法的設計。4.9如上圖打開可選項Metric選擇ReporttasksformetricsvaluesoutofacceptableNumberofStaticMethodsView/ChangeMetricApplyJtestExample>>>練測試程序來進試生成、執行和擴展Junit測試用Jtest能自動的生成和執行用來捕捉運行時異常的JUnit測試用例以及盡可能完整的運用實驗目實驗準Jtest實驗過JtestJUnitJtestDeleteAllJtestExample>examples.eval>Simple.javainthePackageExporerTestUsing默認的,當你點擊這個按鈕時,Jtest執行靜態分析以及單元測試。前面的課程關Jtest中。單元測試執行策略顯示在Execution中Close注意Jtest將生成的JUnit測試類文件添加到JtestExample.jtest項目中的examples.eval使用測試文件驗證Jtest視圖并通過打開Jtest視圖下右側頂部的下拉菜單的 局,然后選擇Layout>TestedFilesandCategories。Jtest在Jtest 視圖中,擴充simple.java>Review java.lang.StringindexOutOfBoundsException:Stringindexoutofrange消息。雙擊堆棧元素,查看失敗的代碼。這揭示了:當“0”和“00”被作為startsWithstrmatchfor循環中調用str.charAt(i)strmatch得長度。to"FixUnitTestProblems".異常將從復查未驗證的單元測試錯誤/失敗任務中被移除并且添加到修復單元測試問題任務中。Jtest還將用一個//verified注釋替換來自相關測試用例的//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}這個方法始終檢查字符串的長度以保證不會發生File>Save復查每一個列在Jtest視圖的ReviewUnitTest es任務 右擊ReviewUnitTest es節點,然后從快捷方式中選擇VerifyAll。打開被測文件的編輯器(Simple.java)。Jtest使用左邊綠色的欄來表明相關的路線被100%的覆蓋率,所以對這個文件沒有紫色的欄。Jtest中的覆蓋視圖(Jtest>ShowView>Coverage)。覆蓋視圖顯示出針publicvoidtestMap(){assertTrue(Simple.map(34)==-}File>Save打開TestUsing下 然后 練Jtest創建并使用Objects提高測試覆實驗目實驗準Jtest實驗過打開TestUsing下 75%string_message沒有被初始化。field_messageJtest>ShowView>ObjectRepository在對象庫中,右擊JtestExample,然后從 快捷方式中選擇New>NewJavaProjectJtestExampleTypeexamples.repository.MessageBrowse按鈕瀏NameMessage擴展對象編輯器樹并且雙擊標為Message()的最終節點。這個節點變成一個下 從下 File>Save修改生成和運行單元測試的測試配置以生成和執行新的測試用例,如下通過打開測試配置框創建配置的一個副本右擊內置的GenerateandRunUnitTests節點,然后從 快捷方式中選擇Duplicate。GenerateandRunUnitTests打開Generation>Filter,然后選擇Generatetestsforcode>Withup-to-datetestclasses選項。examples.repositoryTestUsing下拉,使用新的用戶定義的生成和運試配置重新運試實例,然后選擇TestUsing>User-defined>GenerateandRunUnitTests。練使用初始化信息擴展測試用Jtest測試類可以被擴展,在運試之前初始化其他的類實驗目實驗準實驗過選擇File>New>Project,然后完成框來創建一個名為Example的新Java項目右擊Example項目的包瀏覽節點,選擇New>Class,然后完成框以添加一個新TestMeJava類。 TestMe.javabeginpublicclassTestMe{publicstaticStringget(intindex){returnGlobalVectet(index);}} 右擊Example項目的包瀏覽節點,選擇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項目的包瀏覽節點,建立Examples項目,然后選擇Project>BuildJtest 快捷方式中選擇Duplicate。Execution>Severitiestab45。通過打開TestUsingTestUsing>User-defined>GenerateandRunUnitTests-ShowNPE顯示在Jtest視。GlobalVectorTestMe類被測通過打開包瀏覽器中Example.jtest項目,打開生成的TestMeTest.java測試類,打開examples.initializeexamples.initialize分支中的TestMeTest.java將setup()方法放到類的末尾。在執試用例前,說明初始化的代碼需要被Example修改生成和運行單元測試-NPE測試配置來生成和執行類的新的測試用例,如打開測試配置框并選擇User-defined>GenerateandRunUnitTestsShow打開Generation>Filter,然后選擇Generatetestsforcode>Withup-to-datetestclasses選項。TestMe.java上的新的用戶定義的生成和運行單元測試配置。注意到空指針異練Jtest為測試實例方法實例化一個如果想測試a)一個不能通過調用公共的構造器來初始化的類或b)在測試運行之前需setUp()方法。置,Jtest不能完全的測試這些類的實例方法因為它只使用給定的構造器來實例化類。為了setUp()方法,增加自動生Jtest有時候可能自動生成針對類的合適的對象;然而,有時,Jtest可能無法找到正確Jtest不能自動的生成一個合適的對象,應該修改測試類的setUp()給定類的實例方法時,Jtest該使用什么值。實驗目實驗準Jtest實驗過打開TestUsing下拉 沒有達到JtestExample.jtestJtestJtest生成一個測試用例,用給定的構造器創建類的一個實例。它不自動Jtest的自動生成測試工具不能方法。如果想讓Jtest完全測試那些實例方法,則需要在測試實例方JestExample.jtestGuestbookobject=newGuestbook();Guestbook.java運行"Built-in>GenerateandRunUnitTests"CloseJtest92%Guestbook類的每一個實例方法被調用之前,Jtest使用了的對象。練在 試實例方法之前,建立一個類并將其進行初始化執行回歸測實驗目Jest實驗準JtestExample工程(4.1創建示例工程中描述的那樣)實驗過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)選項能夠標記這些新的結果作為預期結果:aReviewAssertionFailureChangeexpectedvalue,確認新的值是預期的結果。Jtest會修改相關的測試用例斷言。b、對于剩余的斷言重復以上的步驟cSimple.javaFixUnitTest問題任務消息。練在執試用的過程中檢測內存實驗目實驗準JtestExample工程(4.1創建示例工程中描述的那樣)實驗過檢查庫類(JtestExampleJeaks包)a、打開TestConfiguration框通過選擇Jtest>TestbExampleConfiguration測試配置類。c、打開Execution>Options。dDetectmemoryleaks2JtestExample>examples.leaksLibrary.java3TestUsing4Library.java>FixUnitTestProblemsLineMemoryLeak:
或在Testmega-bytespercall來講,內存泄漏時因為每次用同樣的參數調用addBook()方法,代碼第36行分配的內存將不會被。5、通過取消(和equal(方法的新實現來內存泄漏再次出現這些方法能夠保證同樣的書重復的條目不會在館中出現。現在,如果k()被相同的參數多次調用,這個調用能夠導致只有一個Book對象不能回收(kaddk()調用)練通過運行一個應用程序生成功能測試用實驗目實驗準JtestExample工程(4.1創建示例工程中描述的那樣)。JPetStore工程(4.1創建示例工程中描述的那樣)。JtestTracer實驗過在輸出文件中記錄應用程序行為,然后從文件測試用為了對了一個簡單獨立的應用程序通過JtestTracer記錄輸出文件,在Eclipse中需1RunnableStackMachineaJtestPackageExplorerJtestExample>代碼,然后選擇RunAs>Run。Run框打開b、在Run框中選擇JavaApplication,然后選擇左上角的New按鈕cName域中填寫應用程序的名字(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的機器(可能不一定是相同的機器運行應用程序,或者甚至是相同的平臺[Linux,Windows,等等],作為運行應用程序的機器,開始2、Built-in>UnitTesting>GenerateandRunfromMonitoring的測試配置如下所示aJtest>TestConfigurations設置測試配置或者在TestUsing工具條中在下TestConfigurations。User-Defined的分支當中。cGenerateandRunfromMonitoringfromOut-putfile.。3aUser-Defined>GenerateandRunfromMonitoring-fromOutputfile的測試b、在Generation>Inputs中,選擇ReadingfromaPre-recordedfile選項4、在PackageExplorer中,選擇 StackMachine,FifoStackachine,和LifoStack-Machine(所有在JtestExample工程中的examples.stackmachine包。5、通過"User-DefinedGenerateandRunfromMonitoringfromOutputfile6當Jtest打開OpenPre-recordedFile框表明在程序中指定輸出文件的位置aPackageExplorerJtestExample.mtestbExamples.stackmachine注意在當運行應用程序執行的步驟,在生成測試用例階段獲。通過連接運行的應用程序來執行JtestJPetStore1JPetStore2Jtest>ShowView>Tracer.TracerTracerTracer配置盡可能的通過收集關于被測工程和的信息然后運行Tracer來構建合適的VM參數。3PackageprefixestotraceJPetStorecom.ibatis.jpetstoreandmon.util包4Listenforasignaltostarttracingonport,65435DisplayVMArgumentsVM的參數,本來應該被添加到應用程序中。如果你不從Eclipse啟動應用程序,你拷貝呈現的參數,將粘貼到應用程序的開始6LaunchConfigurationtotraceChooseJpetStoreTomcat5.5server啟動配置。aJPetStoreRunAS>Runb、在Run框中,選擇JavaApplication>StartSQLServer。cRun按鈕。8TracerLaunchTracerServerJPetStore應用程序已經被部署。9GenerateandRunfromMonitoringaGenerateandRunfromMonitoring的一個副本配置,通過打開TestConfiguration框,右擊Built-in>UnitTesting>GenerateandRunfromMonitoringDuplicate。bUser-DefinedGenerateandRunfromMonitoringcGenerateandRunfromMonitoringConnectingtoRunningd、打開Generation>Inputs,選擇ConnectingtoaRunningApplication選項10、選擇JPetStore>src> 11、以"User-Defined>GenerateandRunfromMonitoring-ConnectingtoRunning12JtestOK13、當你已經準備好開始記錄測試用例生成的數據時,在Jtest監視控制器框中點Start。14、打開瀏覽器與應用程序進行交互。Jtest將為你執行15(例如當你對測試執行的路徑感到滿意時監視控制器框中點擊Finish。16、在.mtest在測試工程中的對象在開始前被創建了(step13)但是在完成以前再被,這些對象在ObjectRepository中能捉成快照并且通過單元測試能被修改。在ObjectRepository中被創建對象能被觀察到。練創建并使用參數化測試用實驗目JUnit實驗準JtestExample工程(4.1創建示例工程中描述的那樣)。測試用例參數化。實驗過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運行參數化測試,然后運行”RunUnitTests”測試配置。相似地,傳遞nulls 首先,在第8行,null作為名字來傳遞,將NullPointerException1818行,nullNullPointerExceptionCustomerequals方法時空指針異常,因為field_ssn是空。如果去查看代碼,會發現field_ssn被初nullCustomer它的值仍然為null,在equals方法中解時導致空指針異常。這是代碼中的一個JtestBugDetective或者自動化的單元測試發現。JUnit測試用例Excel電子表格手動添加測試數據,Jtest指向你自己的測試數據。為了參數化測試方法,在Excel文件中保存原始測試值,然后為功能測試指外1Jtest視圖的PackageExplorer中,選擇JtestExample>examples.bank>BankAccount.java源文件。2、點擊TestUsing下拉菜單,然后選擇TestUsing>Built-in>DemoConfiguration。3、在完成測試后,在Package 視圖中定位JtestJtest>ExtractParameterizedTestCase。5GenerateExcelspreadsheetwithoriginaltestcasevaluesonlyFinish。JtesttestApply2方法里suiteApply2testApply2方法輸入BankAccount.xls里面的數據,這個文件在JtestExample.jtest工程下的examples.bank包里。6JtestExample.jtest>BankAccount.xlsExcel(50,1,100,149,1(50,1,100,150,18.xls9JtestViewJtestview。這樣使你能夠關注下一次測試的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練生成并執行仙人掌測試(Cactustaglibs,和servletfilters)自動生成仙人掌測試,然后在應用程序容器執行這些測試去模擬服務器執行。這就允許較早的,在開發階段就把問題出來。否則到了QA階段,部署,或者生產階段,修復這些bug會更加和耗時。在開發的生命周期的后期,這些測試又可實驗目JavaEE實驗準實驗過StrutsStrutsclassPackageExplorer單擊TestUsingTestUsing>Built-in>UnitTesting>GenerateandRunIn-container.ServerSelectiondialogJPetStoreTomcat5.5Server生成和執行完成以后,統計報告會報告5個測試用例生成,100%的覆蓋率達到。注意BeanActionTest.java(在JPetStore.ctest)servletunit.struts.CactusStrutsTestCase.Jtest使用一個容器內置的方式去運行ServletAction對象的執行就像他們真的是通過StrutsActionServletNon-JavaEEJtest能夠生成和執行容器內的測試對任何類——甚至是和容器沒有任何交互的。Non-JavaEE生成和執行仙人掌測試: 單擊TestUsingTestUsing>Built-in>UnitTesting>GenerateandRunIn-container.ServerSelectiondialogJPetStoreTomcat5.5Server生成的測試類,OrderServiceTest.java(在 項目里),擴.apache.cactus.ServletTestCase.擴展這個類允許Jtest使用一個容器內置的方式去運行ServletSpringSpringJPetStoreJPetStore.ctest項目JPetStoreSpring在PackageExplorer選擇RunIn-container.ServerSelectiondialogJPetStoreTomcat5.5ServerJtest9100%注意到這些生成的測試類,ViewProductControllerTest.java(JPetStore.ctest項目中,擴展Cactus框架類ServletTestCase.在編輯器中打開類然后檢查創建的方某些對方法handleRequest的測試方法通過異常給HttpServletRequest傳空值和HttpServletRequestModelandView對象的斷言。在某些用例中,Jtest使用了插樁雖然測試用例是運行在容器中的。這允許他code的值。當然,不用插樁直接在容器中運TestConfiguration中設置取消創建插樁。練使用BugDectective徑——通常路徑能跨度多種方法,類和包——這樣會導致一些運行時bug比如NullPointException,內存泄漏,SQL注入,或者其他的安全隱患。由于這些分析包括了確認的方法或者觀察是很的。些單元測試中的異常是否會在實際的程序路徑中。使用BugDetective需要一個可選的BugDetective的實
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年體育休閑廣場項目智能化系統設計評估報告
- 藥品營銷培訓管理制度
- 藥品陰涼冷藏管理制度
- 藥店醫保刷卡管理制度
- 藥店流動顧客管理制度
- 菊花技術文件管理制度
- 設備業務薪酬管理制度
- 設備加油規范管理制度
- 設備崗位合同管理制度
- 設備機房標準管理制度
- 2025軋輥堆焊工藝規程
- 2025至2030中國物理氣相沉積(PVD)設備行業行情監測與發展動向追蹤報告
- 電力咨詢費合同協議
- 2025-2030海洋環境監測行業市場深度調研及發展前景與投資研究報告
- 2025年中學生離隊入團活動實施方案
- 2025綠色建筑檢驗機構能力驗證要求
- 玻璃基板制備技術考核試卷
- 南極磷蝦油與紅曲、輔酶Q10聯用降低血脂效果研究
- 2025年上海市安全員C3證(專職安全員-綜合類)考試題庫
- 錢大媽加盟合同協議
- 基本公共衛生服務2025版培訓
評論
0/150
提交評論