工具輔助: 使用 Rational QualityArchitect 實作自動化元件測試
這個工具輔助提供使用 Rational QualityArchitect 執行的單元測試作業的概觀。
工具: Rational QualityArchitect
關係
主要說明

概觀

這個工具輔助提供使用 Rational QualityArchitect 執行的四個主要單元測試作業的概觀:

  • 單元測試
  • 情境測試
  • Stub 產生
  • EJB 階段作業錄製作業

延遲測試,直到所有元件都可以組合成一個完整系統,這樣的開發流程是很冒險的。在生命週期晚期發現的問題會更難以修正,而且更容易造成嚴重排程延遲,尤其如果它們是架構問題,則需要廣泛的重新設計才能解決。

即使團隊對其系統元件的品質有相當大的信心,系統的整體信賴度仍然相當低。例如,假設有一個簡單的系統包含五個元件,每一個元件都評定為具有 95% 的可靠性(經由測試涵蓋率測量值或少數定量方法)。因為系統可靠性是累積的,所以整體等級是 95% x 95% x 95% x 95%x 95%,或只超過 77%。鑑於任何一個元件的問題可能性只有二十分之一,對於整體系統而言,它接近四分之一,而這是針對元件非常少的系統而言。

相反地,在反覆式開發流程中併入元件測試的開發流程,提供幾個重要優點:

  • 可以在隔離的環境定義下發現並解決問題,這不僅使它們更容易被修復,而且更容易被發現和診斷。
  • 因為測試和開發透過生命週期緊密耦合,所以進度測量更加可信,現在可以從專案程式碼的數量和運作來檢視進度,而不只是從程式碼數量來看。
  • 因為未預料到的問題而造成排程瓦解的情形可降至最低,使整體排程更為實際並減少專案風險。

雖然早期測試有很大的好處,但特別談到測試中層無 GUI 元件時,這種作法則完全不普遍。

為什麼? 因為它既耗時又繁瑣,而且在過去,克服這些實際問題的成本常常比利益付出更多。同時,因為大部分測試是為了特定元件而裁剪的,因此,重複使用的機率不大。許多組織都瞭解,從頭開始建立測試控制工具和 Stub,用完之後就丟棄,一個專案又一個專案,這實在很浪費。因此他們偏向於將焦點放在其他區域的有限資源上。

有了 QualityArchitect,早期測試真的變成可行,因為測試控制工具和 Stub 會自動產生:不只一次,而是隨著模型在開發期間逐步形成而增加。整個開發流程變得更有結構性、測量性和可見性,因為元件測試的結果促使更強的輸入準則來防止倉促的系統測試。QualityArchitect 可讓開發人員將焦點放在定義測試的創造性層面,使他們能夠花時間思考運用元件的最佳方式,而不是花時間在撰寫和除錯測試驅動程式和 Stub。開發人員和架構師共同使用共用的視覺化模型,彼此之間自然發展出更有生產力的關係。

在執行 Windows 98/2000/NT 4.0 時,適用這個工具輔助。

工具步驟

這個工具輔助涵蓋的這些主要作業與使用 QualityArchitect 實作自動化元件測試相關聯:

  1. 單元測試的必備步驟
  2. 實作單元測試
  3. 實作情境測試
  4. 建立 Stub 元件
  5. 使用 EJB 階段作業記錄器

1.   單元測試的必備步驟

若要使用 QualityArchitect 產生任何測試,不論它們是否用於 EJB 元件的 COM,都必須使用 Rational Administrator 來建立及配置 Rational Project。這個專案必須包含測試資料儲存庫來保留所有測試資產品,例如測試結果和資料儲存池。這在工具輔助:使用 Rational Administrator 配置專案中有加以說明。

2.   實作單元測試

單元測試的目標是要驗證給定的元件上的給定作業有提供給定的輸入集正確的回覆值。單元測試是從邏輯觀點的類別規格中建立。建立及執行單元測試的流程包含三個步驟:

  • 產生單元測試程式碼
  • 產生單元測試資料
  • 執行測試和檢查結果

