?

星載軟件可靠性仿真測試環境研究*

2016-03-15 04:59
計算機與數字工程 2016年2期

鄭 重 石 柱

(中國航天系統科學與工程研究院 北京 100048)

?

星載軟件可靠性仿真測試環境研究*

鄭重石柱

(中國航天系統科學與工程研究院北京100048)

摘要軟件可靠性測試是驗證和評估軟件可靠性水平的重要方法,要求軟件運行環境的真實性,因此,測試環境的建立是進行可靠性測試的難點,也是決定測試結果正確性的關鍵因素。論文闡述了針對某星載嵌入式軟件可靠性測試環境的設計,包括測試平臺的構建,以及測試腳本的構造,該環境已成功應用于某星載嵌入式軟件的可靠性測試,效果較好。

關鍵詞星載軟件; 軟件可靠性測試; 測試環境

Simulation Test Platform of Spaceborne Software Reliability

ZHENG ZhongSHI Zhu

(China Academy of Areospace Systems Science and Engineering, Beijing100048)

AbstractSoftware reliability testing is an important mothod of qualifying and evaluating software reliability. The facticity of test platform is the most difficult thing during the reliability testing, and establishing test platform is also the key factor which determines the effect of software reliability testing. A set of design of an spaceborne software testing platform is described, which consists of testing flat established, and testing script constructed.And it has been applied in an spaceborne embedded software testing project successfully and effectively.

Key Wordsspaceborne software, software reliability testing, testing platform

Class NumberTP311.5

1引言

星載軟件的可靠性仿真測試是保證星載軟件安全可靠運行的重要手段,通過地面進行的全面、充分的分析和測試,盡可能把存在的錯誤暴露在地面測試階段,才能保證產品最終在航天器這種特殊的環境中長期穩定的工作。通過可靠性測試能有效地暴露并糾正在實際使用過程中影響可靠性要求的軟件缺陷,提高其可靠性水平,并驗證其是否達到了規定的可靠性要求[1]。

星載軟件的可靠性測試必須使軟件在模擬空間復雜多變的環境下運行。以往的星載軟件可靠性仿真測試環境,僅從模擬衛星對星載軟件的功能實現角度設計,或針對特定故障進行設計,而本文針對某具體星載嵌入式軟件設計仿真環境,通過構造運行剖面,模擬軟件真實運行時的輸入,通過構造各種環境模型模擬軟件真實運行環境,可測試星載嵌入式軟件真實的可靠性水平,同時可測試該軟件的故障對策的優劣及其容錯性能,大大提高可靠性仿真測試覆蓋度,同時實時顯示各關鍵參數和狀態[2]。

本文的設計方法為其他航天器嵌入式軟件可靠性仿真測試環境設計提供了重要的參考。

2軟件可靠性測試過程

軟件可靠性測試是指為了保證和驗證軟件的可靠性要求而對軟件進行的測試,與一般軟件測試不同,軟件可靠性測試的主要目的不是發現所有的軟件錯誤和缺陷,而是通過獲取軟件失效數據進行分析,評估軟件當前的可靠性水平,預測未來可能達到的水平,從而驗證軟件可靠性的定量要求是否得到滿足[3]。

根據以上特點,參考以往經驗,此次軟件可靠性測試工作過程主要包括構造運行剖面、產生測試用例、執行測試、結果分析和可靠性評估五個環節[4],其中:

1) 構造使用剖面:使用剖面是指軟件各種使用情況及其發生概率的集合。在使用信息分析的基礎上,按照被測軟件的實際使用規律,構造軟件的使用剖面。

2) 生成測試用例:基于上述構造的軟件使用剖面,通過程序生成測試數據及自動測試驅動工程文件(含多個腳本文件),該工程文件相當于測試用例集,以驅動仿真器對該軟件進行測試。

3) 執行測試:在上述工作準備就緒的情況下,執行可靠性測試,并通過可靠性測試平臺中的監測功能收集測試數據及發生的失效數據,測試人員分析發生的失效事件,并將有效的失效記錄下來。

