專利名稱:一種分布式信息系統(tǒng)接口自動化測試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件自動化測試領(lǐng)域,應(yīng)用于分布式信息系統(tǒng)軟件接口自動化測試中。
背景技術(shù):
分布式信息系統(tǒng)一般由多個分系統(tǒng)組成,各個分系統(tǒng)的計算機設(shè)備以網(wǎng)絡(luò)為紐帶組成了一個局域以太網(wǎng)。各分系統(tǒng)基于以太網(wǎng)硬件拓撲結(jié)構(gòu)組成一個分布式信息系統(tǒng),相互協(xié)同處理實現(xiàn)所有任務(wù)功能。分系統(tǒng)中運行著多個軟件配置項,各個軟件配置項之間的消息通信是靠消息報文的收發(fā)來實現(xiàn),各分系統(tǒng)之間接口的正確性對分布式信息系統(tǒng)的正常工作起著至關(guān)重要的作用。自動化測試是目前測試領(lǐng)域的發(fā)展方向,自動化測試能有效地降低測試成本、提高測試效率和測試覆蓋面?,F(xiàn)有的自動化測試工具,例如QTP、Ranorex、Rational Robot和 LoadRunner,側(cè)重于對界面元素也就是UI (用戶界面)控件的操作來實現(xiàn)自動化測試,通過錄制腳本、生成測試用例腳本和執(zhí)行腳本來實現(xiàn)自動化測試。而分布式信息系統(tǒng)接口測試側(cè)重于各個分系統(tǒng)之間的消息的驗證,因此現(xiàn)有的自動化測試工具并不能直接應(yīng)用于分布式信息系統(tǒng)軟件的接口測試中。接口測試是分布式信息系統(tǒng)軟件測試中非常重要的部分,目的是為驗證分布式信息系統(tǒng)內(nèi)部軟件配置項之間消息的正確性,其中包括消息時序和消息內(nèi)容的正確性等。分布式信息系統(tǒng)軟件具有分布性和異構(gòu)性,分布性體現(xiàn)在所屬各分系統(tǒng)的軟件配置項部署在不同的主機上,依靠網(wǎng)絡(luò)來實現(xiàn)消息的傳遞和通信,異構(gòu)性表現(xiàn)在不同的主機上運行著不同的操作系統(tǒng)平臺,如Windows或Unix等。因此,一個接口測試用例中消息的傳遞通常會涉及到多臺主機和不同的平臺?,F(xiàn)階段,測試人員針對接口測試通常的步驟是1、分析測試用例所涉及到的軟件配置項,選擇相應(yīng)的主機進行消息獲??;2、根據(jù)測試用例的內(nèi)容在相應(yīng)的主機上開啟截包軟件進行消息報文截??;3、使用分析工具驗證所截獲的消息報文中消息名稱和消息字段內(nèi)容是否正確。但是該接口測試方法也存在了不可避免的缺點首先由于分布式信息系統(tǒng)軟件的分布性和異構(gòu)性,測試用例所涉及的消息通信過程復(fù)雜,在接口測試過程中,需要多個測試人員分別在相應(yīng)的主機上進行消息獲取,使得接口測試周期長,難以適應(yīng)分布式信息系統(tǒng)的接口測試特點。第二,分布式信息系統(tǒng)通信協(xié)議復(fù)雜,消息數(shù)量龐大,測試人員通過解析消息報文來獲取消息的字段值,這種方法在消息驗證上花費時間長,準確性低,給測試人員增加了工作量。第三,針對分布式信息系統(tǒng)接口測試,測試人員在多臺被測主機上截取消息報文, 消息報文的收發(fā)時間取決于被測主機當前的時間,而對于不同主機,其系統(tǒng)時間很難一致, 因此,很難根據(jù)現(xiàn)有的測試方法驗證消息的時序性。綜上所述,針對分布式信息系統(tǒng)的特點,現(xiàn)有的自動化測試工具和接口測試方法都不適用于分布式信息系統(tǒng)軟件的接口測試,需要提出一種接口自動化測試的方法,用以解決分布式信息系統(tǒng)軟件接口測試過程中所面臨的問題。
發(fā)明內(nèi)容
本發(fā)明針對目前缺少對分布式信息系統(tǒng)軟件接口進行自動測試的情況,提出一種分布式信息系統(tǒng)接口自動化測試方法,用以提高分布式信息系統(tǒng)軟件接口測試效率。一種分布式信息系統(tǒng)接口自動化測試方法,具體包括以下步驟步驟一、自動化測試控制端解析接口測試用例文件,獲取接口測試用例執(zhí)行的前提信息相關(guān)被測軟件配置項以及被測軟件配置項所在的被測主機,并驗證該接口測試用例執(zhí)行的前提信息是否滿足執(zhí)行條件,若滿足,則執(zhí)行下一步驟,否則結(jié)束該接口測試用例的執(zhí)行;步驟二、自動化測試控制端向被測主機中的代理程序發(fā)送測試消息;步驟三、被測主機中的代理程序接收到自動化測試控制端發(fā)送的測試消息后,解析該測試消息,開始監(jiān)聽被測主機發(fā)送的消息報文;步驟四、自動化測試控制端解析接口測試用例文件,獲取該接口測試用例中消息的觸發(fā)方式,判斷該接口測試用例中第一條消息的產(chǎn)生方式是否為事件觸發(fā),若是,則自動化測試控制端向被測主機的代理程序發(fā)送測試腳本,代理程序調(diào)用其所在主機中的自動化測試工具執(zhí)行測試腳本,然后執(zhí)行步驟五,若不是,直接執(zhí)行步驟五;步驟五、代理程序?qū)⑺O(jiān)聽到的消息報文實時轉(zhuǎn)發(fā)給自動化測試控制端;步驟六、自動化測試控制端解析接收到的消息報文,輸出驗證結(jié)果;步驟七、根據(jù)驗證結(jié)果生成測試報告,并輸出給用戶。步驟一中所述的自動化測試控制端部署在與被測系統(tǒng)獨立的主機中。所述的接口測試用例文件為已定義好的XML文件,文件內(nèi)容包括接口用例執(zhí)行所需的相關(guān)信息。所述執(zhí)行條件包括被測軟件配置項所在主機的工作正常和相關(guān)被測軟件配置項已開啟。步驟二中所述的代理程序部署在被測主機中,在測試過程中代理程序與自動化測試控制端進行通信,在接口測試過程中它接收控制端發(fā)送的測試消息,并且在測試執(zhí)行過程中將消息報文發(fā)送給自動化測試控制端。步驟四中所述的測試腳本是指現(xiàn)有的自動化測試軟件能夠解釋并執(zhí)行的腳本,代理程序通過調(diào)用現(xiàn)有的自動化測試軟件來執(zhí)行該測試腳本,現(xiàn)有的自動化測試工具根據(jù)測試腳本內(nèi)容進行相應(yīng)的操作。本發(fā)明的接口自動化測試方法的優(yōu)點和積極效果在于(1)本發(fā)明接口測試方法實現(xiàn)了分布式信息系統(tǒng)接口測試用例的自動化執(zhí)行、測試數(shù)據(jù)信息的自動采集、測試結(jié)果的自動驗證和測試報告的自動生成,提高了測試人員的工作效率。(2)本發(fā)明實現(xiàn)了分布式信息系統(tǒng)軟件接口自動化測試,通過代理程序轉(zhuǎn)發(fā)軟件配置項間通信的消息報文給控制端進行統(tǒng)一處理,不需要多個測試人員在不同的主機上進行測試操作,從而簡化了測試人員的工作。(3)代理程序?qū)⒈粶y主機發(fā)送的消息報文實時轉(zhuǎn)發(fā)給測試控制端,在測試控制端實現(xiàn)了被測主機之間消息報文的時序性驗證。
(4)在自動化測試的全過程中使用XML文件描述測試用例、測試消息和測試報告, 使得接口測試用例文件具有跨平臺性,同時使得接口測試用例文件和測試結(jié)果報告更具有可編輯性和可讀性。(5)根據(jù)驗證結(jié)果自動生成測試用例執(zhí)行測試報告,減輕了測試人員的工作量。
圖1為本發(fā)明分布式信息系統(tǒng)軟件接口自動化測試方法流程圖;圖2為本發(fā)明接口測試用例文件示意圖;圖3為本發(fā)明測試消息文件示意圖;圖4為本發(fā)明消息內(nèi)容和消息時序的驗證流程圖;圖5為本發(fā)明測試報告文件示意圖。
具體實施例方式下面將結(jié)合附圖對本發(fā)明作進一步的詳細說明。本發(fā)明針對分布式信息系統(tǒng)軟件接口自動化測試方法,如圖1所示,具體包括以下步驟步驟一、自動化測試控制端解析接口測試用例文件,獲取接口測試用例信息,驗證該接口測試用例執(zhí)行的前提條件是否滿足執(zhí)行條件,若滿足,則執(zhí)行下一步驟,否則,該接口測試用例執(zhí)行結(jié)束。所述的自動化測試控制端為部署在與被測系統(tǒng)獨立的主機中的自動化測試控制端軟件,用來解析接口測試用例文件,驗證接口測試用例是否能夠執(zhí)行,在接口測試用例執(zhí)行過程中向被測主機發(fā)送測試腳本,以及接收被測主機的消息報文,解析接收到的消息報文生成測試報告。所述的接口測試用例信息包括接口測試用例執(zhí)行的相關(guān)被測軟件配置項以及被測軟件配置項所在的主機。所述執(zhí)行條件主要包括被測軟件配置項所在主機工作正常以及相關(guān)被測軟件配置項已開啟等。所述的接口測試用例文件為已定義好的XML文件,文件內(nèi)容包括接口用例執(zhí)行所需的相關(guān)信息。下面舉例說明接口測試用例,該用例測試系統(tǒng)狀態(tài)由工作轉(zhuǎn)換為待機過程中的消息交互的正確性。下述CSCI_A, CSCI_B,CSCI_C 為軟件配置項名稱,Station_A, Station_B> Station_C為主機名稱,軟件配置項CSCI_A、CSCI_B和CSCI_C分別部署在主機Station_A、 Station_B> Station_C中。測試約束條件為軟件配置項CSCI_A,CSCI_B,CSCI_C開啟,主機Mati0n_A、Mati0n_B、Mati0n_C工作正常;該測試用例中消息的傳遞行需要用戶的激勵操作,激勵操作為左鍵單擊CSCI_A的工作狀態(tài)轉(zhuǎn)換界面中“待機”按鈕。具體測試步驟為第1步軟件配置項CSCI_A向軟件配置項CSCI_B發(fā)送工作狀態(tài)轉(zhuǎn)換請求STATUS_ CHANGE_REQ消息,該消息為事件觸發(fā),產(chǎn)生消息的事件為用戶操作為鼠標左鍵單擊軟件配置項CSCI_A的工作狀態(tài)轉(zhuǎn)換界面中“待機”按鈕。消息STATUS_CHANGE_REQ中字段SUBSYS 值為1000,字段W0RK_STUTAS值為1 ;字段SUBSYS表示發(fā)送消息的軟件配置項所屬的分系統(tǒng),字段W0RK_STUTAS表示分系統(tǒng)的工作狀態(tài)。第2步軟件配置項CSCI_B在收到STATUS_CHANGE_REQ消息后向軟件配置項
7CSCI_A發(fā)送STATUS_CHANGE_ACK消息,該消息為消息觸發(fā),消息STATUS_CHANGE_ACK中字段 SUBSYS 值為 2000,字段 W0RK_STUTAS 值為 0 ;第3步軟件配置項CSCI_A在收到消息STATUS_CHANGE_ACK后向軟件配置項 CSCI_C發(fā)送DBA_DATA_REQ消息,該消息為消息觸發(fā),消息DBA_DATA_REQ中字段SUBSYS值為 1000,字段 W0RK_STUTAS 值為 0。上述系統(tǒng)工作狀態(tài)轉(zhuǎn)換接口測試用例可以被XML文件所描述。如圖2所示,該文件中各元素的含義如下l)<testcase>元素為根元素,表示一個接口測試用例,作為該接口測試用例文件的第一層目錄,<testcase> 包含 3 個元素<name>、<constraint> 禾口 <teststep>,這 3 個元素作為該接口測試用例文件的第二層目錄。元素<name>包含測試用例名稱,本發(fā)明實施例中的接口測試用例名稱為JK_work_status_changing ;元素〈constraint〉中包含測試用例執(zhí)行的前提信息,包含兩個元素<CSCI>和〈machine〉,其中元素<CSCI>中包含所開啟的被測軟件配置項的名稱,元素〈machine〉中包含所開啟被測主機的名稱;元素〈testst印〉 為該測試用例的主體部分,包含測試用例的詳細步驟信息,本發(fā)明實施例中包含三個詳細步驟,每個步驟通過一個元素〈detailst印〉來描述。2)<detailstep>元素為該接口測試用例文件的第三層目錄,包含了測試用例中 $的IlJi式內(nèi)^#。7li:^<det£iilstep> 4^^^5^71: :<trigger>><message>><sender>>
〈receiver〉和〈para〉,這5個元素為該接口測試用例文件的第4層目錄。3)<trigger>元素<trigger>元素中屬性att的值表示消息的觸發(fā)方式,包括三種類型周期觸發(fā),事件觸發(fā)和消息觸發(fā),對應(yīng)屬性att可填的值分別為fre、action和 message.當att屬性值為fre時,表示該消息為周期觸發(fā),〈trigger〉元素值為消息發(fā)送周期,通常以毫秒為單位,如5000表示5000毫秒;當att屬性值為action時,表示該消息為事件觸發(fā),〈trigger〉元素值為觸發(fā)該消息的事件,通常為可以被自動化測試工具執(zhí)行的測試腳本,如圖2所示,在接口用例文件中第10行中〈trigger〉元素屬性att值為action,表示CSCI_A發(fā)送消息STATUS_CHANGE_REQ需要事件觸發(fā),該事件腳本為“mouse SingleClick left_button' standby' ”,表示鼠標左鍵單擊界面上的'standby'按鈕,用戶應(yīng)根據(jù)所選⑶I (Graphical User hterface,圖形用戶界面)自動化測試工具來編寫相應(yīng)的腳本; 當att屬性值為message時,表示該消息產(chǎn)生為消息觸發(fā),如圖2所示,在該接口用例文件中第觀行中的〈trigger〉元素屬性att值為message,表示軟件配置項CSCI_B在收到消息 STATUS_CHANGE_REQ 后,會發(fā)送消息 STATUS_CHANGE_ACK。4)〈message〉元素包含了發(fā)送的消息的名稱。5)<sender>元素包含了消息的發(fā)送方軟件配置項名稱。6)〈receiver〉元素包含了消息的接收方軟件配置項名稱。7) <para>元素包含了被驗證消息中需要驗證的詳細字段信息。<para>元素中包含4個子元素<parname>、〈datatype〉、<startpos>和<val>。所述的被驗證消息就是軟件配置項之間發(fā)送的消息,因為需要對其進行驗證,所以稱為被驗證消息。8) <parname>元素包含了該消息中需要驗證的字段的名稱。9)〈datatype〉元素表示該消息所需要驗證字段的數(shù)據(jù)類型,如int (整型), float (浮點型),char (字符型)等通用的數(shù)據(jù)類型。
10)<startpos>元素所需要驗證的字段在實際報文中開始字節(jié)位置。若需要驗證的字段數(shù)據(jù)類型為int,則根據(jù)該字段所在報文開始字節(jié)的位置可以獲取該字段的字段值。ll)<val>元素表示所需要驗證字段期望的字段值。步驟二、自動化測試控制端向被測主機中的代理程序發(fā)送測試消息。所述的代理程序部署在被測主機中,在接口測試過程中代理程序與自動化測試控制端進行通信。在接口測試過程中代理程序接收自動化測試控制端發(fā)送的測試消息,并且在測試執(zhí)行過程中將所監(jiān)聽的消息報文實時轉(zhuǎn)發(fā)給自動化測試控制端。根據(jù)上述接口測試用例所描述內(nèi)容,上述自動化測試控制端向代理程序發(fā)送測試消息可以被下述XML文件所描述。如圖3所示,該文件中各元素的含義如下1)〈message〉元素為根元素,表示測試消息,作為該接口測試用例文件的第一層目錄,<message> 包含 5 個兀素<des>、<dur>、<protocol>、<srcport> 禾口 <desport>。2) <des>元素表示該消息發(fā)送的目的地址,為主機名稱。3) <dur>元素表示代理程序開啟的時間,以毫秒為單位,本發(fā)明實施例為10000毫秒。4)〈protocol〉元素表示傳輸層協(xié)議的類型,傳輸層協(xié)議的類型為TCP或者UDP, 如圖3中所示,本發(fā)明實施例中為UDP協(xié)議,表示該代理程序只轉(zhuǎn)發(fā)UDP數(shù)據(jù)包。5)<srcport>元素表示代理程序所監(jiān)聽消息報文的源端口號。6)<deSp0rt>元素表示代理程序所監(jiān)聽消息報文的目的端口號。代理程序解析測試消息,根據(jù)測試消息中描述的轉(zhuǎn)發(fā)規(guī)則將被測主機中發(fā)送的消息報文實時轉(zhuǎn)發(fā)給自動化測試控制端。步驟三、被測主機中代理程序接收到自動化測試控制端發(fā)送的測試消息后,解析該測試消息,開始監(jiān)聽被測主機發(fā)送的消息報文。如圖3所示,所監(jiān)聽的消息報文類型為 UDP,監(jiān)聽的消息報文的源端口號和目的端口號分別為10000和11000。步驟四、自動化測試控制端解析接口測試用例文件,獲取該接口測試用例中消息的觸發(fā)方式,然后判斷該接口測試用例中的第一條消息的產(chǎn)生方式是否為時間觸發(fā)。若接口測試用例中第一條消息的產(chǎn)生方式為事件觸發(fā),則自動化測試控制端將接口測試用例文件中的測試腳本發(fā)送給被測主機的代理程序,代理程序調(diào)用其所在主機中的自動化測試工具執(zhí)行該測試腳本,然后執(zhí)行下一步驟;否則,直接執(zhí)行下一步驟。所述的測試腳本是指現(xiàn)有的自動化測試軟件可以解釋并執(zhí)行的腳本,代理程序通過調(diào)用現(xiàn)有的自動化測試軟件來執(zhí)行該測試腳本,自動化測試工具根據(jù)測試腳本內(nèi)容對被測軟件進行相應(yīng)的操作。消息的產(chǎn)生方式為以下三種周期觸發(fā)、事件觸發(fā)和消息觸發(fā)。周期觸發(fā)是指每隔一定的時間軟件配置項之間自動發(fā)送消息報文,消息報文的發(fā)送周期通常以毫秒為單位, 如系統(tǒng)心跳消息,各分系統(tǒng)周期性的自動發(fā)送心跳報文,報告自身的工作狀態(tài);事件觸發(fā)是指消息的產(chǎn)生需要用戶執(zhí)行相應(yīng)的激勵操作,通常包括鼠標和鍵盤的操作,如在系統(tǒng)工作狀態(tài)轉(zhuǎn)換用例中用戶需要點擊相應(yīng)的界面中相關(guān)按鈕來執(zhí)行接口消息測試;消息觸發(fā)是指消息的產(chǎn)生需要其它消息的激勵,如在上述例子中,當CSCI_B在收到STATUS_CHANGE_REQ 消息后向CSCI_A發(fā)送消息STATUS_CHANGE_ACK消息。若該接口測試中消息的發(fā)送需要事件觸發(fā),則代理程序調(diào)用已有的自動化測試工具執(zhí)行相應(yīng)的測試腳本。所述的測試腳本記載在接口測試用例文件中元素〈detailstep〉 中的元素〈trigger〉中,該測試腳本為現(xiàn)有的自動化測試工具例如QTP、Ranorex、Rational Robot和LoadRimner所能解釋并執(zhí)行的腳本,并且該腳本語言依賴于不同的自動化測試工具,用戶應(yīng)根據(jù)相應(yīng)的自動化測試工具編寫測試腳本。測試腳本中的內(nèi)容表示相應(yīng)的觸發(fā)操作,如圖2中,當〈trigger〉元素中att屬性值為“action”時,表示該消息的產(chǎn)生為事件角蟲發(fā),<trigger> 元素的值為 mouse SingleClick left_button' standby',表示鼠標左鍵單擊〃 standby"按鈕。步驟五、運行在各個被測主機中的代理程序?qū)⒏髯运O(jiān)聽的消息報文實時地轉(zhuǎn)發(fā)給自動化測試控制端,自動化測試控制端接收消息報文。如圖1所示,代理程序根據(jù)測試消息中元素<dur>所記載的時間進行監(jiān)聽,根據(jù)該代理程序開啟的時間來判斷代理程序是否結(jié)束監(jiān)聽,若結(jié)束轉(zhuǎn)步驟六執(zhí)行,若沒有結(jié)束,則繼續(xù)監(jiān)聽直到代理程序開啟的時間結(jié)束。步驟六、自動化測試控指端接收消息報文,并在所有代理程序結(jié)束監(jiān)聽后,開始解析所接收到的消息報文,輸出驗證結(jié)果。具體解析過程如圖4所示第1步從接口測試用例文件中依次讀取一條被驗證消息及其字段的信息,初始狀態(tài)下默認該消息未找到,字段驗證結(jié)果為不正確。所述的被驗證消息指被測軟件配置項之間傳遞的消息,本發(fā)明實施例中是指在接口測試用例文件的〈detailst印〉中記載的三個消息STATUS_CHANGE_REQ 消息、STATUS_CHANGE_ACK 消息和 DBA_DATA_REQ 消息。所述的該驗證消息的字段的信息在接口測試用例文件中的元素<para>中所描述。第2步從消息報文文件的開始讀取一條消息報文。針對每一個被驗證消息,從消息報文文件中的開始就行查找。所述的消息報文文件是指自動化測試控制端按照接收到的消息報文的時間先后順序,將接收到的所有代理程序發(fā)送來的消息報文組成的文件。第3步判斷當前是否讀到消息報文文件的結(jié)尾,若是,轉(zhuǎn)第6步執(zhí)行,若不是,繼續(xù)執(zhí)行下一步。第4步判斷所讀取的當前消息報文中的消息碼的實際值是否等于當前被驗證消息的消息碼,若等于,執(zhí)行第5步,否則,讀取消息報文文件中的下一條消息報文,轉(zhuǎn)第3步執(zhí)行。若當前消息報文中的消息碼的實際值等于當前被驗證消息的消息碼,則表明找到了與被驗證消息對應(yīng)的消息報文。所述的消息碼是所有消息中都固有的字段,消息碼的值可以唯一標識一個消息。第5步記錄下當前消息報文在消息報文文件中的位置,然后驗證當前被驗證消息的字段信息。若找到對應(yīng)的消息報文,則根據(jù)被驗證字段的起始位和數(shù)據(jù)類型從該消息報文中讀取對應(yīng)字段的實際值,與期望值比較,若所有被驗證字段的實際值與期望值相同, 則該消息正確,將字段驗證結(jié)果更改為正確,否則,對字段驗證結(jié)果不做修改。所述的被驗證字段的起始位記載在接口測試用例文件被驗證消息中的〈startpos〉元素中,被驗證字段的數(shù)據(jù)類型記載在接口測試用例文件被驗證消息中的〈datatype〉元素中,被驗證字段的期望值記載在接口測試用例文件被驗證消息中的元素<val>中。第6步判斷接口測試用例文件中的被驗證消息是否均已驗證完畢,若是則執(zhí)行下一步,若不是轉(zhuǎn)第1步執(zhí)行,進行下一條被驗證消息的驗證工作。第7步判斷是否找到了所有被驗證消息對應(yīng)的消息報文,若是,根據(jù)消息報文在消息報文文件中的位置排序得到被驗證消息的發(fā)出先后順序,從而完成被驗證消息的時序性驗證,若不是,則不驗證被驗證消息的時序性。本次消息報文解析結(jié)束。步驟七、根據(jù)步驟六得到的驗證結(jié)果生成測試報告,并輸出測試報告給用戶。用戶通過測試報告來判斷分布式信息系統(tǒng)的各分系統(tǒng)之間的接口是否正確,完善或維護分布式信息系統(tǒng)。上述系統(tǒng)工作狀態(tài)轉(zhuǎn)換接口測試用例的測試報告可以被XML文件所描述。如圖5 所示,該文件中各元素的含義如下<testreport>元素為根元素,表示測試報告,作為該接口測試用例測試報告的第一層目錄,<testreport> 包含 5 個元素<name>、<operator>、<start>、<end> 禾口 〈result〉,這5個元素作為該接口測試用例測試報告的第二層目錄?!磏ame〉元素包含接口測試用例名稱,本發(fā)明實施例中該接口測試用例名稱為JK_WOrk_StatuS_Changing ; 〈operator〉元素包含該接口測試用例的執(zhí)行者;〈start〉元素中包含該接口測試用例開始時間,時間格式為年/月/日/小時/分/秒;<end>元素中包含該測試用例結(jié)束時間,時間格式為年/月/日/小時/分/秒;〈result〉元素中包含該接口測試用例執(zhí)行結(jié)果的詳細信息,具有三個屬性值屬性att值表示該接口測試用例執(zhí)行是否通過,屬性pass值表示該接口測試用例通過,屬性fail值表示該接口測試用例執(zhí)行未通過?!磖esult〉元素里接口測試用例中具體每一個步驟的測試結(jié)果,用一個〈detailresult〉元素來描述,接口測試用例的時序驗證結(jié)果在元素〈sequence〉中描述。1)〈detailresult〉元素為該接口測試用例測試報告的第三層目錄,包含了接口測試用例中每一步的測試結(jié)果。〈detailresult〉元素包含三個屬性屬性st印值表示對應(yīng)接口測試用例文件中的測試步驟,屬性name值表示被驗證消息名稱,屬性att表示自動化測試控制端是否收到該消息,可選值為exist或者為notexist,當屬性att值為exist時, 表示自動化測試控制端收到了該消息報文,當屬性值為notexist時,表示自動化測試控制端沒有收到該消息報文?!磀etailresult〉包含兩個元素<subsys>和Workstatus〉,這兩個元素作為該接口測試用例測試報告的第四層目錄。元素〈subsys〉中描述了被驗證消息中的subsys字段是否正確,subsys字段代表子系統(tǒng),元素Workstatus〉中描述了被驗證消息的workstatus字段是否正確,workstatus字段代表工作狀態(tài),subsys禾口 workstatus為被驗證消息中兩個字段的名稱,當被驗證字段的值正確時,元素中的內(nèi)容為correct,反之, 不正確時元素中的內(nèi)容為incorrect。2)〈sequence〉元素表示該接口測試用例中消息時序信息,correct表示該接口測試用例消息時序正確,反之,為incorrect,表示不正確。具體該接口測試用例中的消息時序是否正確是根據(jù)步驟六中的得到的消息報文在消息報文文件中的位置排序來判定的,如果被驗證消息對應(yīng)的消息報文在消息報文文件中的位置排序與接口測試用例中的被驗證消息的順序是一樣的,則時序正確,如果被驗證消息對應(yīng)的消息報文在消息報文文件中的位置排序與接口測試用例中的被驗證消息的順序不一樣,或者被驗證消息對應(yīng)的消息報文在消息報文文件中未全部找到,則時序不正確。
權(quán)利要求
1.一種分布式信息系統(tǒng)接口自動化測試方法,其特征在于,該測試方法具體步驟如下步驟一、自動化測試控制端解析接口測試用例文件,獲取接口測試用例執(zhí)行的前提信息包括被測軟件配置項以及被測軟件配置項所在的被測主機,并驗證該接口測試用例執(zhí)行的前提信息是否滿足執(zhí)行條件被測軟件配置項所在的被測主機工作正常以及被測軟件配置項已開啟,若滿足,則執(zhí)行下一步驟,否則結(jié)束該接口測試用例的執(zhí)行; 步驟二、自動化測試控制端向被測主機中的代理程序發(fā)送測試消息; 步驟三、被測主機中的代理程序接收到自動化測試控制端發(fā)送的測試消息后,解析該測試消息,開始監(jiān)聽被測主機發(fā)送的消息報文;步驟四、自動化測試控制端解析接口測試用例文件,獲取該接口測試用例中消息的觸發(fā)方式,判斷該接口測試用例中第一條消息的產(chǎn)生方式是否為事件觸發(fā),若是,則自動化測試控制端向被測主機的代理程序發(fā)送測試腳本,代理程序調(diào)用其所在主機中的自動化測試工具執(zhí)行測試腳本,然后執(zhí)行步驟五,若不是,直接執(zhí)行步驟五;步驟五、代理程序?qū)⑺O(jiān)聽到的消息報文實時轉(zhuǎn)發(fā)給自動化測試控制端; 步驟六、自動化測試控制端解析接收到的消息報文,輸出驗證結(jié)果; 步驟七、根據(jù)驗證結(jié)果生成測試報告,并輸出給用戶。
2.根據(jù)權(quán)利要求1所述的一種分布式信息系統(tǒng)接口自動化測試方法,其特征在于,所述的自動化測試控制端部署在與被測系統(tǒng)獨立的主機中,用來解析接口測試用例文件,驗證接口測試用例是否能夠執(zhí)行,在接口測試用例執(zhí)行過程中向被測主機發(fā)送測試腳本,以及接收被測主機的消息報文,解析接收到的消息報文生成測試報告。
3.根據(jù)權(quán)利要求1所述的一種分布式信息系統(tǒng)接口自動化測試方法,其特征在于, 步驟一與步驟四中所述的接口測試用例文件,為已定義好的XML文件,XML文件中根元素 <testcase> 表示接口測試用例,其包括 3 個元素<name>、〈constraint〉禾口 <teststep> ;元素〈name〉中描述接口測試用例的名稱;元素〈constraint〉包含測試用例執(zhí)行的前提信息,包含兩個元素<CSCI>和 〈machine〉,元素<CSCI>中包含所開啟的被測軟件配置項的名稱,元素〈machine〉中包含所開啟的被測主機的名稱;元素〈teststep〉中描述接口測試用例的具體步驟,每個步驟通過一個元素 〈detailst印〉來描述,元素〈detailst印〉中包含5個元素 :<trigger>、 <message>、 〈sender〉、〈receiver〉和<para> ;元素〈trigger〉中屬性att的值表示消息的觸發(fā)方式, 包括三種類型周期觸發(fā),事件觸發(fā)和消息觸發(fā),當att屬性值為周期觸發(fā)時,〈trigger〉 元素值為消息發(fā)送周期,以毫秒為單位,當att屬性值為事件觸發(fā)時,〈trigger〉元素值為觸發(fā)該消息的事件,為被自動化測試工具執(zhí)行的測試腳本,當att屬性值為消息觸發(fā)時, 〈trigger〉元素值為收到的消息的名稱;元素〈message〉中描述了發(fā)送的消息的名稱;元素 〈sender〉中描述了消息發(fā)送方的軟件配置項名稱;元素〈receiver〉中描述了消息接收方的軟件配置項名稱;元素<para>中描述了被驗證消息中需要驗證的詳細字段信息,包含4 個子元素<parname>、<datatype>、<startpos> 禾口 <val>,元素 <parname> 中描述了該消息中需要驗證的字段的名稱,元素〈datatype〉中描述了該消息中需要驗證的字段的數(shù)據(jù)類型,元素〈startpos〉中描述了該消息中需要驗證的字段在實際報文中的開始字節(jié)位置,元素<val>中描述了該消息中需要驗證的字段的期望字段值。
4.根據(jù)權(quán)利要求1所述的一種分布式信息系統(tǒng)接口自動化測試方法,其特征在于,所述的代理程序部署在被測主機中,在測試執(zhí)行過程中代理程序與自動化測試控制端進行通信,代理程序接收自動化測試控制端發(fā)送的測試消息,并在測試執(zhí)行過程中將消息報文發(fā)送給自動化測試控制端。
5.根據(jù)權(quán)利要求1所述的一種分布式信息系統(tǒng)接口自動化測試方法,其特征在于,步驟二與步驟三中所述的測試消息,為XML文件,XML文件中根元素〈message〉表示測試消息, 其包括 5 個元素<des>、<dur>、<protocol>、<srcport> 禾Π <desport> ;元素 <des> 表示該消息發(fā)送的目的地址,為主機名稱;元素<dur>表示代理程序開啟的時間,以毫秒為單位; 元素〈protocol〉表示傳輸層協(xié)議的類型;元素〈srcport〉表示代理程序所監(jiān)聽消息報文的源端口號;元素〈desport〉表示代理程序所監(jiān)聽消息報文的目的端口號。
6.根據(jù)權(quán)利要求1或5所述的一種分布式信息系統(tǒng)接口自動化測試方法,其特征在于, 步驟五中所述的代理程序根據(jù)測試消息中所記載的代理程序開啟的時間來控制監(jiān)聽是否結(jié)束,若結(jié)束轉(zhuǎn)步驟六執(zhí)行,若沒有結(jié)束,則繼續(xù)監(jiān)聽直到代理程序開啟的時間結(jié)束。
7.根據(jù)權(quán)利要求1所述的一種分布式信息系統(tǒng)接口自動化測試方法,其特征在于,步驟六中所述的自動化測試控制端解析消息報文的具體步驟為第1步從接口測試用例文件中依次讀取一條被驗證消息及其字段信息,初始狀態(tài)下默認該被驗證消息未找到,字段驗證結(jié)果為不正確;第2步從消息報文文件的開始讀取一條消息報文;第3步判斷當前是否讀到消息報文文件的結(jié)尾,若是,轉(zhuǎn)第6步執(zhí)行,若不是,繼續(xù)執(zhí)行下一步;第4步判斷所讀取的當前消息報文中的消息碼的實際值是否等于當前被驗證消息的消息碼,若等于,執(zhí)行第5步,否則,讀取消息報文文件中的下一條消息報文,轉(zhuǎn)第3步執(zhí)行;第5步記錄下當前消息報文在消息報文文件中的位置,然后驗證當前被驗證消息的字段信息,具體根據(jù)被驗證字段的起始位和數(shù)據(jù)類型從消息報文中讀取對應(yīng)字段的實際值,與期望值比較,若所有被驗證字段的實際值與期望值相同,則將字段驗證結(jié)果更改為正確,否則,對字段驗證結(jié)果不做修改;第6步判斷接口測試用例文件中的被驗證消息是否都已經(jīng)驗證完畢,若沒有轉(zhuǎn)第1步執(zhí)行,若驗證完畢,執(zhí)行下一步;第7步判斷是否找到了所有被驗證消息對應(yīng)的消息報文,若是,根據(jù)消息報文在消息報文文件中的位置排序得到被驗證消息的發(fā)出先后順序,驗證被驗證消息的時序性,若不是,則不驗證被驗證消息的時序性。
8.根據(jù)權(quán)利要求1所述的一種分布式信息系統(tǒng)接口自動化測試方法,其特征在于, 步驟七中所述的驗證結(jié)果,為XML文件,XML文件中根元素〈testreport〉表示測試報告, 其包含 5 個元素<name>、<operator>、<start>、<end> 禾Π <result>,元素 <name> 中描述接口測試用例的名稱,元素〈operator〉中描述了接口測試用例的執(zhí)行者,元素〈start〉 中描述了該接口測試用例的開始時間,元素<end>中描述了該接口測試用例的結(jié)束時間,元素〈result〉中描述了該接口測試用例執(zhí)行結(jié)果的詳細信息,包括接口測試用例的具體每一個步驟的測試結(jié)果和接口測試用例的時序驗證結(jié)果,每一個步驟的測試結(jié)果用一個元素〈detailresult〉來描述,接口測試用例的時序驗證結(jié)果在元素〈sequence〉中描述,元素〈result〉包含一個用來表示該接口測試用例執(zhí)行是否通過的屬性;所述的元素〈detailresult〉包含三個屬性表示接口測試用例文件中的測試步驟的屬性step,表示被驗證消息的名稱的屬性name,以及表示自動化測試控制端是否收到該被驗證消息的屬性 att ;元素 <result> 包含兩個元素:<subsys> 和 <workstatus>,元素 <subsys> 和 Workstatus〉用來表示消息的字段值是否正確。
全文摘要
本發(fā)明為一種分布式信息系統(tǒng)接口自動化測試方法,涉及軟件自動化測試領(lǐng)域。在與被測系統(tǒng)獨立的主機中部署自動化測試控制端,被測主機中部署代理程序,自動化測試控制端解析測試用例文件,并查看該測試用例是否能夠執(zhí)行,若能則向被測主機中的代理程序發(fā)送測試消息,代理程序解析測試消息并監(jiān)聽被測主機發(fā)送的消息報文,若測試用例中第一條消息為事件觸發(fā),則代理程序調(diào)用自動化測試工具執(zhí)行自動化測試控制端發(fā)送的測試腳本,在測試過程中,代理程序?qū)崟r監(jiān)聽消息報文并轉(zhuǎn)發(fā)給自動化測試控制端,最后控制端解析接收到的消息報文,輸出驗證結(jié)果,生成測試報告。本發(fā)明提高了分布式信息系統(tǒng)軟件接口測試效率,簡化了測試人員的工作。
文檔編號G06F11/36GK102163173SQ20111008519
公開日2011年8月24日 申請日期2011年4月6日 優(yōu)先權(quán)日2011年4月6日
發(fā)明者余丹, 儲大為, 葉鋼, 尹杰, 張強, 王志超, 馬世龍 申請人:北京航空航天大學(xué)