jtest5.0使用手冊

第一章                               

簡介:
       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單元測試用例,對代碼進行即時檢查
3)提供了進行黑盒測試、模型測試和系統測試的快速途徑
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安裝程序後,只有正確註冊纔可以使用,方法也很簡單,這裏不詳述。 

jtest5.0使用手冊(二)

第三章

        本章是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 特性來實現此功能。可以自動修復的代碼規範錯誤,在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即可。

jtest5.0使用手冊(三)

六、運行jtest builtin 配置

         jtest configuration是一個定義了用戶想要測試的內容設置的集合。每次jtest運行測試,都會用指定的jtest configuration(如果沒有選擇特定的jtest configuration,會執行默認的jtest configuration);一般jtest configuration會確定以下一些設置參數:

執行的測試類型(編碼規範檢查、測試用例生成、測試用例執行等) 

需要檢查的編碼的規範 

自動生成測試用例時需要的參數 

每個測試執行的範圍(覆蓋多少行等) 

       jtest包含一系列由jtest開發者預定義的builtin配置,其中有一個java coding conventions(java編碼風格)是基於sun公司的java編碼風格,以此來檢查指定的編碼規範,詳情參閱http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

目的:

演示如何運行jtest裏特定的jtest configurations。
步驟:

這裏我們檢查simple.java類是否符合sun公司的java編碼風格
1)選擇simple.java源文件

2) 打開play下拉菜單,選擇jtest using>builtin>coding standards>code conventions for the java programming language by sun,運行完成後,打開一個對話框
3)關閉對話框
4)在errors found視窗裏查看該文件違反sun編碼風格的地方

七、以fly方式檢查特定的編碼標準或一組標準

 如果用戶想快速檢查代碼是否符合單一代碼規範,或一組規範,可以採用fly方式來檢查代碼,而不必採用jtest builtin configuration或創建自定義的jtest配置。

目的:

  演示如何執行fly方式下的編碼規範檢查。

步驟:
1)選擇simple.java源文件
2)打開play下拉菜單,選擇jtest using>builtin>coding standards rules>formatting>check all rules in this category(也可選擇其他的選項
3)查看errors found視窗裏是否出現錯誤信息


八、清除錯誤信息

如果用戶想要清除掉tasks視窗或errors found視窗裏的錯誤信息,需要學習本課程。這些清除掉的信息只是臨時刪除,下次運行出錯,依然會顯示出來。

目的:
演示如何清除掉tasks視窗或errors found視窗裏的錯誤信息。
步驟:
利用shift或ctrl鍵選擇錯誤信息,右鍵點擊錯誤信息,可選擇delete error或delete all/clear all。

九、創建、執行、擴展junit測試用例

jtest 能自動生成並執行junit測試用例,來發現代碼運行的未處理異常,用戶也可以擴展這些用例來增強測試覆蓋範圍,檢查代碼單元級功能、子模塊、模塊以及系統級功能。

目的:

演示如何自動生成並運行junit測試用例,如何查看和驗證測試結果,以及如何修復發現的錯誤。

步驟:

1)選擇simple.java源文件
2)點擊play按鈕
3)查看運行後的對話框(這裏run標籤表示運行了13個用例,error標籤發現了一個錯誤,failures標籤裏沒有運行失敗的用例)
4)關閉該運行窗口
5)注意這裏jtest把生成的junit測試用例文件simpletest.java加到了一個新項目jtest example.jtest的examples.eval包裏
6)                        在error found視窗裏,右鍵點擊[Line: 107] java .lang. NullPointer Exception這個錯誤,選擇quick fix選項
7)按用戶意願自動修復後,保存代碼
8)  可通過選擇play下拉菜單的Jtest Using> Builtin> Generate and Run Unit Tests,重新運行測試
9)  通過打開simple.java文件,可以在編輯器裏修改測試代碼,以增強測試;輔助test class outline視窗,可更好的查看測試代碼的結果。如果test class outline視窗不在,可通過Jtest Perspective>Jtest> Show View> Test Class Outline打開
10)擴展test class outline分支,能看到每個用例的輸入inputs和結果outcomes,如果知道了每個方法的正確結果,那麼可以:
    對每個正確的結果outcome,可右鍵點擊outcome節點,選擇verify,jtest會將//unverified註釋從這個用例文件裏除掉,在以後測試裏,jtest就會檢查取該值的輸出結果,如果出錯則報告錯誤。
    對於不正確的outcome,點擊outcome節點,會在編輯器裏修正,jtest在以後測試裏同樣檢查正確的值,如果出錯則報錯。
     對於用戶不想讓jtest在以後的測試裏檢查的outcome,可右鍵點擊outcome節點,選擇ignore,則將其註釋掉,以後測試裏將其忽略.

