薛松 繆俊 王博 吳昊
(中國艦船研究院 北京 100101)
軟件測試是承接軟件設(shè)計與軟件產(chǎn)品的關(guān)鍵環(huán)節(jié),軟件測試系統(tǒng)可根據(jù)待測軟件的特點支撐完成不同級別的軟件測試任務(wù),為軟件設(shè)計的合理性、軟件產(chǎn)品的穩(wěn)定性提供反饋和保障。軟件測試系統(tǒng)將以往繁雜的手工測試內(nèi)容轉(zhuǎn)換為自動執(zhí)行,可提高軟件測試效率與測試準確度。目前行業(yè)內(nèi)軟件測試的基本手段為根據(jù)具體的待測軟件開發(fā)專用測試系統(tǒng)與測試用例,不能形成一套靈活部署、測試通用的工具,很難支持跨平臺分布部署、軟件用例在線編輯等自動化測試工作。因此迫切需要開發(fā)通用的分布式測試工具,可以根據(jù)測試需求進行部署和編輯,支撐廣泛的軟件測試工作[1~4]。
該軟件測試系統(tǒng)由測評管控軟件與測試代理軟件組成,采用以數(shù)據(jù)為中心的發(fā)布訂閱通信方式,可支持測試管控軟件與被測軟件的分布式部署,預期的工作過程是將測評管控軟件與測試代理軟件分別部署至測評管控計算機與目標機,在測評管控軟件編輯測試參數(shù),生成基于XML文件的測試流,設(shè)置代理組件連接,編輯測試流程,最終生成測試實例,按照預定流程自動完成接口級測試與用例級測試,最后完成測試結(jié)果采集,并完成測試數(shù)據(jù)自動整理。
軟件測試系統(tǒng)整體結(jié)構(gòu)如圖1所示,主體采用消息發(fā)布訂閱架構(gòu),由三部分組成:測評管控軟件、測試代理軟件、測試組件。測評軟件的運行模式分為兩種:1)分布部署,即測評管控軟件運行于測評計算機,測試代理和測試組件運行于待測平臺,通過以太網(wǎng)連接;2)集中部署,即測評管控軟件、測試代理、測試組件都運行于目標機,通過計算機內(nèi)部的自回環(huán)網(wǎng)絡(luò)接口進行通信。

圖1 軟件測試系統(tǒng)整體架構(gòu)
測評管控軟件具有可視化的人機交互界面,主要用于解析待測內(nèi)容、輸出測試操作、接收操作結(jié)果、智能評測和輸出測試報告,該軟件不與待測環(huán)境和測試組件直接接觸,所有測試操作和操作結(jié)果都是通過網(wǎng)絡(luò)接口與測試代理以XML報文形式交互。
測試代理負責與測評管控軟件通信,解析協(xié)議,并通過相應接口將調(diào)用操作轉(zhuǎn)發(fā)(或直接調(diào)用)至相應的測試組件,監(jiān)控測試操作的執(zhí)行,收集測試結(jié)果并回傳至測評管控軟件。測試代理不與待測軟件直接接觸,所有被測軟件的調(diào)用都由測試組件完成,測試代理還負責處理因軟硬件模塊異常導致的測試組件運行錯誤。
測試組件負責調(diào)用待測軟件并返回執(zhí)行結(jié)果,它包含了待測軟件的所有對外接口調(diào)用,是與被測軟件直接相關(guān)的個性化服務(wù)組件,以服務(wù)動態(tài)加載的形式保證了在軟件測試系統(tǒng)主體框架不變的情況下兼容大部分軟件的測試任務(wù),測試組件可以動態(tài)庫或者可執(zhí)行程序的形式提供,支持跨平臺編譯和運行。
各測試組件都以獨立線程(或任務(wù))運行,不斷接收調(diào)用命令,執(zhí)行調(diào)用并返回數(shù)據(jù)。測試組件都具有統(tǒng)一的輸入輸出接口規(guī)范、統(tǒng)一的命名和部署規(guī)范,可以動態(tài)配置、加載,并由測試代理統(tǒng)一管理。
測評管控軟件具有可視化的人機交互界面,通過解析XML接口描述文件,自動生成相應的被測軟件測試窗口,測試窗口中可編輯測試項目及測試順序,并可填入預先編輯好的測試參數(shù),根據(jù)測試需要可以進行手工操作相應的接口,亦可通過解析測試項描述文件,自動生成測試項窗口,進行智能化測試,自動逐項測試,并判定結(jié)果,最終生成測評報告。
測評管控軟件結(jié)構(gòu)組成如圖2所示,其主要用于完成人機交互,解析待測內(nèi)容、輸出測試操作、接收操作結(jié)果、智能評測和輸出測試報告;測評管控軟件集成了基于DDS的消息發(fā)布與訂閱組件,該組件使測評管控軟件、測試代理、測試目標軟件之間形成了解耦,測試系統(tǒng)內(nèi)所有的交互參數(shù)具有唯一的消息ID,測試交互需要的所有的參數(shù)、反饋結(jié)果均通過消息主題的形式進行發(fā)布,這使得同一臺測評管控計算機可面向多臺被測對象進行測試信息發(fā)布,也可訂閱多臺目標機的測試結(jié)果。

