第一章
簡介:
jtest是parasoft公司推出的一款針對java語言的自動化白盒測試工具,它通過自動實現java的單元測試和代碼標準校驗,來提高代碼的可靠性。Jtest先分析每個java類,然后自動生成junit測試用例并執行用例,從而實現代碼的最大覆蓋,并將代碼運行時未處理的異常暴露出來;另外,它還可以檢查以DbC(Design by Contract)規范開發的代碼的正確性。用戶還可以通過擴展測試用例的自動生成器來添加更多的junit用例。Jtest還能按照現有的超過350個編碼標準來檢查并自動糾正大多數常見的編碼規則上的偏差,用戶可自定義這些標準,通過簡單的幾個點擊,就能預防類似于未處理異常、函數錯誤、內存泄漏、性能問題、安全隱患這樣的代碼問題。
另外,jtest 采用parasoft公司的AEP方法論來實現團隊開發中對代碼錯誤標準化管理,這個方法論,也是parasoft提出的基于團隊開發模式下提高軟件質量和可靠性的一套解決方案,目前還處在探索階段,詳情可參閱 http://www.parasoft.com/jsp/aep/aep.jsp 。
優勢:
1)使預防代碼錯誤成為可能,從而大大節約成本,提高軟件質量和開發效率
2)使單元測試——包括白盒、黑盒以及回歸測試成為可能
3)使代碼規范檢查和自動糾正成為可能
4)鼓勵開發團隊橫向協作來預防代碼錯誤
特征:
1)通過簡單的點擊,自動實現代碼基本錯誤的預防,這包括單元測試和代碼規范的檢查
2)生成并執行junit單元測試用例,對代碼進行即時檢查
4)確認并阻止代碼中不可捕獲的異常、函數錯誤、內存泄漏、性能問題、安全弱點的問題
5)監視測試的覆蓋范圍
6)自動執行回歸測試
7)支持DbC編碼規范
8)檢驗超過350個來自java專家的開發規范
9)自動糾正違反超過160個編碼規范的錯誤
10)允許用戶通過圖形方式或自動創建方式來自定義編碼規范
11)支持大型團隊開發中測試設置和測試文件的共享
12)實現和IBM Websphere Studio /Eclipse IDE 的安全集成
第二章
本章說明了如何安裝jtest full版本,full版本包括jtest和eclipse,jtest被集成在eclipse框架內部。
1.在windows安裝步驟:
1)雙擊jtest自解壓文件jtest5_win32.exe
2)按提示步驟進行,選擇【complete jtest installation】,一直到結束安裝
2.在unix安裝步驟:
1)將安裝文件jtest.linux.tar.gz或gzip –dc jtest.solaris.tar.gz 拷貝到即將安裝jtest的目錄
2)解壓檔案文件:
linux:gzip –dc jtest.linux.tar.gz | tar xvf –
solaris: gzip –dc jtest.solaris.tar.gz | tar xvf –
解壓后,出現一個叫做jtest的目錄,包含了jtest安裝后的全部文件。
運行jtest時,執行 ./jtest 命令即可。
注冊:獲得正版jtest安裝程序后,只有正確注冊才可以使用,方法也很簡單,這里不詳述。
第三章
本章是jtest的快速指南部分,讀者可迅速掌握jtest的基本功能及使用方法;包含的主題如下:
1)第一課:創建一個實例項目
2)第二課:檢查代碼規范
3)第三課:自動修復代碼規范錯誤
4)第四課:訪問代碼規范的描述信息
5)第五課:忽略/取消忽略報告的錯誤
6)第六課:運行jtest builtin 配置
7)第七課:以fly方式檢查特定的編碼標準或一組標準
8)第八課:清除錯誤信息
9)第九課:創建、執行、擴展junit測試用例
10)第十課:通過實例配置來修改代碼的檢查規范
11)第十一課:創建并運行一個簡單的用戶自定義jtest配置
12)第十二課:執行回歸測試
13)第十三課:檢測內存泄漏
一、 創建一個實例項目
jtest 默認情況下,可以創建一個java實例項目,本章里,我們也利用該項目演示。用戶在使用自己的代碼時,就不必創建這樣的項目來使用jtest,直接利用在eclipse里創建的java項目即可。
目的:
演示如何創建jtest實例項目
步驟:
1)選擇 file>new>jtest example project
2)默認項目名稱是jtest example ,點擊finish即可
項目創建完成,并顯示在jtest 視窗里。Package explore顯示在工作臺左側,此時只列出一個jtest example項目。如何在java視窗里查看項目呢?
1) 點擊工作臺左上方快捷條里的java perspective 按鈕;如果java perspective 按鈕不在,點擊快捷條里的open perspective按鈕,選擇other,然后選擇java,打開即可。
2) 或者在快捷條里點擊java perspective 按鈕進入jtest視窗,如下:
——>jtest 視窗
——>java視窗
——>open 視窗
二、檢查代碼規范
通過檢查代碼規范,用戶可以避免一些將來可能導致軟件功能、性能或安全方面的問題。
目的:
演示如何檢查代碼規范,并瀏覽報告的代碼規范錯誤。
步驟:
這里我們檢查simple這個類(在jtest example項目里的example.eval包里)是否符合默認的java編碼規范。
1)選擇simple.java源文件
2)在工具欄里點擊play按鈕,即
默認情況下,點擊這個按鈕,jtest會將檢查代碼規范和單元測試一并執行;后續課程里,我們會說明如何執行特定的測試,這里我們集中講述代碼規范分析和分析結果。
3)測試運行結束后,在jtest運行面板里選擇standards標簽,這里包括如下關于編碼規范的內容:
· 代碼規范檢查耗費的時間
· 被檢查的文件個數
· 運行失敗的次數
· 發現的錯誤個數
· 忽略掉的錯誤個數
· 違反編碼的規范個數
4)關閉運行窗口。
5)在jtest工作臺右下方,檢查errors found視窗。如果該視窗不在,選擇window>show view>other,選擇jtest>errors found,即可。
6)在errors found視窗,打開example.java分支,前六個報告的錯誤是代碼規范錯誤,每個代碼規范錯誤都包含在引起錯誤的代碼行數和簡單的錯誤描述信息。
7) 雙擊[Line: 54] Text label ’case10’ may be typo for ’case 10’節點,simple.java這個文件的編輯器自動打開,并且違反代碼規范的那一行會高亮顯示,鼠標也自動定位在錯誤附近。
三、自動修復代碼規范錯誤
jtest 能自動修復大多數它捕獲的代碼規范錯誤,它利用集成的eclipse quick fix 特性來實現此功能??梢宰詣有迯偷拇a規范錯誤,在jtest configurations面板的standards標簽里,都被標記成黃色球形圖標。
目的:
演示如何利用jtest quick fix 特性來自動修復編碼規范錯誤。
步驟:
1)在errors found 視窗里,擴展simple.java節點,雙擊[Line: 54] Text label ’case10’ may be typo for ’case 10’這個錯誤,編輯器自動打開,錯誤行高亮顯示,并且編輯器的左側有個黃色球形圖標標記這個錯誤,這個圖標的出現表示能夠利用quick fix 選項來自動糾正代碼規范錯誤。
2)在這個黃色球形圖標上點擊一下,彈出兩個選項窗口,一個是針對這個編碼錯誤的quick fix,另一個提供了被違反的編碼規范的描述信息。
3)雙擊fix選項,就會自動糾正編碼規范錯誤,jtest也會重新定位編輯器里的代碼。針對這個例子,case10會替換case 10,以后再測試的話,就不會再報錯了;而且,jtest也自動刪除了在errors found視窗里關于這個錯誤的信息。
4)保存代碼。
四、訪問代碼規范的描述信息
jtest 能自動檢查超過350個編碼規范和任何數量的用戶自定義規范。每條規范都有一個對應的描述信息,用來幫助用戶理解自己的代碼為何偏離了正確的規范。
目的:
演示如何深入了解報告的編碼規范錯誤信息
步驟:
1) 在errors found視窗,擴展simple.java 分支
2) 右鍵單擊[Line: 53] case 0 is missing either "break", "return", or /*falls through */這個錯誤,選擇view rule description,jtest就會顯示在builtin help窗口里顯示關于這個規范的描述信息
3)瀏覽之后,點擊back按鈕即可
所有的編碼規范的描述信息都可以在jtest的幫助里獲得。
五、忽略/取消忽略報告的錯誤
用戶在編碼時,有些違反編碼規范的錯誤可以忽略不計,那么可以通過此功能來實現,以后再測試時,不會再提示錯誤信息。如果想針對一些特定編碼規范全部忽略,我們推薦最好修改jtest configurations,以便jtest測試時不對其檢查。
目的:
演示如何忽略/取消忽略報告的錯誤。
步驟:
針對simple.java類,想要忽略Utility class does not have a "private" default constructor: ’Simple’ 這個錯誤:
1)在errors found視窗里,擴展simple.java分支
2)右鍵點擊Utility class does not have a "private" default constructor: ’Simple’ 這個錯誤,選擇suppress error選項
3) 在彈出對話框里輸入個短語或句子表示為何要忽略這個錯誤。針對此例,輸入exploring suppressions;關閉對話框,相應的編碼規范錯誤從errors found里清除。將來再測試時,該錯誤信息會報告在suppressed messages視窗里。
Suppressed messages如果不在,也可通過相同的方法從jtest>show view>suppressed messages打開,這個視窗有如下信息:
· message:忽略掉的 jtest 錯誤
· reason:錯誤被忽略掉的原因
· resource:忽略錯誤的源文件
· user:執行忽略錯誤的操作者
· date:執行忽略錯誤的日期
如果想取消忽略這個錯誤:
在suppressed messages視窗里,右鍵點擊CODSTA.UCDC: Utility class does not have a "private" default constructor: ’Simple’ 這個錯誤,選擇remove suppression即可