4) 結果分析:根據監測設備和監測軟件記錄的故障數據,以及用戶定義的失效,收集失效數據,包括失效的嚴重程度。

5) 可靠性評估:根據測試期間發生的失效次數和時間,利用可靠性模型,評估軟件的可靠性指標是否達到預期的可靠性指標要求,得出拒絕或接受被測軟件的結論[5]。

可靠性測試環境的構建原理圖如圖1所示。

整個可靠性仿真測試環境包括三個部分:激勵器,目標系統和主控機。

1) 激勵器:根據運行剖面解析產生測試數據,對數據進行仿真處理,產生并控制激勵信號,驅動被測軟件運行。

2) 目標系統:運行激勵器產生的測試用例,生成測試過程數據,包括被測件的運行狀態數據和軟件處理數據,采集并傳輸數據到主控機。

3) 主控機:接受并處理目標系統的監測數據,記錄、分析并顯示監測數據,并監控測試過程。

3測試環境的基本結構

構建該試驗平臺的目的是為可靠性測試提供試驗環境,從而驗證可靠性設計改進后的軟件是否能達到連續有效運行六個月的定量指標。為盡可能確保該軟件在真實環境下進行可靠性測試,全面考核該軟件的所有對外接口及運行剖面,在受試設備的整機環境中運行該軟件,即應保持該軟件與星上其他設備進行正常的數據與信號交換。

3.1測試環境框架

某星載嵌入式軟件可靠性試驗環境包括運行平臺和監測平臺兩個部分,其中運行平臺設備主要包括受試設備(包括監測數據采集模塊);監測平臺設備主要包括高動態仿真器、計算機、監測設備及監測軟件等??煽啃詼y試試驗平臺能為該軟件可靠性測試提供穩定的試驗環境。

被測軟件是一個對外部信號進行連續采集、實時處理的運行體。在每套設備中,為消除受試設備與監測設備間接口通訊失效,將采用硬件上獨立的UART及FPGA兩種方式傳送監測數據。

試驗平臺構成如圖2所示。

圖2 可靠性測試平臺設備連接示意圖

3.2硬件設計

整個平臺硬件的設計如下:

1) 高動態仿真器:通過高動態信號仿真器模擬接近真實運行狀態的信號,并可通過改變電文原碼、偽碼類型、傳播誤差等因素考核該軟件在各種信號輸入條件下的故障發生率。通過構造軟件的運行剖面從而生成高動態仿真器可執行的測試腳本,來激勵受試設備的運行,由運行剖面生成測試腳本的方法。

2) 受試設備:受試設備在原有技術狀態基礎上,增加監測數據采集模塊完成通道板軟件動態運行特征量的采集、測量及存儲功能。該功能通過FPGA與數據轉發模塊實現,并將采集數據高速傳送至外部監測設備進行處理分析。

增加監測數據模塊后,能夠實現受試設備固有的重要過程變量監測、DSP的時序實時監測、重要脈沖監測、以及部分硬件數據的監測。

3) 監測設備:受試設備在測試過程中產生的實時運行數據將發送給監測設備。監測設備將分別接收監測數據采集模塊的USB監測數據、星上接口仿真模塊采集的總線數據(如CAN總線)以及經接口電平變換后的自檢數據;并對數據進行實時顯示、分析、存儲和回放。

監測設備具有良好的通用性和可擴展性,可靈活配置各種數據源接收格式及處理格式,從而適應不同受試設備平臺類型及測試類型,同時兼備在軌數據分析功能。

3.3軟件設計

為實現對軟件實時動態性能的監測,開發了監測軟件,該軟件具備功能如下:

1) 實現與CAN等星上總線數據交換功能;

2) 實時采集來自受試設備“監測數據采集模塊”及自檢口的軟件動態運行特征量,包括:實時存儲監測軟件運行過程數據;實時存儲監測受試設備相關信號的幅度或脈寬與周期;實時存儲監測軟件運行時序與架構性能,分析系統總體執行的時間和每個子程序最大、最小、累加執行時間與次數,跟蹤當前運行點位;

3) 對上述軟件動態運行特征量,以文字或圖形化方式進行實時跟蹤顯示、性能統計與比對分析,并對異常值進行報警;