產生單元測試程式碼

單元測試程式碼包含所有必要的指示,來建立元件的實例、呼叫測試中作業,及根據基準線檢查傳回的結果。

對於 COM 元件
  1. 在邏輯觀點的元件介面之下選取要測試的作業。
  2. 用滑鼠右鍵按一下在元件介面之下列出的作業,並選取 Rational 測試 > 產生單元測試。如果在此流程期間出現提示,則您可能必須登入 Rational 專案。

QualityArchitect 產生 Visual Basic 6 相容的程式碼作為此流程的輸出。

從 Visual Basic,您需要先嘗試編譯程式碼。需要檢查任何編譯錯誤。在特定情況下,QualityArchitect 無法產生程式碼來測試大量使用複雜資料類型的作業。如果是這麼情況,QualityArchitect 將插入無效程式碼,在編譯時強調顯示需要手動撰寫的程式碼區段。程式碼編譯之後,您可以繼續下一步:產生單元測試資料

對於 EJB 元件
  1. 從邏輯觀點的遠端介面中選取要測試的作業。
  2. 用滑鼠右鍵按一下該作業,並選取 Rational 測試 > 選取單元測試範本
  3. 瀏覽至 EJB 伺服器的適當範本。對於 WebSphere,請選取 EJBWebSphereBusiness Methods 資料夾的 websphere_remote.template。對於 Web Logic,請選取 EJBWeb LogicBusiness Methods 資料夾的 weblogic_remote.template。
  4. 選取 Rational 測試 > 產生單元測試。如果在此流程期間出現提示,則您可能必須登入 Rational 專案。 

QualityArchitect 將產生 Java 程式碼作為此流程的輸出。

您可以使用 IDE 或自己選擇的編輯器來檢查 Java 程式碼。Rational Rose 出廠時已提供R2 編輯器,可作為此用途。

在編輯器中,您可以先嘗試編譯程式碼。需要檢查任何編譯錯誤。在特定情況下,QualityArchitect 無法產生大量使用複雜資料類型的程式碼。如果是這麼情況,QualityArchitect 將插入不會編譯的無效程式碼,來標示出需要手動撰寫的程式碼行。程式碼編譯之後,您可以繼續下一步:產生單元測試資料

產生單元測試資料

成功單元測試的真正測量基準值是測試資料。測試程式碼本身是完全可移除的,因為 QualityArchitect 可以在任何時間點重新產生程式碼。雖然 QualityArchitect 可以建立測試程式碼,但它無法建立有意義的測試資料。這個是分析師或實作人員的責任。建立測試資料來驗證代表正面的和負面的測試時要小心。焦點放在元件邏輯界限條件上的測試資料是單元測試資料的最佳候選人。

對於 COM 元件
  1. 在邏輯觀點的元件介面之下選取要測試的作業。
  2. 用滑鼠右鍵按一下該作業,並選取 Rational 測試 > 建立資料儲存池
  3. 選取建立資料儲存池之後,會顯示「資料儲存池內容」對話框。此時,您可以選取 編輯資料儲存池資料來開始輸入資料,或選取定義資料儲存池欄位,讓 QualityArchitect 為您產生測試資料。
對於 EJB 元件
  1. 從邏輯觀點的遠端介面中選取要測試的作業。
  2. 用滑鼠右鍵按一下在遠端介面之下列出的作業,並選取「Rational 測試 > 建立資料儲存池」。
  3. 選取建立資料儲存池之後,會顯示「資料儲存池內容」對話框。此時,您可以選取 編輯資料儲存池資料來開始輸入資料,或選取定義資料儲存池欄位,讓 QualityArchitect 為您產生測試資料。
使用資料儲存池

