程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Rational >> 使用IBM Rational的統一的測試工具集測試並仿真Web Services

使用IBM Rational的統一的測試工具集測試並仿真Web Services

編輯:Rational

IBM Rational Test Workbench(RTW)是 IBM Rational 的統一的測試工具集,包括功能測試、性能測試 、接口測試等模塊,滿足客戶多種類型的自動化測試需求。其中 Rational Integration Tester(以下簡稱 RIT)是接口測試工具,可以對包括 Web Services、HTTP、Socket、MQ、Database 等多種類型的接口直接進 行自動化的功能/性能測試測試。本文介紹如何通過 Rational Integration Tester 來測試 Web Services, 並結合 Rational Test Virtualization Server(RTVS)實現 Web Services 的虛擬化仿真。

概括

IBM Rational Test Workbench(RTW)是 IBM Rational 的統一的測試工具集,包括功能測試、性能 測試、接口測試等模塊,滿足客戶多種類型的自動化測試需求。其中 Rational Integration Tester(以下簡 稱 RIT)是接口測試工具,可以對包括 Web Services、HTTP、Socket、MQ、Database 等多種類型的接口直接 進行自動化的功能/性能測試測試。本文介紹如何通過 Rational Integration Tester 來測試 Web Services ,並結合 Rational Test Virtualization Server(RTVS)實現 Web Services 的虛擬化仿真。

在進 行下面的工作前,請首先安裝 RIT、RTVS,我們將在後面使用這兩個產品進行自動化接口測試和接口的服務仿 真。

環境准備:啟動 Web Services 應用

啟動 Web Services: 解壓縮附件的 webservices.zip 到本地目錄,雙擊 runcalculatorservice.bat 文件,將會啟動一個做四則運算的 Web Services,如下圖所示:

圖 1. 啟動 Web Services

啟動成功後,可以在浏覽器中打開 http://remy:8084/Calculator?wsdl(不同的客戶端機器名會自動匹配)查看該 Web Services 的 WSDL 定義 。可以訪問到該頁面,則說明 Web Services 啟動成功。該 Web Services 提供四則運算,如 Add 方法,就 支持對傳入了兩個整形參數值計算求和,然後返回求和者。

啟動 RIT, 建立項目

開始菜單 - 所有程序 -IBM Rational Integration Tester;打開 RIT,選擇新建一個項目 , 項目名字 0623_webservice 。項目建立成功後自動進入 RIT 界面,如下:

圖 2. RIT 主界面

如上,RIT 的主界面中,除了傳統 的菜單,工具欄顯示等,還包括了下面的不同視圖,依次由邏輯視圖,物理視圖等 7 個視圖,每個視圖代表 集成測試的不同階段任務。這些細節我們後續再討論。

項目建立以後進入 RIT 主界面,在頂層菜單中 點擊 Project -> Create New Environment( 項目 - 新建環境)創建一個新的環境 SVT_Environment(名 字任意)。環境屬性先保留為空;後續我們會把具體的測試環境綁定到 SVT_Environment。

圖 3. 新 建測試環境

使用 RIT 的 WSDL 同步功能, 導入 Web Services 接口定義信息

針對 Web Services,RIT 提供了功能強大的、開箱即用的同步功能 用於幫助我們針對被測的 Web Services 自動生成相關的邏輯架構和物理架構。在邏輯試圖中點擊按鈕,選擇 WSDL 作為被同步的資源類型。

點擊新建按鈕,在依次出現的窗口中,依次選擇"新建", "更改","URL", 以指向具體的 WSDL 路徑,我們這裡就是 http://remy:8084/Calculator?wsdl。在 URL 欄填入 WSDL 定義。

圖 4. 導入外部 WSDL 接口定義信 息

確定之後點擊"下一步",選擇"創建新組件", 點擊"下一步",選擇之 前創建的 Environment,點擊"下一步"。

圖 5. 根據導入信息,建立新組件

在同步 選項(Synchronisation option)窗口中選擇打開同步視圖並執行同步(Open Synchronisation View and performance Synchronisation ), 該選項表示使用 RIT 自動地根據 WSDL 中的相關定義在當前 Environment 下生成表示該 Web Services 的邏輯架構和物理架構,點擊完成。

圖 6. 打開同步視圖 ,准備同步

RIT 會在將同步結果予以顯示。如 果 Status(狀態)的狀態都是 In sync(同步),則表示該 Web Services 相關的方法,HTTP Transportation 邏輯組件和物理組件均已生成。

圖 7. 同步接口定義信息