4) 按數據類別定時存儲軟件動態運行特征量;

5) 可根據菜單或配置文件靈活配置分析曲線的各維參數,并自定義邊界值;

6) 可選擇記錄時間段對所有存儲數據進行數據回放顯示。

監測軟件的組成如圖3所示,由監測數據處理模塊、星上接口處理模塊、自檢接口處理模塊及數據后處理模塊組成。

圖3 監測軟件組成圖

監測軟件四大模塊將分別接收受試設備監測數據采集模塊的USB監測數據、地面檢測設備采集的總線數據(如CAN)及接口電平變換后的自檢數據,并對數據進行實時顯示、分析、比對、存儲和回放。

該軟件可靠性試驗平臺的組成充分考慮了冗余設計、多方位監測的原則,監測設備和監測軟件共同構成了一套不同方位、相互獨立的監測體系。

4測試腳本的構造

4.1運行剖面生成測試數據的方法

運行剖面生成測試數據的過程就是根據建立的運行剖面生成測試用例并且根據可靠性要求確定測試用例數量,并根據分配的概率抽取操作序列及參數的約束條件,來生成可靠性測試數據的過程[6-7]。其詳細過程如下:

1) 根據運行剖面,獲得所有的運行對應的概率;

2) 根據運行序列的概率按照一定的隨機抽樣的方法抽取運行序列;

3) 在抽取運行序列的時候,結合參數的約束信息,生成相應的測試數據;

4) 重復2)~3)的步驟,直到生成的測試數據的數目符合指定的數目[8];

應用于此次測試中,即根據各剖面中各事件在星載導航軟件運行過程中發生的概率,按時間序列抽取各剖面中各事件作為測試用例并生成自動化測試腳本。

按時間序列抽取各剖面中各事件作為測試用例并生成自動化測試腳本的方法為對于連續變化的數據,根據其函數分布隨機抽取測試數據,并按照固定的時間間隔均勻分布在時間軸上[9];對于離散型數據,把每個剖面事件發生的概率與實際區間[0,1]的一個子區間相聯系,該子區間的大小等于事件發生的概率,然后對所需的每個測試數據生成區間[0,1]中的一個隨機數,根據隨機數落入的子區間來確定對應的測試數據,再將這些測試數據按照固定的時間間隔隨機分布在時間軸上[10]。

4.2測試數據的生成

下面以電文剖面測試數據生成方法為例。

1) 電文剖面的構造

由于電文參數在實際運行中絕大多數情況下都較為穩定,但在某些情況下會出現異常,因此,電文剖面可根據電文參數正常和異常對電文進行劃分。

(1)根據與開發方溝通,電文正常的概率為0.99,異常的概率為0.01,按照導航電文不健康類型、電文精度和其他極端情況,又可將電文的異常類型分為九類。

(2)每次發生電文異常的星數是隨機的,即可能是一顆星,也可能是多顆星,對于單一導航星和所有導航星來說,電文的某一或全部的參數錯誤是隨機和均等的。

電文參數異??梢愿鶕陨蠈Ш叫菙岛彤惓n愋偷牟煌M合和概率來構造剖面,最終共生成289個剖面。在測試用例設計中,電文正常范圍值由高動態仿真器來保證,對于異常值需要構造測試用例。根據導航星電文異常發生的概率和運行時間計算,需從288個異常剖面中隨機抽取20個電文異常操作,最后將20組異常數據隨機分配到168天的時間軸上。由于該軟件的一個軌道周期大約是2個小時,因此,設定每個異常持續2個小時,一臺仿真器需要構造10個不同的用例,即從288個電文異常剖面中抽取10個用例。

2) 測試數據的生成

假設電文異常剖面中的事件包括3個(P1,P2,P3),根據分析,從這3個電文異常剖面中抽取10個事件,這3個電文異常剖面事件概率為P1=0.3,P2=0.2,P3=0.5,則P1與實際區間[0,0.3]相聯系,P2與實際區間[0.3,0.5]相聯系,P3與實際區間[0.5,1]相聯系。

