馬賢穎+陳青+司倩然


摘 要: 針對傳統遙測軟件測試模式出現的測試周期長、效率低等問題,對遙測軟件共性功能及其測試方法進行了深入分析,建立了基于測試用例復用的軟件測試平臺。該平臺實現了測試數據管理、測試過程管理、可復用測試用例管理、測試文檔生成和數據顯示與存儲等功能,大大減少了設計測試用例、準備測試數據、編制測試文檔的時間,極大地提高了測試效率。實際應用表明,該平臺設計先進,通用性好,測試效率高,具有一定的工程應用價值。
關鍵詞: 遙測; 測試用例復用; 軟件測試; 測試平臺
中圖分類號: TN911?34; TP391.9 文獻標識碼: A 文章編號: 1004?373X(2015)16?0029?05
Research on testing case reuse technology of telemetry software
MA Xianying, CHEN Qing, SI Qianran
(Beijing Institute of Tracking and Telecommunications Technology, Beijing 100094, China)
Abstract: Aiming at the defects of low efficiency and long testing cycle of the traditional testing methods, the universal functions and testing methods of telemetry software were analyzed, and a software testing simulation platform based on testing case reuse was implemented. This platform realized the functions of testing data management, testing process management, reusable testing case management, testing document management, data display and data storage. The time of testing case design, testing data preparation and testing document compilation is decreased obviously. The testing efficiency is improved greatly. Practical application indicates that the platform can improve the adaptability and achieve a higher efficiency.
Keywords: telemetry; testing case reuse; software testing; testing platform
0 引 言
軟件測試是軟件工程中的重要環節,是保證軟件質量的一種有效手段,目的是在軟件投入運行之前,盡可能多地發現并排除軟件中隱藏的錯誤。遙測數據作為航天測控系統測控數據中十分重要的一類數據,在評測過程中必須要模擬生成正常的遙測數據和異常的遙測數據,以對被測軟件進行功能、性能、接口等方面的測試。傳統“一型一套”的測試模式因測試周期長、效率低等原因,已經無法滿足日益繁重的測試任務需求。在軟件測試過程中,設計測試用例和準備測試數據的工作量占很大的比重,如果在這兩方面有突破將能夠大大減少測試工作量。
隨著技術的不斷進步,測試用例復用和自動化測試引起了人們的極大關注。所謂測試用例復用,就是對一個軟件的已執行的測試用例,將其不同程度地應用于該軟件新的測試中或其他軟件的測試中。在遙測軟件測試過程中,雖然數據種類繁多,處理方法也復雜多樣,但遙測軟件卻存在共性功能和類似的測試方法,通過對這些功能及其測試方法進行分析,能夠提取出可復用測試用例。通過復用,能夠避免大量重復性勞動,縮短測試周期,提高效率。另外,測試逐步向高效、通用的方向發展,自動化測試越來越受到重視。文獻[1?3]提出的自動化測試系統具有系列化、通用化、標準化等特征,滿足了多樣化測試需求。文獻[4]介紹了用于構建系統測試與評估平臺的KD_JMASE。文獻[5]介紹了自動化測試工具及其選擇方法。但是,這些都不能夠滿足航天測控系統遙測軟件測試的特定需求。目前測控系統還沒有集測試過程管理、測試數據管理、可復用測試用例管理、測試文檔生成于一體的測試平臺。在這種背景下,迫切需要建立一個基于測試用例復用的軟件測試仿真平臺。
本文對遙測軟件共性功能及其測試模式進行了深入分析,給出了可復用測試用例的要素及其設計方法,并建立了基于測試用例復用的軟件測試平臺,該平臺實現了測試過程管理、測試數據管理、可復用測試用例管理、測試文檔生成和數據顯示與存儲等功能,大大減少了編寫測試用例、準備測試數據、編制測試文檔的時間,極大提高了測試效率。
1 遙測軟件共性功能分析
遙測軟件一般具有以下4個共性功能,分別是:遙測數據包格式驗證功能、遙測數據處理功能、遙測數據記錄功能、遙測數據結果轉發功能。
(1) 遙測數據格式驗證功能:主要是驗證遙測數據的格式是否正確,包括數據包格式驗證、時間碼驗證等。盡管遙測數據在數據格式、參數處理方法等方面有較大差異,但其幀結構都是由幀數、長度固定的數據幀組成。以副幀為64、波道長度為128 B的某遙測數據為例,幀結構如圖1所示。遙測參數分快變量和慢變量兩類:快變量是指每幀的特定波道都只對應1個參數,例如Z1~Z4,Z109;慢變量指不同副幀的特定波道對應不同的參數,例如Z69,Z127~Z128。不管是快變量或慢變量,都有可能包含多個字節。endprint
圖1 遙測原碼幀結構示例
(2) 遙測數據處理功能:主要包括各類遙測處理方法,例如位控時間指令處理、模擬量時間指令處理功能、數字時間指令處理功能、工程參數處理功能等。
(3) 遙測數據統計與記盤功能:統計功能負責對各類遙測原碼幀進行錯幀率與丟幀率統計,對遙測處理結果幀等進行數據統計。記盤功能負責存儲各類遙測原碼幀和遙測處理結果幀,所存儲的遙測原碼幀和遙測處理結果幀將分別用于數據查詢。
(4) 遙測數據處理結果轉發功能:將遙測處理結果根據接口約定進行組幀,向其他軟件配置項進行結果分發。
2 遙測軟件測試模式
遙測軟件測試的主要任務是驗證遙測軟件是否能夠滿足遙測軟件需求規格說明要求的功能需求、性能指標(一般包含數據處理時間要求)、接口需求、安全性需求、可靠性需求和余量需求等。通過對遙測軟件的測試內容、測試方法進行分析,發現遙測軟件的測試模式可以分為數據發送模式、數據接收模式和人工檢查模式共3種:
(1) 數據發送模式:通常情況是,數據仿真軟件按照接口協議和格式要求模擬遙測軟件的其他接口向遙測軟件發送各類遙測原碼、控制命令等接口數據,遙測軟件對接收到的數據進行分析和處理,并根據需求規格說明和接口文件的約定,在界面上顯示結果信息或向其他軟件配置項發送結果信息。即數據仿真軟件給遙測軟件發送遙測數據原碼幀、控制命令幀等,遙測軟件接收到后,對各類參數進行分析和處理,并將處理結果向其他軟件配置項分發。
(2) 數據接收模式:通常情況是,數據仿真軟件捕獲遙測軟件發出的數據幀,并檢查捕獲到的數據幀的內容、格式、幀數、幀間隔等是否與接口文件中規定的一致。
(3) 人工檢查模式:該模式主要通過測試人員的人工檢查和操作實施測試,有時也需要數據仿真軟件的配合。遙測軟件測試時,有一些測試需要測試人員進行手動操作。例如,安裝性測試要檢查遙測軟件的安裝過程和卸載過程是否符合要求,必須通過測試人員實際進行安裝、卸載操作之后才能驗證安裝性是否滿足需求。又如,人機交互界面測試不僅要檢查軟件操作與被測軟件需求規格說明及用戶手冊是否一致,還要檢查軟件對錯誤命令、錯誤操作或非法輸入數據是否具有容錯能力,該測試也必須由測試人員通過界面輸入一些正常值、異常值,才能夠驗證人機交互界面的正確性及其容錯能力。
3 可復用測試用例設計
3.1 可復用測試用例要素
測試用例的輸入及操作、期望結果與評估標準、前提和約束條件、設計方法是測試用例不可缺少的幾個要素。但對于可復用的測試用例而言,這還遠遠不夠。通過對可復用測試用例的適合性進行分析,為了方便地將一個測試用例復用到其他項目,可以對可復用測試用例的以下要素進行詳細描述。這些要素從各個不同角度反映了測試用例的特性,為實現可復用測試用例的標準化提供了模板:
(1) 測試用例名稱:名稱應清晰、簡潔,并能夠準確表達測試用例的功能;
(2) ID:測試用例的ID在測試用例復用數據庫中是惟一的;
(3) 版本號:測試用例的版本號,每個測試用例應按照統一的規則設定一個版本號;
(4) 測試需求:該測試用例要驗證的測試需求,應對測試需求進行詳細描述,例如,功能、性能等;
(5) 測試階段:被測軟件所處的測試階段,可以是單元測試、集成測試、配置項測試、系統測試等,測試階段應可以定制;
(6) 測試方法:黑盒測試中的等價類劃分、猜錯法、因果圖、邊界值分析法,白盒測試中的語句覆蓋、條件覆蓋、分支覆蓋等;
(7) 測試類型:有功能測試、接口測試、性能測試、人機交互界面測試、安全測試、強度測試、安裝測試、余量測試等,可選擇多項;
(8) 應用領域:說明被測軟件所屬的領域;
(9) 系統類型:描述被測軟件的系統架構,例如嵌入式軟件、非嵌入式軟件、B/S、C/S等;
(10) 軟件編碼:描述被測軟件的編碼語言,例如C,C#等;
(11) 測試環境:描述該測試用例執行所必需的軟硬件環境;
(12) 前提條件:測試用例執行之前必須滿足的約束條件,或稱之為約束條件;
(13) 測試輸入:對輸入參數值的抽象描述或參數化描述,不能設置為具體的數據值;
(14) 操作步驟:說明執行該測試用例所需的一系列相關聯的操作;
(15) 期望結果:說明測試用例(步驟)執行后的期望結果,每一操作步驟都可以有自己的期望結果;
(16) 評估標準:描述評判測試用例(步驟)執行結果是否正確的準則,例如:參數數值的精度(小數點后保留6位小數);
(17) 附件:對測試用例附加信息的描述,附件的文件格式不限,能夠方便測試人員深入理解測試用例即可,可以是文本、圖像、模型、與測試用例有關的一些文檔等。
3.2 可復用測試用例設計
通過對遙測軟件的共性功能和測試模式進行分析,可梳理遙測軟件可復用的測試用例,并按照可復用測試用例的要素對每個用例進行測試用例設計。在軟件測試時,為了達到測試用例可操作、可復現的目的,一般都要求對測試用例進行詳細設計,例如,每一操作步驟的輸入數據、操作和參數結果值等信息都要詳細描述。這樣的測試用例在同一軟件進行回歸測試時可能會復用到,但在其他情況下進行復用是很困難的。因此,設計可復用測試用例時,要對測試用例進行通用化處理,排除與特定項目、特定參數相關的具體信息,以提高測試用例的可復用度。
下面以遙測數據處理功能中位控時間指令處理子功能為例,來說明可復用測試用例的設計方法。
位控時間指令處理子功能主要是完成位控時間指令的解算。位控時間指令處理方法是:處理時通過位運算從信息幀中取出對應比特位,每當這一位發生跳變(1≥0跳變或0→1跳變)并且跳變后狀態保持連續多次不變時認為指令出現。位控指令處理方法采用“M判N”原則,即當跳變前連續M個采樣點中有N1點滿足跳變前狀態,跳變后連續M個采樣點中有N2點滿足跳變后狀態,則判斷指令出現(N1,N2≤M,M,N1,N2均可配置),采用第一個跳變點時間作為指令值。
該功能可設計以下可復用測試用例。
(1) 位控時間指令處理正常功能測試(跳變前后點數都滿足)。本用例測試位控時間指令處理正常功能,即在有N1點滿足跳變前狀態、有N2點滿足跳變后狀態時,遙測軟件能否根據“M判N”原則判出位控時間指令,并采用第一個跳變點時間作為指令值。測試該功能時,由數據仿真軟件模擬發送滿足要求的遙測數據,即有N1點滿足跳變前狀態,有N2點滿足跳變后狀態;由結果捕獲軟件接收遙測軟件發出的位控時間指令處理結果幀,查看位控時間指令處理結果是否與第一個跳變點時間一致。
(2) 位控時間指令處理邊界測試(跳變前后點數都滿足)。本用例測試位控時間指令處理正常功能,即在有N1+1點滿足跳變前狀態、有N2+1點滿足跳變后狀態時,遙測軟件能否根據“M判N”原則判出位控時間指令,并采用第一個跳變點時間作為指令值。測試該功能時,由數據仿真軟件模擬發送滿足要求的遙測數據,即有N1+1點滿足跳變前狀態,有N2+1點滿足跳變后狀態;由結果捕獲軟件接收遙測軟件發出的位控時間指令處理結果幀,查看位控時間指令處理結果是否與第一個跳變點時間一致。
(3) 位控時間指令處理異常測試(不滿足跳變前點數)。本用例測試位控時間指令處理時,如果不滿足跳變前狀態點數,是否不能解算出該指令。測試該功能時,由數據仿真軟件模擬發送不滿足跳變前狀態點數的遙測數據,即有N1-1點滿足跳變前狀態,有N2點滿足跳變后狀態;由結果捕獲軟件接收遙測軟件發出的位控時間指令處理結果幀,查看是否未解算出該指令。
(4) 位控時間指令處理異常測試(不滿足跳變后點數)。本用例測試位控時間指令處理時,如果不滿足跳變后狀態點數,是否不能解算出該指令。測試該功能時,由數據仿真軟件模擬發送不滿足跳變后狀態點數的遙測數據,即有N1點滿足跳變前狀態,有N2-1點滿足跳變后狀態;由結果捕獲軟件接收遙測軟件發出的位控時間指令處理結果幀,查看是否未解算出該指令。
4 基于測試用例復用的遙測軟件測試平臺設計
4.1 設計目標
該平臺的設計目標主要包括以下4個方面:
(1) 測試用例可復用。遙測軟件自動化測試仿真平臺能夠建立通用的遙測軟件測試用例集,在對不同遙測軟件進行測試用例設計時能夠重復使用一些測試用例。在進行測試用例設計時,可從測試用例集中選取全部或部分用例,針對各遙測軟件的不同項目特征進行修改、完善。
(2) 測試數據可擴展。該平臺具有強大的數據仿真功能,當接口傳輸協議、接口數據格式或遙測原碼數據內容等發生改變時,只需簡單修改配置信息即可完成新的測試數據的仿真。
(3) 輔助各階段測試設計。界面直觀、易操作,測試人員能夠根據軟件界面的工作向導,按照測試流程完成各階段的設計工作。
(4) 輔助生成測試文檔。能夠幫助測試人員輔助生成各階段測試文檔,如軟件測試計劃、軟件測試說明、軟件測試記錄、軟件測試報告等。
4.2 體系結構
基于測試用例復用的遙測軟件測試平臺采用4層體系結構(如圖2所示),分別為:
(1) 信息層。信息層提供遙測軟件測試平臺運行所必須的數據庫信息、配置信息等,為了達到測試用例可復用、測試數據可擴展的目的,系統各模塊之間的數據交互主要通過訪問數據庫、配置文件、數據文件等來完成。
圖2 仿真平臺體系結構
(2) 數據訪問層。數據訪問層提供系統管理常用的公共函數,例如數據庫訪問、文檔生成、配置文件讀取等。
(3) 業務邏輯層。業務邏輯層主要提供共享內存創建功能、消息隊列創建及管理功能、進程創建及管理功能等。
(4) 表現層。表現層主要為遙測軟件測試人員提供直觀的、圖形化的人機交互界面,例如測試用例集的編輯界面、測試數據的配置界面、各階段的輔助設計界面等。
4.3 功能設計
根據以上分析,將該系統分為4個模塊:可復用測試用例生成模塊、測試數據仿真模塊、測試過程管理模塊和數據顯示與存儲模塊,功能結構如圖3所示。
圖3 功能結構圖
4.3.1 可復用測試用例生成模塊
可復用測試用例生成模塊主要是從可復用測試用例集中提取項目所需的測試用例,包括以下功能:
(1) 提供可復用測試用例集。測試平臺依據軟件共性功能,設計可復用測試用例,提供可復用測試用例集。為方便測試用例最終為某特定項目所用,可復用測試用例應提供有關該用例更詳細的描述,例如被測軟件名稱、該軟件所屬領域、用例要測試哪個功能(功能詳細描述)、該用例是對正常功能或異常功能進行測試等。
(2) 可復用測試用例提取功能。從可復用測試用例集根據不同檢索條件(例如軟件名稱、適用領域、用例名稱、測試類型等)提取所需測試用例,在此基礎上進行修改得到某項目的所有測試用例。測試用例采用統一化描述:測試用例名稱、標識、測試用例綜述、用例初始化條件、前提和約束條件、設計方法(有效類/無效類/邊界值)、輸入及操作、期望結果與評估標準、實測結果、測試用例終止條件、執行狀態(完整執行/未執行/部分執行)、執行結果(通過/未通過)、測試人員、測試時間等。
4.3.2 測試數據仿真模塊
測試數據仿真模塊負責遙測原碼、控制命令等數據的仿真以及結果數據的捕獲等,主要包括以下功能:
(1) 數據收發屬性設置功能。接口傳輸協議可配置,支持TCP,UDP、串口等協議;接口數據格式可配置,支持PDXP,HDLC等不同接口;數據區中數據格式、內容可配置,參數類型和參數值可靈活配置;此外,還能夠設置收發數據的地址、端口號、發送間隔、發送次數等。
(2) 數據接收功能。能夠捕獲遙測軟件發出的數據幀,并對數據進行解析,通過與期望結果進行比對驗證遙測參數處理結果是否正確。測試時根據接口文件進行參數配置,按照某數據約定的格式將其對應字段的數值解算出來,并在測試平臺界面上顯示出來。例如:某遙測參數A在某結果幀(數據編號151)中偏移量為20,占用4 B,數據類型為Float,可進行如下配置:
(3) 數據發送功能:支持String,Byte,Char,Int16,UInt16,Int32,UInt32,Int64,UInt64,單精度浮點數,雙精度浮點數,循環變量,各類日期時間表示法等數據格式設置,能夠滿足遙測軟件測試所需的仿真數據要求。該平臺主要提供2種數據發送方式:一是讀取特定格式的遙測數據文件,例如txt文件、16進制文件等,將該文件中的數據按照設置的發送頻率發送出去。二是根據配置文件的配置信息,通過實時計算得出下一幀的數據內容并將其發送。另外,該平臺還針對遙測軟件測試常見的異常模式,例如長幀、短幀、重幀、丟幀、數據非法等情況,增加了異常模式仿真功能。
4.3.3 測試過程管理模塊
測試過程管理模塊負責整個測試過程的輔助設計與管理,主要包括以下功能:
(1) 測試輔助設計功能:將軟件評測過程分為測試需求分析、測試策劃、測試設計、測試執行、回歸測試、測試總結等6個階段,能夠輔助測試人員按照測試流程完成各階段的設計工作,例如:能夠輔助記錄測試結果,并對測試執行情況和測試結果數據進行統計和分析;能夠對測試出的軟件問題進行分級、分類;當測試出軟件問題時,能夠輔助生成回歸測試用例等。
(2) 評測項目管理功能:能夠輔助測試人員完成項目的啟動、策劃、監控、需求管理、配置管理、質量保證和風險分析等。能夠通過測試需求的雙向追蹤矩陣來實現測試需求項和測試用例集之間的跟蹤管理。
(3) 測試文檔輔助生成功能:在測試完成之后,手工編制測試文檔費時費力且很難保證文檔之間的一致性,為此,按照工程規范制訂了各類測試文檔的文檔模板,并通過對Word底層對象進行編程,實現按照文檔模板將文檔內容輸出到Word文件中。該功能能夠輔助生成軟件測試計劃、軟件測試說明、軟件測試記錄、軟件問題報告、軟件測試報告等測試技術文檔,以及項目管理計劃、配置管理計劃、質量保證計劃等管理文檔。
4.3.4 數據顯示與存儲模塊
數據顯示與存儲模塊負責遙測數據的顯示與存儲、數據查詢等,主要包括以下功能:
(1) 遙測參數顯示功能:能夠將遙測參數原碼及結果信息在界面上顯示;
(2) 遙測數據存儲功能:能夠將接收和發送的數據存儲到數據庫或本地文件;
(3) 數據查詢功能:能夠根據數據發送或接收的時間區間、數據信息類別碼、接口傳輸協議等進行查詢;
(4) 日志記錄功能:日志保存了測試過程中與操作有關的信息,可以按等級、類型、日期等對日志進行查看。
5 結 語
該仿真平臺已經成功運用于遙測軟件測試中,可擴展性好、測試效率高,大大縮短了測試周期。與傳統測試模式相比,該平臺實現了測試數據、可復用測試用例和測試過程的一體化管理,能夠輔助測試人員生成測試數據,并按照測試流程完成各階段的設計工作,降低了對測試人員的技術要求,減少測試過程中重復編程、重復編寫測試用例和編制測試文檔的工作量。此外,該平臺對被測軟件的接口具有很大的靈活性,對數據收發類軟件測試具有很好的借鑒意義。
參考文獻
[1] 趙瑞峰,董房,陸洋,等.衛星通用自動化測試系統體系結構研究[J].信息技術,2011(4):65?68.
[2] 王曉明,戴居峰.嫦娥一號衛星控制分系統地面測試系統設計[J].航天器工程,2008,17(2):94?98.
[3] 田雪詠,常天慶,張雷,等.一類通用的裝甲裝備自動測試系統體系結構[J].計算機測量與控制,2011,19(7):1647?1649.
[4] 彭丹華,欒磊,李革.KD_JMASE在武器系統仿真測試與評估中的應用[J].系統仿真學報,2011,7(23):310?314.
[5] 鄧青華.軟件自動化測試工具研究[J].軟件導刊,2011,10(1):57?59.
[6] 文昌辭,王昭順.軟件測試自動化靜態分析研究[J].計算機工程與設計,2005(4):987?989.