如果您選取定義資料儲存池欄位,表示您有能力使用 QualityArchitect 的測試資料產生功能。QualityArchitect 可以產生各種不同類型的一般資料,這些是指定在類型欄位的資料類型下拉清單中。 

當您選取了適當的類型之後,請選取要產生的列數,再按一下產生資料。QualityArchitect 很可能無法為您產生所有資料。舉例來說,QualityArchitect 可以產生一般美國都市清單,但無法產生某訂單系統的有效系統特定發票號碼清單。此資料必須以資料類型手動輸入,或直接輸入到資料儲存池。建立具有自訂資料的資料類型的價值在於,QualityArchitect 此後可以從「定義資料儲存池欄位」介面產生此種類型的資料。如果您直接將此資料輸入資料儲存池,只有該特定資料儲存池有此資料。

當您選取編輯資料儲存池資料時,可直接輸入有意義的測試資料。每一個引數有一個欄位,還有,預期的回覆值也有一個欄位,預期的錯誤值也有一個欄位。當您指定錯誤時,錯誤碼和文字錯誤訊息都是有效的項目。如果作業需要複式物件作為引數,或它應該傳回複式物件,則您無法將該物件參照插入資料儲存池中。 相反地,請將物件分解成建構物件實例所需的簡單引數類型。基於此用途,請使用 在下述項目之前插入在下述項目之後插入按鈕,在資料儲存池中新增欄位。您必須修改測試程式碼,才能以提供的資料建構物件實例。

執行測試和檢查結果

建立測試程式碼和測試資料之後,您就可以開始執行測試。您可以從 IDE 執行測試,或在 TestManager 套組中建立測試排程。如需這個主題的相關資訊,請參閱工具輔助:使用 Rational TestManager 執行測試套組

  1. 當測試開始執行時,會提示您提供測試日誌結果的位置。當您指定位置之後,TestManager 就會呈現在該處執行的測試結果。
  2. 在測試結束時,TestManager 會顯示測試日誌。若要檢視測試結果,請選取「日誌檢視器」視窗的詳細視圖標籤。展開結果的目錄樹視圖,以查看測試執行的詳細資料。如需進一步資訊,在任一行按一下滑鼠右鍵並選取內容即可存取。

3.   實作情境測試

情境測試的目標是要驗證一系列給定的元件上的一系列給定的作業的結合是否有正確執行群體作業。情境測試是從互動圖建立,尤其是序列圖和合作圖。建立和執行單元測試的流程包含下列三個步驟:

  • 產生情境測試程式碼
  • 產生情境測試資料
  • 執行測試和檢查結果

產生情境測試程式碼

情境測試程式碼將包含所有測試驅動程式碼,它們是要建立元件實例、呼叫測試中作業和使用驗證點預估這些作業結果所需要的。驗證點是測試程式碼可以對資料庫執行 SQL 陳述式所憑藉的機制,目的在於驗證基礎資料是否有適當操作。

對於 EJB 元件
  1. 在瀏覽器中選取合作圖。
  2. 用滑鼠右鍵按一下該圖解,並選取 Rational 測試 > 選取 ScenarioTest 範本
  3. 瀏覽至 EJB 伺服器的適當範本。對於 WebSphere,請選取 EJBWebSphereScenario 資料夾的 websphere_scenario.template。對於 Web Logic,請選取 EJBWeb LogicScenario 資料夾的 weblogic_scenario.template。
  4. 開啟給定的序列圖或合作圖,它為測試中狀況建模。對圖解上要測試的元件指定元件的訊息是很重要的。訊息的指定方式是按兩下訊息行,然後在一般標籤的下拉清單框中指定一個名稱。此名稱必須對應於要測試的作業。而且,這些規格可修改為包含測試案例資料。

    舉例來說,依預設,Rose 將顯現訊息規格如下:
    getTransactions(customerID : String)

    此規格可修改為包含單一資料案例如下:
    getTransactions(customerID : String="BBryson")

    對於每一個情境測試,QualityArchitect 會自動產生測試案例資料的資料儲存池。 圖解中的資料將移入第一列。您可以從此處開始新增其他列。
  5. 若要開始測試,請用滑鼠右鍵按一下瀏覽器中的圖解,並選取 Rational 測試 > 產生情境測試。如果提示您登入專案,請登入。 
  6. 這時會顯示對話框,提示您選取情境測試目標。請選取圖解中要參與測試的所有元件。對於已選取的每一個元件,會呼叫該元件訊息中指定的相對應作業。 