點擊 RIT 屏幕視圖 左小角的"邏輯視圖",切換到邏輯視圖,可以查看該 Web Services 在 RIT 中已經自動表示為圖 形化的格式,顯示了該 Web Services 接口有哪些服務,服務調用的地址等。如 "Add","Divide"等 5 個服務,而 CalculatorPort 對應是一個 HTTP connection, 表 示服務的調用地址;

圖 8. 邏輯視圖中查看“接口定義”

可以雙擊打開 CalculatorPort. 查 看其對應的具體地址,在"綁定"Tab 頁面,可以看到其對應的 SVT_Environment 環境中對應的具 體地址。在這裡就看出了"環境"的作用,任何一個服務或者 HTTP connection, 都可以在不同環境 中對應不同的地址,如在集成測試環境專用對一個網址,而在系統測試中對應另外一個網址;就可以實現一套 架構,不同環境之間的快速切換。

圖 9. 查看 HTTP connection 內容

在這裡,也可以點擊 RIT 屏幕視圖左小角的"物理視圖",切換到物理視圖,可以查看該 Web Services 使用的 HTTP Transportation 在 RIT 中的對應哪些物理地址。

圖 10. 物理視圖

而對於具體的接口方 法,可以單擊"ADD"方法,打開查看信息:我們主要討論這幾個欄位:

名稱:Add

模 式:請求 / 應答

傳輸:CalculatorPort

這就對應了消息傳遞中的幾個要素,傳輸表示通訊協 議,即"消息采用什麼通道,傳遞到哪裡";而模式則首先按照大類來區分,是"請求/響應 "模式,還是"廣播"等其他模式;確定了大模式,就給定了和標准了即"發送什麼格式數 據給對方,對方什麼格式返回過來",即傳輸對應了 where; 而模式對應了 how。

圖 11. 查看接 口定義信息

選擇"根目錄: Add_input_add"右邊的"浏覽"按鈕,查看該發送請求的數據格式,如下:數據格式是一個 XML 格式,裡面主要有兩個字段,分別是 Value1,Value2。同樣,也可以查看 Add_OUTPUT_AddResponse 對應 的數據格式,其是一個 XML 中的字段;這些數據定義信息從哪裡獲得的?都是在最開始導入的 WSDL 中,那 裡記錄了包括接口定義,傳輸格式,輸入值返回值等各種信息。

圖 12. 接口定義信息

接口的 類型,數據格式在這裡采用導入"WSDL"的格式產生了,後續就可以繼續對這些接口進行測試,繼而 進行虛擬化。

使用 RIT 測試 Web services

在 RIT 主界面中,左上角,切換到測試工廠 (Test Factory),我們對 Add 方法來進行測試。右鍵選擇新建 --> 測試 --> 使用 MEP 的測試 (Add -> New -> Tests -> Test using MEP) 新建一個名稱為 testAdd 的測試。

圖 13. 使用定 義信息建立測試用例

查看該測試的測試步驟 (Test Steps), 可以看到包含了一個發送請求(Send Request)和對應的接受應答(Receive Reply)。我們將在這 裡定義測試消息的詳細信息。

圖 14. 定義測試消息的詳細信息

雙擊右邊 TestAdd 下面測試步驟- 發送請求,在 Value1 和 Value2 處分別填入 1 和 2,表示讓 Web Services 計算"1+2"並返回測 試結果。

圖 15. 設計輸入值

雙擊,在 Result 處填入 3 作為結 算結果。請注意右側的"選擇框"表示已經設置該節點為驗證點。

圖 16. 計期望返回值

右鍵選 擇 testAdd--> 運行測試,可以看到測試通過。

圖 17. 測試通過

在測試日志中點擊發 送請求(Send Request)行,可以查看報文發送的詳細信息。點擊接受應答(Receive Reply)行,可以查看 報文接收的詳細信息。

圖 18. 報文接收的詳細信息

打開 testAdd 的定義,雙擊,將 Result 修改為 2,並重新運行該測試,可以發現測試失敗 (1+2=3, 不是2)。通過在日志中點擊發送請求 (Send Request)和接受應答(Receive Reply)可以查看詳細的報文發送和接收日志。

圖 19. 查看 詳細的報文發送和接收日志

使用 RIT 定義 Web services 服務的 Stub

在上面我們使用 RIT 對 Web Services 接口進行了自 動化的回歸測試。這就是 RIT 的全部功能了?當然不是,最強大的是服務虛擬化,或者叫接口仿真 / 模擬服 務,在真實的服務不能提供工作的時候,使用模擬服務來工作;如使用模擬服務來提供 Web Services 服務。 這就是服務虛擬化,RTVS 中我們定義服務的虛擬化有多種方式,最常用的兩種是錄制和手工配置的方式。後 者適用於在被模擬服務應用不存在或者不可用時使用。采用錄制的方式我們可以很快的定義出一個 Stub 用於 實現服務的虛擬化。