圖2 測評管控軟件結(jié)構(gòu)圖
該測評管控軟件是一種以測試數(shù)據(jù)為中心的測試軟件,測試人員與測試軟件之間的交互通過XML文件進行傳遞,這也使得本系統(tǒng)具備以測試內(nèi)容為中心的運行特征,使用戶無需關(guān)注測試軟件與被測軟件之間的具體交互過程。
測試代理、測試組件、被測軟件共同運行于目標機中,各部分主要功能如下。
測試代理集成了消息發(fā)布與訂閱組件,負責與測評管控軟件交互,通過XML解析模塊獲取測評管控軟件傳遞的指令或參數(shù),并通過相應接口將調(diào)用測試組件,將參數(shù)傳遞給測試組件,測試代理不與被測軟件直接接觸,所有被測軟件的調(diào)用都由測試組件或測試用例進行,測試代理還具有管理、監(jiān)測測試組件運行的功能,可以處理因軟硬件模塊異常導致的測試用例進程錯誤,并將錯誤信息回告給測評管控軟件。
測試組件是針對被測軟件定制開發(fā)的服務(wù)化組件,可根據(jù)被測軟件的項目和種類按需調(diào)用,測試組件按照功能不同可分為兩類:1)接口測試組件,測試組件包含了被測軟件的所有對外接口調(diào)用,以動態(tài)庫形式提供給測試代理調(diào)用。測試組件都以獨立線程運行,不斷接收調(diào)用命令,執(zhí)行調(diào)用并返回數(shù)據(jù);2)典型功能測試組件,將軟硬件模塊的典型功能綜合起來,形成一套較完整的面向應用的綜合測試用例,以動態(tài)庫或可執(zhí)行程序提供。每個典型測試用例都以獨立線程運行,返回數(shù)據(jù)。

圖3 測試代理與測試組件關(guān)系圖
由OMG組織頒布的面向數(shù)據(jù)的實時系統(tǒng)數(shù)據(jù)分發(fā)服務(wù)規(guī)范 DDS(Data Distribution Service)是一項以數(shù)據(jù)為中心的網(wǎng)絡(luò)實時分布式應用程序組件,它解決了分布式程序之間的網(wǎng)絡(luò)實時通信問題,不同體系架構(gòu)與運行平臺的應用程序可將DDS作為其進行網(wǎng)絡(luò)通信的支撐組件[5~11]。
通過DDS組件能完成異構(gòu)分布式程序組件之間的通信,可通過DDS的配置使程序滿足應用的特定通信性能需求。DDS通信組件能夠使開發(fā)者關(guān)心具體數(shù)據(jù)實現(xiàn),簡化其對底層通信的實現(xiàn)關(guān)注。
在測試軟件系統(tǒng)中,基于DDS的消息發(fā)布訂閱流程如圖4所示,測評管控軟件、測試代理分別通過數(shù)據(jù)接口API集成了消息發(fā)布訂閱組件,并以全局資源空間為媒介完成了基于主題的數(shù)據(jù)交換。在數(shù)據(jù)交換的過程中,所有的參數(shù)、報文均通過XML文件的形式進行傳遞。