jtest5.0使用手冊(四)

十、通過實例配置來修改代碼的檢查規範

前述的實例配置默認是全局配置,即點擊play時jtest執行的測試;用戶可以修改該配置。

目的:

演示如何自定義jtest實例配置增強測試規則

步驟:
1)從菜單中選擇jtest-jtest configuration或點擊play下拉菜單選擇該項,所有可以配置項顯示在左側面板,user defined分支可以修改,builtin項可以查看和拷貝,但不能修改。
2)選擇example configuration項,注意此項有個紅色G的標誌,表示該項被設置成全局配置。
3)打開standards標籤,這裏是用戶可以激活和關閉的代碼標準規範
4)點擊internationalization複選框,將會提示jtest配置檢查並阻止國際化錯誤
以後jtest執行測試時,就會檢查國際性錯誤;如果想取消該檢查標準,按照同樣的步驟取消複選框即可。

 十一、創建並運行一個簡單的用戶自定義jtest配置

jtest預設置的jtest configurations是基於開發者使用的最普遍的測試場景,如果想自定義測試,可以修改builtin配置或者創建用戶定義的jtest配置,我們推薦每次執行不同的測試項目時都設置不同的測試場景。

目的:

        演示如何創建一個簡單的jtest對類編碼的檢查規範

步驟:

1)打開jtest-jtest configuration面板
2)選擇user defined項
3)點擊new,表示要創建一個新的jtest測試場景,jtest添加一個新目錄叫做example configuration(1)
4)輸入該場景的名字,例如輸入metrics,這裏我們讓jtest只檢查類規範
5)打開standards標籤
6)點擊disable all visible rules按鈕,先關閉所有標準;如果看不到這個按鈕,擴大整個面板就可以看到了。
7)點擊class metrics複選框激活全部的類編碼標準;擴展class metrics節點可查看具體規範
8)打開generation標籤,清除enable unit test generation複選框;這是爲了讓這個自定義的測試場景只集中在代碼規範上,如果要生成測試用例,運行已經存在的jtest配置即可。
9)打開execution標籤清除enable unit test execution複選框,目的和上一個相同
10)點擊close,提示是否保存時,選擇yes
11)運行該測試場景時,點擊要測試的項目,從play下拉菜單裏選擇user defined-metrics即可

十二、執行迴歸測試

        當jtest第一次運行一個單元測試時,它會創建一個關於當前測試類的功能快照,並以junit格式的測試用例記錄了類的行爲。實質上,它自動創建了一個迴歸測試,當一個測試類修改了,可以重新運行測試用例來檢查是否出現錯誤。

目的:

演示jtest如何執行迴歸測試

步驟:
1)打開simple.java源文件的編輯器
2)將add()方法裏的“+”改成“-”,下一行應該變成return 11-12
3)保存源文件
4)選擇simple.java源文件
點擊play按鈕運行迴歸測試;jtest將報告錯誤junit.framework.AssertionFailedError: expected:<14> but was:<0>。這個錯誤提示我們add()方法的功能自從上次測試後改變了;如果該錯誤不是故意的,例如排版會敲錯,我們將要糾正該錯誤恢復到從前的正確情況;如果是故意這樣修改,那就要糾正期望的outcome。

十三、檢測內存泄漏

      jtest能夠在執行單元測試時檢測內存泄漏。如果測試結束,內存仍然在使用中,jtest將會報告內存泄漏。

目的:

     演示jtest如何在測試執行中檢測內存泄漏

步驟:
1)打開example configuration
2)打開execution標籤
3)打開options子標籤
4)激活detect memory leaks選項
5)apply並close
6)選擇library.java源文件:打開jtest example項目-example.leaks-library.java
7)  從play下拉菜單裏選擇Jtest Using> User-Defined> Example Configuration
8)  測試結束,報告內存泄漏錯誤細節
9)  雙擊[Line 37] Memory Leak: 3.8 megabytes per call,在源文件裏打開代碼,找到引起內存泄漏的代碼行??每次addbook()方法被同樣的參數調用,第37行代碼分配的內存沒有被釋放

10)取消文件末尾的hashcode()和equals()方法的註釋,以此來消除內存泄漏錯誤即可。
 
第四章