對於 COM 元件
  1. 開啟給定的序列圖或合作圖,它為測試中狀況建模。對圖解上要測試的元件指定元件的訊息是很重要的。訊息的指定方式是按兩下訊息行,然後在一般標籤的下拉清單框中指定一個名稱。此名稱必須對應於要測試的作業。而且,這些規格可修改為包含測試案例資料。

    舉例來說,依預設,Rose 將顯現訊息規格如下:
    getTransactions(customerID : String)

    此規格可修改為包含單一資料案例如下:
    getTransactions(customerID : String="BBryson")

    對於每一個情境測試,QualityArchitect 會自動產生測試案例資料的資料儲存池。 圖解中的資料將移入第一列。您可以從此處開始新增其他列。
  2. 若要開始測試,請用滑鼠右鍵按一下瀏覽器中的圖解,並選取 Rational 測試 > 產生情境測試。如果提示您登入專案,請登入。 
  3. 這時會顯示對話框,提示您選取情境測試目標。請選取圖解中要參與測試的所有元件。對於已選取的每一個元件,會呼叫該元件訊息中指定的相對應作業。 
驗證點

同樣地,也是在測試結束時,對於要呼叫的每一個作業,會提示您插入驗證點。QualityArchitect 使用驗證點來驗證作業是否正確進行。雖然驗證點架構是開放且可延伸的,但目前只實作資料庫驗證點。資料庫驗證點可讓您輸入一些 SQL 來執行查詢。所建立的查詢將在測試時間執行,以驗證元件是否有正確操作資料庫。 

Help 圖示 您可以使用在 QualityArchitect 線上說明中找到的步驟來實作自己的驗證點。

  1. 選取來插入驗證點。
  2. 選取要插入的驗證點的適當類型。除非您已實作自己的驗證點,否則必須選取資料庫 VP
  3. 您會看到查詢建置器,可用它來建立資料庫的連線參數,及建置要執行的查詢,來驗證所呼叫的作業是否正確運作。對基礎資料庫和 SQL 語法必須有基本知識才能建立此連線及建立此查詢。

建立所有元件實例、呼叫所有作業及執行插入的驗證點所需的程式碼,是這個階段的輸出。

產生情境測試資料

對於產生的每一個情境測試,QualityArchitect 會自動建立資料儲存池來包含測試資料。 如果在圖解中有指定資料,則此資料儲存池的第一列中可能已移入了該資訊,以及與任何插入的驗證點相關的資訊。否則,資料儲存池只包含與驗證點相關的資訊。

若要檢視及編輯此資訊,請遵循下列步驟:

  1. 從 Rose,選取工具 > Rational 測試 > 工具列。
  2. 在工具列上,選取第二個工具列項目來編輯資料儲存池。QualityArchitect 會建立資料儲存池來包含情境圖解的名稱,其結尾是 _D。用來命名資料儲存池的演算法很複雜,很難預測此文件中的每一個資料儲存池的名稱。

若要編輯此資料,請遵循使用資料儲存池中概述的相同基本步驟。

執行測試和檢查結果

建立測試程式碼和測試資料之後,您就可以開始執行測試。您可以從 IDE 執行測試,或在 TestManager 套組中建立測試排程。如需這個主題的相關資訊,請參閱工具輔助:使用 Rational TestManager 執行測試套組

  1. 當測試開始執行時,會提示您提供測試日誌結果的位置。當您指定位置之後,TestManager 就會呈現在該處執行的測試結果。
  2. 在測試結束時,TestManager 會顯示測試日誌。若要檢視測試結果,請選取「日誌檢視器」視窗的詳細視圖標籤。展開結果的目錄樹視圖,以查看測試執行的詳細資料。如需進一步資訊,在任一行按一下滑鼠右鍵並選取內容即可存取。

