專利名稱:公用對象請求代理程序體系結構接口自動測試方法和裝置的制作方法
技術領域:
本發(fā)明涉及自動化測試領域,尤其涉及一種公用對象請求代理程序體系結構 (Common Object Request Broker Architecture,簡稱 CORBA)接口 自動測試的方法和裝置。
背景技術:
CORBA允許應用程序和其他的應用程序通訊,通訊的雙方分別作為客戶端和服務 端,通過實現(xiàn)對象請求代理(Object Request Broker,簡稱ORB)來激活雙方的交互??蛻?端和服務端分別承擔了管理者和代理者的角色。管理者的任務是發(fā)送管理命令并接收代理 者發(fā)來的通知;代理者的任務是直接管理有關的管理對象,接收管理者發(fā)來的管理命令并 向管理者返回操作響應,也可在需要時主動向管理者發(fā)出通知。CORBA 接口由接口定義語言(Interface Definition Language,簡稱 IDL)定義, 它和使用的編程語言無關,通過實現(xiàn)對象請求代理來激活客戶/服務器的交互。服務端負 責實現(xiàn)IDL定義的各種接口,客戶端根據(jù)IDL編寫客戶端代碼,向服務端對象發(fā)出接口調用 請求,服務端響應該請求并返回結果給客戶端。因此,測試CORBA接口的前提就是要編寫客 戶端,向服務端發(fā)起接口調用請求,接收并處理服務端返回結果。如
圖1所示,現(xiàn)有的CORBA接口測試方法。圖中,101是IDL編譯器,102是IDL文 件定義單元,IDL編譯器101負責將IDL文件定義單元102的IDL文件編譯為單元103的 目標語言類。之后將單元103的類手工部署到目標語言工程中,然后逐個編寫IDL文件定 義單元102中每個IDL文件定義接口的客戶端調用代碼和返回結果處理代碼,即單元104。 單元103和單元104共同組成了 CORBA客戶端。并且測試用例105往往需要手工編寫,且 對客戶端的依賴性較強。最后運行客戶端,發(fā)起相關接口調用查看服務端返回的運行結果 是否與預期一致。這種測試方法的缺點是每個接口的調用代碼和返回結果處理代碼都要手工編 寫,代碼編寫工作量較大;如果IDL定義頻繁修改,IDL編譯器就要隨之進行編譯為目標語 言類,并部署到工程中,CORBA接口的客戶端調用代碼需要同步頻繁修改;每個接口的測試 用例多為手工編寫,生成測試用例的效率不高;幾個接口間的組合測試不易實現(xiàn),每種組合 都需要手工編寫流程代碼。以上這些缺點也決定了傳統(tǒng)的CORBA接口測試方法通用性不 高,客戶端代碼往往需要針對某一 IDL進行定制,影響了 CORBA接口的測試效率。
發(fā)明內容
本發(fā)明所要解決的技術問題是提供一種CORBA接口自動測試方法和裝置,以解決 現(xiàn)有技術中手工編寫接口調用代碼繁復以及CORBA接口測試效率低等的問題。為了解決上述技術問題,本發(fā)明提供了一種CORBA接口自動測試方法,該方法包 括以下步驟接口定義語言定義的文件被編譯為目標語言類后,搜索所述目標語言類中的所有
4方法,并獲取接口信息;根據(jù)所述獲取的接口信息,生成測試用例;獲取輸入數(shù)據(jù),生成所述測試用例對應的測試用例數(shù)據(jù);調用公用對象請求代理程序體系結構的動態(tài)調用接口,執(zhí)行所述測試用例,將所述測試用例數(shù)據(jù)轉化為公用對象請求代理程序體系結構客戶端向服務端的調用請求;并記 錄服務端返回的操作響應結果。所述根據(jù)所述獲取的接口信息,生成測試用例包括根據(jù)所述獲取到的接口信息,構造參數(shù)樹的根結點和各子結點,生成所述測試用 例。所述測試用例以所述參數(shù)樹的方式在用戶界面圖形上呈現(xiàn),以及測試用例通過 XML文件來保存。所述根據(jù)所述獲取的接口信息,生成測試用例;和獲取輸入數(shù)據(jù),生成所述測試用 例對應的測試用例數(shù)據(jù)之間還包括將多個測試用例構建成測試用例集。所述獲取輸入數(shù)據(jù),生成所述測試用例對應的測試用例數(shù)據(jù);和所述調用公用對 象請求代理程序體系結構的動態(tài)連接接口之間,還包括將所述測試用例集分解為單個的 測試用例。所述輸入數(shù)據(jù)是通過所述參數(shù)樹的葉子結點輸入;或者所述輸入數(shù)據(jù)是通過所述 XML文件中的元素標簽對應的結點填入數(shù)據(jù)本發(fā)明還提供了一種CORBA接口自動測試裝置,該裝置包括搜索獲取模塊,用于在接口定義語言定義文件編譯為目標語言類后,搜索所述目 標語言類中的所有方法,并獲取接口信息;測試用例生成模塊,與所述搜索獲取模塊連接,用于根據(jù)所述獲取的接口信息,生 成測試用例;測試用例數(shù)據(jù)模塊,與所述測試用例生成模塊連接,用于獲取輸入數(shù)據(jù),生成所述 測試用例對應的測試用例數(shù)據(jù);測試用例執(zhí)行模塊,與所述測試用例數(shù)據(jù)模塊連接,用于調用公用對象請求代理 程序體系結構的動態(tài)調用接口,執(zhí)行所述測試用例,將所述測試用例數(shù)據(jù)轉化為公用對象 請求代理程序體系結構客戶端向服務端的調用;并記錄服務端返回的操作響應結果。所述測試用例以所述參數(shù)樹的方式在用戶界面圖形上呈現(xiàn)測試用例,或者所述測 試用例是通過XML文件來保存的。所述的公用對象請求代理程序體系結構接口自動測試裝置,還包括測試用例集模塊,與所述測試用例生成模塊和測試用例執(zhí)行模塊連接,用于將多 個測試用例構建成測試用例集,并且將所述測試用例集分解為單個的測試用例。所述輸入數(shù)據(jù)是通過所述參數(shù)樹的葉子結點輸入或者所述輸入數(shù)據(jù)是通過所述 XML文件中的元素標簽對應的結點填入數(shù)據(jù)。因此,本發(fā)明每個接口的測試用例都可以自動生成,降低了編寫用例的難度,同時 提高了維護用例的效率;接口間的組合測試可以通過自由構建測試用例集來實現(xiàn),大大提 高CORBA接口的測試效率,豐富了 CORBA接口自動化測試方法。
圖1為現(xiàn)有的CORBA接口測試方法;圖2為本發(fā)明一種CORBA接口自動測試方法實施例1的流程圖;圖3為本發(fā)明構造各種參數(shù)類型結點的示意圖; 圖4為本發(fā)明一種CORBA接口自動測試方法實施例2的流程圖。
具體實施例方式下面通過附圖和實施例,對本發(fā)明實施例的技術方案做進一步的詳細描述。如圖2所示,為本發(fā)明一種CORBA接口自動測試方法實施例1的流程圖,包括以下 步驟步驟21,判斷IDL定義的文件是否已經(jīng)編譯,如果是,執(zhí)行步驟23 ;如果否,執(zhí)行步 驟22,調用CORBA提供的IDL編譯接口,將IDL定義文件自動編譯為目標語言類;經(jīng)過編譯 后的IDL文件被映射為目標編程語言的一個形如XXXOperations的類,其中XXX為IDL接 口名,這個Operations類中包含了 IDL接口定義的類型、異常、屬性、操作等在目標語言中 的映射。步驟23,搜索所述目標語言類如XXXOperations類中的所有方法(Method),并獲 取接口信息,例如輸入輸出參數(shù)類型、返回參數(shù)類型、拋出異常類型等詳細信息;這些信息 是測試用例的框架。步驟24,根據(jù)所述獲取到的接口信息,構造參數(shù)樹的根結點和各子結點,生成所述 測試用例(具體可參見圖3所示,構造各種參數(shù)類型結點的示意圖)步驟241,構建參數(shù)樹的根結點,接口名作為樹的根結點;步驟242,根據(jù)輸入?yún)?shù)構造樹的各子結點。第一層子結點是該接口的輸入?yún)?shù), 樹結點記錄輸入?yún)?shù)名字和類型。如果輸入?yún)?shù)是原子類型,可直接在該結點設置參數(shù)取 值;如果輸入?yún)?shù)是IDL定義的復雜類型,那么會繼續(xù)構造一棵以該復雜類型為根結點的 子樹,如此遞歸將此復雜類型的數(shù)據(jù)結構清晰的呈現(xiàn)在該子樹上(即構建子樹后,該復雜 類型的數(shù)據(jù)依次構建葉子結點)。所有的葉子結點是設置測試用例數(shù)據(jù)的地方。如圖3中 所示的復雜類型有Sequendunion、struct等類型的子樹,以構造一個struct類型的子樹 為例講述構造子樹的過程,為方便描述假設struct表示為A(AType),其中A是該結構的名 字,AType是該結構的類型,該結構有兩個結構成員al (typel)和a2 (type2),則該struct 類型的子樹的根節(jié)點可構造為A :AType,其子結點是該結構的所有成員,分別為al :typel 和a2 :type2,如果typel或type2是原子類型,那么該子節(jié)點即為葉子節(jié)點,如果typel或 type2是IDL定義的復雜類型,則繼續(xù)遞歸構造子樹。步驟243,將構造的參數(shù)樹以約定的格式如可擴展標記語言(ExtensibIeMarkup Language,簡稱XML)格式保存為接口的測試用例文件。所述測試用例以所述參數(shù)樹的方式在用戶界面圖形上呈現(xiàn)測試用例,以及通過 XML文件來保存。測試用例文件以XML方式進行存儲,與參數(shù)樹不同的是,測試用例文件不 但要保存輸入?yún)?shù)信息,還要保存輸出參數(shù)、返回結果、異常的信息。每個接口的測試用例 都可以自動生成,降低了編寫用例的難度,同時提高了維護用例的效率;步驟25,獲取輸入數(shù)據(jù),生成所述測試用例對應的測試用例數(shù)據(jù);所述輸入數(shù)據(jù)是通過所述參數(shù)樹的葉子結點輸入;或者所述輸入數(shù)據(jù)是通過所述XML文件中的元素標簽 對應的結點填入數(shù)據(jù)生成的圖形用戶界面(Graphical User Interface,簡稱⑶I)上的參 數(shù)樹的葉子結點,和XML文件中Value標簽對應的結點就是允許用戶輸入數(shù)據(jù)的結點。GUI 界面接受用戶輸入字符串即可,用戶輸入的字符串保存到XML文件對應的Value標簽中就 生成了一組測試用例數(shù)據(jù)。當然也可以手工填寫XML文件Value標簽的內容生成測試用例 數(shù)據(jù)。針對不同的測試用例數(shù)據(jù)可以選擇保存為不同的XML文件。步驟26,調用公用對象請求代理程序體系結構的動態(tài)調用接口 (Dynamiclnvocation Interface, DII),執(zhí)行所述測試用例,將所述測試用例數(shù)據(jù)轉化為 CORBA客戶端向服務端的CORBA接口調用請求;并記錄服務端返回的操作響應結果,具體為 得到服務端的輸出值、返回結果和異常,根據(jù)輸出值、返回結果、異常類型調用CORBA平臺 DII接口相關操作解析和記錄,形成完整的測試記錄。采用本發(fā)明,CORBA每個接口的調用代碼和返回處理代碼都自動生成,IDL定義頻 繁變更時CORBA客戶端代碼無需變更(這是因為IDL變更只需重新編譯一下IDL,無需改動 任何代碼即可使用),也無需手動編譯IDL并部署到工程中。如圖4所示,為本發(fā)明一種CORBA接口自動測試方法實施例2的流程圖,本實施例 2同實施例1的不同在于,本發(fā)明CORBA接口間的組合測試可以通過自由構建測試用例集 來實現(xiàn)。即如圖4所示,本實施例在上述步驟24和步驟25之間還包括步驟110將多個測 試用例構建成測試用例集。將多個測試用例以某種測試邏輯組織起來保存為一個測試用例 集,其中測試用例集只記錄用例的名字,用例的執(zhí)行順序可根據(jù)需要自由調整。然后以測試 用例集為單位做測試執(zhí)行,由于以這種方法可以批量執(zhí)行測試用例,且用例集往往保存了 一種測試邏輯,比如先執(zhí)行哪個用例后執(zhí)行哪個,這樣也可以避免遺漏某些邏輯,因此非常 適合回歸測試,同時也是一種非常好的自動化測試思路。繼續(xù)如圖4所示,本實施例2在上述步驟25和步驟26之間還包括步驟120將所 述測試用例集分解為單個的測試用例。將測試用例集分解為單個測試用例XML文件逐個執(zhí) 行。然后在步驟26中按照測試用例集中測試用例的次序依次調用CORBA平臺提供的DII 接口,接著執(zhí)行步驟26。該實施例2體現(xiàn)了 CORBA接口間的組合測試可以通過自由構建測試用例集來實 現(xiàn)。通過本實施例1和實施例2本發(fā)明方法屏蔽了 IDL變更給CORBA接口測試帶來的額外 的工作量,大大提高CORBA接口的測試效率,豐富了 CORBA接口自動化測試方法。本發(fā)明提 供了一種通用的CORBA接口自動化測試方法,只要是遵循CORBA協(xié)議的網(wǎng)管接口,本發(fā)明提 供的方法都是可行的。相應地,本發(fā)明提供了一種公用對象請求代理程序體系結構接口自動測試裝置, 包括搜索獲取模塊,用于在接口定義語言定義文件編譯為目標語言類后,搜索所述目 標語言類中的所有方法,并獲取接口信息;測試用例生成模塊,與所述搜索獲取模塊連接,用于根據(jù)所述獲取的接口信息,生 成測試用例;測試用例數(shù)據(jù)模塊,與所述測試用例生成模塊連接,用于獲取輸入數(shù)據(jù),生成所述 測試用例對應的測試用例數(shù)據(jù);
7
測試用例執(zhí)行模塊,與所述測試用例數(shù)據(jù)模塊連接,用于調用公用對象請求代理 程序體系結構的動態(tài)連接接口,執(zhí)行所述測試用例,將所述測試用例數(shù)據(jù)轉化為CORBA客 戶端向服務端的調用;并記錄服務端返回的操作響應結果和捕捉服務器拋出的異常。該公用對象請求代理程序體系結構接口自動測試裝置還包括測試用例集模塊, 與所述測試用例生成模塊和測試用例執(zhí)行模塊連接,用于將多個測試用例構建成測試用例 集,并且將所述測試用例集分解為單個的測試用例。所述測試用例以所述參數(shù)樹的方式在用戶界面圖形上呈現(xiàn)測試用例,或者所述測 試用例是通過XML文件來保存的。所述輸入數(shù)據(jù)是通過所述參數(shù)樹的葉子結點輸入或者所 述輸入數(shù)據(jù)是通過所述XML文件中的Value標簽對應的結點輸入。通過本發(fā)明提供的公用對象請求代理程序體系結構接口自動測試裝置可以實現(xiàn) 上述實施例1和實施例2描述的兩種情況。本發(fā)明自動編譯IDL,自動生成IDL定義的每個接口的客戶端調用代碼和返回結 果處理代碼(這是因為執(zhí)行的時候根據(jù)測試用例中的信息自動生成客戶端調用代碼;返回 結果的處理是在執(zhí)行過程后處理的),自動生成測試用例,組織測試用例的執(zhí)行次序并構建 測試用例集,執(zhí)行測試用例集記錄服務端返回的操作響應結果。最后應當說明的是,以上實施例僅用以說明本發(fā)明的技術方案而非限制,盡管參 照較佳實施例對本發(fā)明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發(fā)明 進行修改、更改或者等同替換,而不脫離本發(fā)明和權利要求的精神和范圍。
權利要求
1.一種公用對象請求代理程序體系結構接口自動測試方法,其特征在于,包括接口定義語言定義的文件被編譯為目標語言類后,搜索所述目標語言類中的所有方法,并獲取接口信息;根據(jù)所述獲取的接口信息,生成測試用例;獲取輸入數(shù)據(jù),生成所述測試用例對應的測試用例數(shù)據(jù);調用公用對象請求代理程序體系結構的動態(tài)調用接口,執(zhí)行所述測試用例,將所述測 試用例數(shù)據(jù)轉化為公用對象請求代理程序體系結構客戶端向服務端的調用請求;并記錄服 務端返回的操作響應結果。
2.如權利要求1所述的公用對象請求代理程序體系結構接口自動測試方法,其特征在 于,所述根據(jù)所述獲取的接口信息,生成測試用例包括根據(jù)所述獲取到的接口信息,構造參數(shù)樹的根結點和各子結點,生成所述測試用例。
3.如權利要求2所述的公用對象請求代理程序體系結構接口自動測試方法,其特征在 于,所述測試用例以所述參數(shù)樹的方式在用戶界面圖形上呈現(xiàn),以及測試用例通過XML文 件來保存。
4.如權利要求1所述的公用對象請求代理程序體系結構接口自動測試方法,其特征在 于,所述根據(jù)所述獲取的接口信息,生成測試用例;和獲取輸入數(shù)據(jù),生成所述測試用例對 應的測試用例數(shù)據(jù)之間還包括將多個測試用例構建成測試用例集。
5.如權利要求4所述的公用對象請求代理程序體系結構接口自動測試方法,其特征在 于,所述獲取輸入數(shù)據(jù),生成所述測試用例對應的測試用例數(shù)據(jù);和所述調用公用對象請求 代理程序體系結構的動態(tài)連接接口之間,還包括將所述測試用例集分解為單個的測試用例。
6.如權利要求3所述的公用對象請求代理程序體系結構接口自動測試方法,其特征在 于,所述輸入數(shù)據(jù)是通過所述參數(shù)樹的葉子結點輸入;或者所述輸入數(shù)據(jù)是通過所述XML 文件中的元素標簽對應的結點填入數(shù)據(jù)
7.一種公用對象請求代理程序體系結構接口自動測試裝置,其特征在于,包括搜索獲取模塊,用于在接口定義語言定義文件編譯為目標語言類后,搜索所述目標語 言類中的所有方法,并獲取接口信息;測試用例生成模塊,與所述搜索獲取模塊連接,用于根據(jù)所述獲取的接口信息,生成測 試用例;測試用例數(shù)據(jù)模塊,與所述測試用例生成模塊連接,用于獲取輸入數(shù)據(jù),生成所述測試 用例對應的測試用例數(shù)據(jù);測試用例執(zhí)行模塊,與所述測試用例數(shù)據(jù)模塊連接,用于調用公用對象請求代理程序 體系結構的動態(tài)調用接口,執(zhí)行所述測試用例,將所述測試用例數(shù)據(jù)轉化為公用對象請求 代理程序體系結構客戶端向服務端的調用請求;并記錄服務端返回的操作響應結果。
8.如權利要求7所述的公用對象請求代理程序體系結構接口自動測試裝置,其特征在 于,所述測試用例以所述參數(shù)樹的方式在用戶界面圖形上呈現(xiàn)測試用例,或者所述測試用 例是通過XML文件來保存的。
9.如權利要求8所述的公用對象請求代理程序體系結構接口自動測試裝置,其特征在于,還包括測試用例集模塊,與所述測試用例生成模塊和測試用例執(zhí)行模塊連接,用于將多個測 試用例構建成測試用例集,并且將所述測試用例集分解為單個的測試用例。
10.如權利要求9所述的公用對象請求代理程序體系結構接口自動測試方法,其特征 在于,所述輸入數(shù)據(jù)是通過所述參數(shù)樹的葉子結點輸入或者所述輸入數(shù)據(jù)是通過所述XML 文件中的元素標簽對應的結點填入數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種公用對象請求代理程序體系結構接口自動測試方法及裝置,該方法包括搜索目標語言類中的所有方法,并獲取接口信息;生成測試用例;生成測試用例數(shù)據(jù);調用動態(tài)調用接口,執(zhí)行測試用例,將測試用例數(shù)據(jù)轉化為客戶端向服務端的調用請求;并記錄服務端返回的操作響應結果。該裝置包括搜索獲取模塊;測試用例生成模塊,與所述搜索獲取模塊連接;測試用例數(shù)據(jù)模塊,與測試用例生成模塊連接;測試用例執(zhí)行模塊,與測試用例數(shù)據(jù)模塊連接。因此,本發(fā)明每個接口的測試用例都可以自動生成,降低了編寫用例的難度,同時提高了維護用例的效率;接口間的組合測試可以通過自由構建測試用例集來實現(xiàn)。
文檔編號G06F11/36GK101996132SQ20091016567
公開日2011年3月30日 申請日期2009年8月14日 優(yōu)先權日2009年8月14日
發(fā)明者唐寶玉, 張利錕, 王磊, 董嘉 申請人:中興通訊股份有限公司