本章是一些概念,英文書中列舉的一些重要概念在前面都有所介紹,另外一些對實際jtest用戶用處不大,以後我會寫一個如何學習jtest的文檔,在那裏再仔細闡述。這裏有一個概念,前面沒有提到,這裏簡單說一下。

Rulewizard:是用戶自定義jtest代碼檢查標準的模型,和jtest4.5或早期版本的功能、使用都相同。(關於Jtest4.5版本的使用介紹,本人也有個文檔)Jtest能利用Rulewizard自動增加任何有效的代碼檢查標準,以此,項目團隊檢查特殊項目的代碼需求。

使用Rulewizard,代碼規範能通過圖形方式(類似流程圖)或自動方式(提供代碼實例來演示實際的代碼規範偏差)來創建。

Rulewizard在jtest architect edition(架構版本)纔可以用。這句話是原文說的,但在我們安裝的full版裏也可以打開,也許是full版裏也包括Rulewizard了吧。其界面如下:

如何打開Rulewizard呢?
1)打開Jtest> Jtest Configurations
2)打開任何jtest configuration的standards標籤
3)右鍵點擊rules樹的區域,選擇add user-defined rule;Rulewizard界面就打開了,關於它的詳細使用(修改、創建。激活等)參考幫助裏的view in the Rulewizard UI。不過本人覺得沒什麼必要,人家parasoft提供的都夠多、夠全了,我們何必再加這些規範呢?除非真的有特殊需要吧;相反,等你用jtest,就會發現我們開發的代碼很多地方都會被jtest認爲有錯,到時候你可別煩啊,^-^!

第五章 

本章介紹jtest一些任務,主要功能任務都已經在第三章闡述過了;這裏只說明一些其他輔助任務。

一、定時執行測試任務:
jtest允許定時執行測試,和其他的自動化工具一樣,可以安排夜晚執行測試,第二天來查看測試結果。另外,jtest還可以按照計劃時間來創建大批量的測試用例,以不影響白日的工作。

如何定時測試呢?
1)選擇jtest-preferences
2)   選擇jtest-scheduled testing
3)激活enable scheduled testing選項
4)在 execution time裏輸入希望的開始時間:第一個文本框輸入小時(0到23),第二個文本框輸入分鐘(0到59),例如希望在pm 10:30開始,那麼就在第一個框裏輸入22,在第二個裏輸入30即可

5) 點擊configuration to run的edit按鈕,選擇要執行的jtest configuration

6) 下一個edit是選擇此執行要覆蓋的測試集,即某項目或部分項目文件

7) 點擊apply

注意:如果jtest主程序沒有打開,到了定時時間,測試不會自動運行

二、評估發現的錯誤:

和第三章介紹的error found一樣,這裏添加一個參考圖示,供讀者進一步瞭解:
 三、查看測試覆蓋信息:

jtest能報告所有junit測試用例的覆蓋率,因此用戶可以評估當前代碼被測試的範圍,並決定是否需要增加額外的測試用例。一般來說,jtest能自動創建覆蓋了被測試代碼75%的測試用例,有時覆蓋率也會達到100%,有時也會低於 75%。

測試覆蓋率的跟蹤一般被默認爲是激活的。如果想要手工激活:
1)打開Jtest> Jtest Configurations
2)選擇想要修改的測試配置,打開execution標籤,再選擇option子標籤,保證report code coverage選項是激活的

測試執行後,想要查看覆蓋率信息,有以下兩個個方法:
1)打開一個測試文件的編輯器,在編輯區域左側的一個蘭色/綠色條表示測試覆蓋的行,紫色條表示沒有覆蓋到的行,沒有顏色的行表示不可執行的部分
2)打開coverage view面板,顯示了每個類和每個方法的覆蓋率統計圖(覆蓋百分比、全部可執行的行、覆蓋的行),如圖:

         總結:關於jtest的基本使用,我想上述的內容就夠了。白盒測試工具不像winrunner、robot等黑盒工具有那麼多的預設置或腳本代碼編寫工作,它的設置簡單明瞭;包括有一些我沒有介紹的設置,例如修改測試範圍scope、連接teamserver等(本人覺得這些內容也不重要,對使用jtest精髓毫無價值),讀者只要裝了jtest,按照我介紹的主要功能描述,點擊幾次自然就融會貫通了。

爲了推動我國測試行業的發展,增強測試從業者的職業技能,作爲一名普通的測試工程師,我想我們都有責任將自己的經驗共享出來,共同交流進步!同時歡迎任何業界朋友對我的作品批評指正,也歡迎更多的人使用本工具(就算學習一下也好),並就任何實際問題開展討論。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章