對於驗證點,第一次執行時不會提供通過失敗的指示,這次執行是用來擷取查詢結果的 Snapshot,它將作為未來測試執行的基準線資料。

按兩下驗證點,以顯示呈現查詢結果的比較運算子。可編輯這些結果,如果查詢未傳回正確結果,您可以修改此資料。此測試的所有後續執行將比較其查詢結果與第一次執行時擷取的那些結果。

4.   建立 Stub 元件

通常在單元或情境測試中測試的元件是取決於其他元件來完成其作業。當這些次要元件不能運作時,就會發生問題。有時候它們還在開發中;有時候它們問題很多。無論如何,都要等到次要元件可用時才停止測試主要元件。相反地,基於測試目的,Stub 或暫時元件可取代任何未運作元件。Stub 不實作真正元件的功能;它只是對輸入作出反應。Stub 對於給定的值集傳回程式化回應,而不實作任何邏輯。它只是簡單的刺激回應關係而已。

QualityArchitect 可以輕易建立 COM 和 EJB 元件的 Stub。這些 Stub 根據參考表來抄寫它們要取代的元件的商業邏輯。以資料儲存池實作的這個表格將決定給定的輸入集應該有何種回覆值。

建立和部署 Stub 的流程包含下列三個步驟:

  • 產生 Stub 元件
  • 產生 Stub 參考表
  • 部署 Stub

產生 Stub 元件

產生 Stub 時,您必須產生完整元件。對於要產生 Stub 的作業,您需要建立參考表。包含該元件所有作業的 Stub 程式碼的 Stub 元件,是 Stub 產生流程的輸出。您不能對單一作業產生 Stub。

對於 Com 元件
  1. 在邏輯觀點中選取元件介面。
  2. 用滑鼠右鍵按一下該介面,並選取 Rational 測試 > 產生 Stub。會提示您輸入要放置所產生的 Stub 程式碼的位置。請選取這個位置,然後就會產生程式碼。
對於 EJB 元件
  1. 在邏輯觀點中選取 Bean 實作類別。 
  2. 用滑鼠右鍵按一下該類別,並選取 Rational 測試 > 產生 Stub。會提示您輸入要放置所產生的 Stub 程式碼的位置。請選取這個位置,然後就會產生程式碼。

產生 Stub 參考表

若要抄寫真正元件的邏輯,Stub 必須知道當給定引數集時,真正元件如何作出反應。這個邏輯會維護於參考表中,它指定對給定的引數集要傳回何種值或錯誤。您可以對於要產生 Stub 的元件的每一項作業建立一個參考表。

對於 Com 元件
  1. 在邏輯觀點的元件介面之下選取作業。
  2. 用滑鼠右鍵按一下該介面,並選取 Rational 測試 > 建立參考表。這樣會顯示「資料儲存池內容」對話框。
  3. 若要建立此參考表,請遵循使用資料儲存池中概述的相同基本步驟。您將使用此表格來指定要對給定的引數集傳回的值或異常狀況。
對於 EJB 元件
  1. 在邏輯觀點中選取 Bean 實作類別的作業。 
  2. 用滑鼠右鍵按一下該類別,並選取 
  3. Rational 測試 > 建立參考表。這樣會顯示「資料儲存池內容」對話框。
  4. 若要建立此參考表,請遵循使用資料儲存池中概述的相同基本步驟。您將使用此表格來指定要對給定的引數集傳回的值或異常狀況。

部署 Stub

在產生 Stub 和參考表後,必須部署 Stub 來代替現有的元件。這是環境特定的流程,關於這項作業的指引,在 QualityArchitect 線上說明的該標題之下有提供。