圖4 基于DDS的信息分發(fā)流程
數(shù)據(jù)發(fā)布過程:由測評管控軟件的數(shù)據(jù)接口API調(diào)用發(fā)布訂閱組件,并接收測評管控軟件各內(nèi)部模塊,如用戶管理模塊、接口參數(shù)管理模塊、測試流管理模塊、底層監(jiān)控模塊等的XML格式信息,并將上述信息行主題編號,并發(fā)布到全局資源空間,完成了數(shù)據(jù)推送。測試代理通過數(shù)據(jù)接口API調(diào)用發(fā)布訂閱組件將程序運行信息行主題編號,并發(fā)布到全局資源空間,完成了數(shù)據(jù)推送。
數(shù)據(jù)訂閱:由測評管控軟件的數(shù)據(jù)接口API調(diào)用發(fā)布訂閱組件,按照用戶需要從全局資源空間訂閱某一主題信息;由測試代理軟件的數(shù)據(jù)接口API調(diào)用消息發(fā)布訂閱組件,按照測試需要從全局資源空間訂閱某一主題信息,當訂閱請求完成時,DDS消息發(fā)布訂閱組件會自動在發(fā)布端與訂閱端之間建立連接,完成消息通信。
XML是Extensible Markup Language的縮寫。即可擴展標記語言,是用于表示結(jié)構(gòu)化信息的一種標準文本格式。由于XML是非專有的并易于閱讀和編寫,就使得它成為在不同的應用間交換數(shù)據(jù)的理想格式,同時對于人類或是計算機程序來說,都容易閱讀和編寫,因而成為交換語言的首選[12]。
測評管控軟件內(nèi)部各模塊之間的XML交互流程如圖5所示,各子系統(tǒng)間主要通過各種XML文件進行數(shù)據(jù)交換,部分子系統(tǒng)間存在直接的消息接口。

圖5 測評管控軟件XML傳輸組成
典型XML文件內(nèi)容節(jié)點及作用如表1所示。

表1 XML文件內(nèi)容
用戶通過設(shè)置賬號和密碼進行登錄,登錄后的用戶可打開配置文件,選取編輯完成的測試流程。
載入XML配置文件,生成區(qū)域1中的被測軟件接口列表,點擊區(qū)域1中的接口,會在區(qū)域2中顯示已經(jīng)保存的參數(shù)文件,在區(qū)域3中顯示參數(shù)內(nèi)容。點擊運行即可完成測試操作,并在“輸出”頁返回測試結(jié)果。
如圖7所示,區(qū)域1是測試接口區(qū),2是歷史參數(shù)區(qū),3是參數(shù)顯示區(qū),4是測試流接口區(qū),5是測試流功能區(qū),6是測試流區(qū)。
通過區(qū)域6編輯測試流XML文件,并在區(qū)域1、2中選定接口與參數(shù),將選中的接口以測試項的形式新增到測試流中,可通過區(qū)域5中的編輯按鈕編輯測試順序,生成測測試流在區(qū)域4中保持。點擊自動運行按鈕,即可完成特定測試流程的自動運行。

圖6 手動測試模式界面

圖7 自動測試模式界面
本軟件測試系統(tǒng)通過采用圖形化跨平臺編程技術(shù),結(jié)合發(fā)布訂閱模式的消息通信組件,實現(xiàn)了四個方面的功能,第一,實現(xiàn)了測試軟件與被測軟件的解耦分離;第二,實現(xiàn)了圖形化編程操作,取代了原有的接口用例編程操作;第三,實現(xiàn)了自動化標準化測試流程;第四,實現(xiàn)了測試結(jié)果自動采集。
該測試軟件系統(tǒng)界面交互良好,操作簡便,分區(qū)清晰。經(jīng)相詳細測試,并在測試過程中應用,結(jié)果表明本測試系統(tǒng)穩(wěn)定可靠,達到了預期的設(shè)計目標。