回到 Web Services 的物理視圖,雙擊,在 Client 選項卡中填入如下的信息, 表示所有從該 HTTP Transportation 經過的 HTTP traffic 將會被重定向到 localhost:3128 代理。而 3128 是 RIT platform 的默認端口,RIT 是配合 RIT 使用的代理服務器,可以作為 HTTP,TCP 等協議的代理 服務器。

圖 20. 設置使用代理服務器,提供錄制功能

在 Recording 選項卡選擇記錄模式 為外部代理服務器(External Proxy Sever)。

圖 21. Recording 選項卡選擇記錄模式

雙擊 C:\Program Files\IBM\RIT-Platform\httptcp\startup.bat,啟動 RIT 提供的 HTTP,TCP 代理程序。

圖 22. 啟動 RIT 提供的 HTTP,TCP 代理程序

在 RIT 中切換到記錄工作室 (Recording Studio)視圖,選擇 CalculatorPort 進行錄制。

圖 23. Recording Studio

點擊進 行錄制。

圖 24. 錄制

重新運行測試 testAdd,如果測試 通過,可以發現在記錄工作室(Recording Studio)中已經成功捕獲報文信息。

圖 25. 報文信息

選擇全部的信息,點擊。

圖 26. 保存信息

選擇將錄制的結果保存為一個存根 (Stub),點擊 Next。

在 Data Storage 窗口選擇作為硬編碼值(as hard coded values),表示我們 將創建一個硬編碼的 stub。

圖 27. 創建一個硬編碼的 stub

一直點擊下一步,在摘要窗口為 Stub 起一個名稱,點擊完成。

可以查看 AddStub 的定義,在輸入(Input)和輸出(Output)選項卡 ,分別定義了這個 stub 的入參和出參。

圖 28. 入參和出參

右鍵選擇運行 AddStub,如果 stub 成功啟動,則能看到:

圖 29. 運行 AddStub

關閉之前啟動的 Web Services 啟 動窗口。我們接下來將檢查,沒有正常的 Web Services 存在的下,仿真的(虛擬化)的 Web Services 是否 會接管請求,並做出響應?

圖 30. Web Services 啟動窗口

關閉之前啟動的 Web Services 啟 動窗口。重新運行 testAdd,可以發現即使被測的 Web Services 不可用,測試仍然可以通過。下圖紅色方框 中的 1 表示 Stub 被調用 1 次。而這就是在真實的服務不可以使用的情況下 ( 真實 Web Services 服務已 經被停掉 ), 虛擬化的服務接替提供服務。

圖 31. 仿真的接口提供服務

使用 RTVS 實現 Web services 的服務虛擬化

在 RIT 中定義好 Stub 之後,只是為測試人員所用 。如果想讓團隊成員都能使用,則需要將 Stub 發布到 Rational Test Control Panel(以下簡稱 RTCP)。

在發布之前,需要啟動 RIT Test Agent,雙擊 C:\Program Files\IBM\RIT-Agent\Agent.exe 打開。

雙擊 C:\Program Files\IBM\RationalTestControlPanel\bin\startup.bat,啟動 RTCP。

在 Test Factory 中選擇發布存根(Publish Stubs)。

圖 32. 發布存根

選擇發布到剛在本地啟動的 RTCP Server,點擊發布(Publish)。

在浏覽器中打開 http://localhost:7819/RTCP,登錄之後點擊 VIE,選擇缺省值 ->SVT_Environment->View Dashboard 。

圖 33. View Dashboard

選擇 Start stub,

可以在 彈出的窗口中配置在哪台裝有 Agent 的機器上啟動,啟動 Stub。

圖 34. 啟動 Stub

當狀態 成為 Ready 時,表示成功啟動。

圖 35. 成功啟動

還是保持 Web Services 不可用的 狀態,在 RIT 中再次運行 testAdd 測試用例,如果測試成功通過,查看 RTCP,可以發現計數器由 0 變為 1 ,表示 RTCP 中發布的服務虛擬化被成功調用。

圖 36. 服務虛擬化被成功調用

小結

"兵馬未動,糧草先行",在實際的軟件開發過程中,開發/測試環境就是我們的 "糧草",要工作,必須要有測試環境;而復雜的應用需要的環境又往往互相依賴的多系統;要 "多快省"建立這些復雜的環境,就可以使用服務虛擬化,即服務仿真的技術,來快速建立,多團隊 使用,高效維護這些環境。RIT 提供的接口的自動化測試和服務仿真接口定義,RTVS 則把仿真服務大規模部 署,滿足開發 / 測試等不同團隊的需要,共同幫助解決復雜系統軟件開發過程的"糧草"問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved