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

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

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

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

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

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

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

圖6 手動測試模式界面

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