5.   使用 EJB 階段作業記錄器

EJB 階段作業記錄器是 Java 應用程式,可讓您與已部署的即時 EJB 元件互動。這個功能只適用於 Enterprise JavaBeans,而不適用於 COM 元件。

使用 EJB 階段作業記錄器的流程包括這些步驟:

  • 啟動 XML 錄製階段作業
  • 連接到 EJB 伺服器
  • 建立測試中 Bean 的實例
  • 對 Bean 呼叫作業
  • 插入驗證點和 Java 程式碼
  • 從 EJB 階段作業錄製作業中產生測試程式碼

EJB 階段作業記錄器可使用於兩種模式:錄製和非錄製。錄製時,所有採取的動作會記錄到 XML 日誌中,EJB 階段作業記錄器再轉換成可執行的 Java 程式碼。此程式碼包含所有方法呼叫、任何插入的 Java 程式碼和驗證點。在非錄製模式中操作時,工具只限於建立 EJB 的實例及呼叫其作業。

  1. 若要連接到 EJB 伺服器,您需要提供 Provider URL 和 InitialContextFactory 來連接到 EJB 伺服器。此資訊應該與用戶端程式碼用來連接該伺服器時所使用的資訊相同。WebSphere 和 Web Logic 的預設連線資訊可在線上產品文件中找到。 
  2. 當您提供連線資訊時,請選取連接,您會看到該伺服器上已部署的 Bean 清單。您可以在階段作業期間與一對多 Bean 互動,而此時您必須選取第一個 Bean 來互動。
  3. 您在這裡建立第一個測試中 Bean 的實例。從「方法」視窗上半部選取適當的建立方法。如果 create 方法需要特定參數,請在參數區段中指定它們。完成後,請選取呼叫來建立 Bean 的實例。
  4. 建立 Bean 的實例之後,EJB 階段作業記錄器就會呈現可對該 Bean 使用的不同作業。您會在「方法」視窗上半部看到 Bean 自己的作業,在下半部看到沿用的作業。通常,您不必測試沿用的作業。選取要測試的作業之後,您可以在「參數」視窗中提供此作業的必要參數。
  5. 如果參數是複式物件,會有一個「新建」按鈕。這個按鈕會開啟一個後續的視窗,它顯示對話框,讓您建立必要物件的實例。該視窗會顯示所有建構子和用來建構物件的實例的必要引數。當您提供建構子資訊之後,您需要命名該物件,以便稍後在錄製期間有必要時可以參照它。 
  6. 如果這些名稱的值會在階段作業錄製期間重新使用的話,則指定參數名稱很重要。如果您提供一個名稱,當您用滑鼠右鍵按一下某參數欄位時,QualityArchitect 就可以在該欄位中輸入該值。
  7. 當您按一下呼叫,就會以提供的參數來呼叫該作業。回覆值會顯示在 最後回覆值欄位中。如果這個值必須作為後續呼叫的輸入,則可以將它拖放到必要欄位中。當滑鼠指向要插入值的參數欄位時,您也可以用滑鼠右鍵按一下它。為了決定右鍵功能表上會出現哪些值,EJB 階段作業記錄器會將參數類型比對測試期間使用的先前類型。 
  8. 在階段作業的任何時間點上,您都可以從插入功能表插入 Java 程式碼或驗證點。驗證點與在產生情境測試程式碼時使用的那些驗證點相同。同樣地,可插入 Java 程式碼來執行任何其他處理。
  9. 如果您是在錄製模式,當測試的所有步驟都完成後,您可以將 XML 型錄製作業轉換成 Java 程式碼。按一下停止來執行此動作。會提示您將 XML 程式碼轉換成 Java 程式碼,而且您需要提供階段作業名稱和 Script 名稱。您可以執行來抄寫您在錄製期間採取的步驟的 Java 程式碼,是此流程的輸出。