下一步,生成區間[0,1]中的一個隨機數(該隨機數生成可由計算機完成),生成區間[0,1]中的10個隨機數,根據隨機數落入的子區間來確定對應的測試用例。例如:若隨機數為0.457,則抽取P2事件。最終抽取的測試數據集合如圖1所示。

表1 測試數據集合

將這10組測試數據隨機分布在時間軸(從0天00:00:00~55天23:59:00,時間間隔2小時)上的輸入序列。

5結語

本文給出了一個星載實時性嵌入式軟件可靠性測試環境的設計實例,該環境既滿足系統真實性的要求,又能實時監測、顯示運行時的重要參數,在一定程度上實現了自動化測試。該平臺已經成功應用于開展某星載嵌入式軟件的可靠性測試工作,發現了一般功能測試無法發現的缺陷和錯誤,并給出該軟件的可靠性指標值,從而進一步驗證了該測試平臺的正確性和可用性。

參 考 文 獻

[1] Michael R. Lyu. Hand Book of Software Reliability Engineering[M]. IEEE Computer Society Press. New York: McGraw-Hill,1996,4:168-189.

[2] Michael R. Lyu. Software Reliability Engineering: A Roadmap[C]//Future of software Engineering,2007,FPSE,07,HongKong:153-170.

[3] 阮鐮,劉斌,陳雪松.軟件可靠性測試及其測試環境[J].測控技術,2000,19(2):9-12.

RUAN Lian, LIU Bin, CHEN Xuesong. Software Reliability Test ang It’s Testing Enviroment[J]. Measurement and Control Technology,2000,19(2):9-12.

[4] 石柱,鄭重.星載軟件可靠性測試實踐[J].計算機工程與設計,2013,34(2):721-724.

SHI Zhu, ZHENG Zhong. Spaceborne Software Reliability Testing Practice[J]. Computer Engineering & Design,2013,34(2):721-724.

[5] 鄭重,石柱.星載軟件可靠性工程研究與實踐[J].計算機與數字工程,2013,41(8):1273-1276.

ZHENG Zhong, SHI Zhu. Study And Practice on Spaceborn Software Reliability Engineering[J]. Computer & Digital Engineering,2013,41(8):1273-1276.

[6] 王乾宇,朱小冬,王毅剛,等.基于TestQuest的嵌入式軟件可靠性測試環境框架研究[J].中國測試,2012,38(1):106-109.

WANG Qianyu, ZHU Xiaodong, WANG Yigang, et al. Framework of reliability test environment for embedded software based on TestQuest[J]. China Measurement & Testing Technology,2012,38(1):106-109.

[7] 郭堅,付連芳,翟君武.一種星載軟件系統測試環境的設計[J].計算機測量與控制,2005,13(5):499-502.

GUO Jian, FU Lianfang, ZHAI Junwu. [J]. Computer Measurement & Control,2005,13(5):499-502.

[8] 張旭,石柱,王崑聲.基于使用剖面的軟件可靠性測試用例生成方法[J].計算機仿真,2009,26(12):82-85.

ZHANG Xu, SHI Zhu, WANG Kunsheng. A test Case Generation Approach of Software Reliability Based on Usage Profile[J]. Computer Simulation,2009,26(12):82-85.

[9] Vincent Almering, Michiel van Genuchten, Ger Cloudt, et al. Using Software Reliability Growth Models in Practice[J]. IEEE Software,2007,24(6):82-88.

[10] Zeng Fuping, Lu Minyan. Application research of software reliability testing[C]//2012 IEEE International Conference on Computer Science and Automation Engineering, Zhangjiajie: IEEE Beijing Section,2012.

中圖分類號TP311.5

DOI:10.3969/j.issn.1672-9722.2016.02.024

作者簡介:鄭重,男,碩士,工程師,研究方向:軟件可靠性工程,軟件安全性。石柱,男,博士,研究員,研究方向:軟件工程,軟件可靠性,軟件安全性和軟件過程改進。

基金項目:國防科技工業局民用航天科研預先研究項目(編號:B2120080307)資助。

*收稿日期:2015年8月12日,修回日期:2015年9月25日

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合