黃茂生
(工業和信息化部電子第五研究所,廣州 510610)
信息化技術的迅猛發展,在軌道交通、電力、智能制造等廣泛應用,出現大量以軟件為核心的軟件密集型智能裝備系統,軟件密集型指在設備系統的功能特性、研制費用、研制風險及研制時間等一個或多個方面,軟件占主導地位的裝備系統, 即以軟件為核心的裝備系統[1,2]。目前對該類設備的試驗評價,采用了傳統的可靠性試驗加軟件測試的方式進行,按照規定要求完成試驗和故障歸零后,在實際裝備使用中仍出現不少的質量與可靠性問題,通過對多型裝備定型后出現的故障數據分析發現,裝備使用條件下的環境應力、外部輸入數據、用戶的使用操作等多個因素共同造成了設備故障與失效情況[3-5],說明對軟件密集型信息化裝備分別開展可靠性試驗及軟件測試的方法,不能充分的暴露其可靠性薄弱環節,迫切需要對試驗技術方法進行研究和改進。
本文對依據GJB 899A-2009實施的可靠性試驗和依據GJB/Z 141-2004的軟件測試,進行了比較和分析,針對其對軟件密集型裝備可靠性試驗的薄弱環節,研究提出一種考慮軟件工作載荷的可靠性綜合試驗剖面設計技術,并通過某型裝備進行了應用試驗驗證。
在裝備研制過程中,可靠性試驗和軟件測試是裝備研制中必須做的兩項重要試驗,在型號工程中已經開展多年,并取得了良好效果,大大地促進了裝備質量的提高。可靠性試驗方面,主要參考和依據MIL-STD-781D《可靠性試驗的發展,試驗條件及程序》及相關標準,針對不同裝備應用于不同氣候環境和機械環境的特點,選取實際使用中最典型、最有代表性的使用條件,通過設計溫度、濕度、振動以及電應力四種環境應力的同步施加,模擬實際使用中所經歷的綜合環境效應[6],對設備進行試驗考核和可靠性評價,其可靠性試驗剖面的典型結構如圖1所示。在可靠試驗期間,會根據試驗大綱,進行部分軟件(系統)功能檢查以及若干性能檢測,但在選定檢查的功能、性能指標時,未充分考慮軟件、硬件之間的影響,因此也沒有規定軟件運行方式、頻度、時間以及預置條件等,試驗方案之間對軟件功能邏輯的覆蓋率有較大的差異,因而對軟件和系統可靠性指標的考核和結果評價均存在一定的偏差。
現行的軟件測試,將測試按級別分為單元測試、集成測試等,測試類型分為功能性測試、性能測試、強度測試等,測試階段分為測試策劃、測試設計、測試執行等[7,8],測試目的是“考核軟件是否符合系統研制總要求或軟件研制總要求規定的技術指標”的要求,測試通過查找缺陷以及對缺陷進行歸零處理來提升軟件的質量,是面向需求的符合性測試,偏重質量符合性。軟件測試時,多數情況下將軟件運行的硬件平臺置于有空調進行溫控的機房中,沒有其置于裝備實際應用場景的溫濕度、電應力以及振動綜合環境下,軟件測試時無法模擬硬件性能變化等對軟件的功能、性能等影響,難以發現軟件硬件共因故障,更難以重現。
文獻[9,10]指出由嵌有軟件的硬件組成的大型軟硬件系統會出現硬件失效、軟件失效和軟硬關聯作用失效,并規定對該類系統的可靠性試驗,需要施加的應力除了包括溫度、濕度、振動、電應力等傳統的環境應力外,還應該包括工作載荷(Operating Load)。可見,單獨的硬件可靠性試驗和軟件測試在暴露軟硬件關聯的故障方面存在欠缺,因此對系統可靠性指標評價存在一定的偏差。
圖1 機載設備可靠性試驗剖面的典型結構
圖2 考慮工作載荷的可靠性綜合試驗剖面設計技術
考慮軟件載荷的試驗剖面設計技術,在現行可靠性試驗、軟件測試的管理和技術模式框架下,以現行可靠性試驗為基礎,細化和完善試驗方案設計,充分考慮軟件的運行剖面,以典型的工作載荷構建完善的軟件測試剖面替代原有的測試點,使綜合可靠性試驗剖面盡可能貼近用戶的使用環境和條件,剖面設計方法和設計過程見圖所示(圖2)。
硬件可靠性試驗剖面設計主要參考和依據MIL-STD-781D《可靠性試驗的發展, 試驗條件及程序》及相關標準,分別完成單任務可靠性試驗剖面設計和多任務可靠性試驗剖面設計。
1)單一任務可靠性試驗剖面
圖3 單一任務裝備的可靠性試驗剖面合成過程(示例)
首先根據設備及裝載平臺的設計要求以及任務剖面,繪制任務特征參數圖(見圖3(a));其次,從設備設計性能規范和任務剖面獲取各任務階段、高度、馬赫數、動壓等數據,并計算或獲取必要的數據(溫度、溫度變化率、振動應力、電應力、濕度等),結合任務特征參數圖提供的數據,得到繪制環境剖面所需的數據:任務階段、持續時間、高度、馬赫數、機艙溫度、溫度變化率、動壓q、概率譜密度W0、W1、露點溫度、設備狀態等,并繪制環境剖面(見圖3(b)所示);最后,依據規定的原則,對環境剖面中的濕度、溫度變化率和振動數據進行處理,依據處理得到試驗剖面圖數據(任務階段、持續時間、溫度變化率、W0、設備狀態等),繪制試驗剖面圖(見圖3(c)所示),試驗剖面應包括溫度試驗剖面和振動試驗剖面,分冷天執行任務和熱天執行任務兩種情況。電應力循環和濕度應力由于變化比較簡單,可以不在剖面上表示出來。
2)多任務裝備的可靠性試驗剖面合成
多任務裝備的可靠性試驗合成,主要是以溫度的時序為基準,同步電應力剖面、振動剖面,兩者的合成方法原理基本一致。多任務裝備可靠性試驗溫度剖面合成過程和方法如下:
步驟1:逐一列出各個任務出現的相對頻率估計值(即各任務在總任務中所占的比例,用加權因子?表示),各任務的加權因子的總和為1;
步驟2:按每一任務剖面列出每一穩態溫度臺階等級T及其持續時間t,用任務加權因子?與持續時間t的乘積作為加權持續時間?t,見表1所示;
步驟3:對表1的相同溫度值進行合并,被合并溫度所對應加權持續時間進行累加,得到一個只有溫度值和總加權持續時間的兩列溫度值匯總表格。
最后,確定冷天和熱天的最大溫度值TMAX、最小溫度值TMIN、加權溫度值TINT3個溫度臺階值和持續時間。TMAX(TMIN)為最高(最低)溫度值5 ℃范圍內的溫度值的加權綜合,其持續時間為參加加權的各溫度對應的總加權持續時間之和;TINT為處參加計算TMAX和TMIN加權溫度值之外的所有剩余溫度值的加權平均值(將所有剩余溫度值分別乘以對應的總加權持續時間,相加后再除以各對應的總加權持續時間之和),其持續時間為各參加加權溫度值對應的總加權持續時間之和。
使用類似方法,確定冷天和熱天的起飛振動量值WOTO、飛行連續振動量值WOC、最大振動量值WOMAX、最小振動量值WOMIN、加權振動量值WOINT共5個振動量值和持續時間。
最后以溫度試驗剖面為主線,繪制多任務合成試驗剖面,見圖3(d)所示。
考慮工作載荷的軟件剖面設計的重點,首先獲取應用戶的實際使用情況,由其執行的任務剖面來確定操作執行時機、頻度,對任務剖面進行使用信息擴充,獲取和確定系統狀態及工作模式[9],對由Markov鏈得到的用戶使用模型進行層次結構分解,構建層次結構狀態遷移矩陣,最終設計形成帶有執行概率分配參數的工作模式執行路徑序列集,按照軟件測試的等價類分析、邊界值分析、判定表法等測試用例設計方法對輸入參數進行設計,設計形成測試用例集,完成構造軟件測試剖面。
表1 各任務剖面溫度值表
圖4 任務剖面Ai-“高-低-低-高”剖面(示例)
1)任務剖面再設計
一般來說,通過任務想定建模得到的任務剖面包含的信息包括:任務階段、運行方式、運行功能、任務時間、環境應力與處于該環境應力下的時間等。而軟件測試剖面的制定需要在任務剖面的基礎上添加軟件使用操作等工作載荷相關信息,依據用戶文檔、操作手冊等相關文檔,與用戶代表等進行面對面的溝通,逐一獲取每個任務剖面各階段中的軟件系統狀態、工作模式等信息,從圖4的任務剖面擴充設計獲取到表2的信息。
2)基于MUSA的軟件狀態層次分解
對表2中獲取裝備全任務剖面可能出現的軟件工作模式集進行分類匯總,得到典型工作模式。然后,依據《操作員手冊》等文檔,使用文獻[10]的方法,對每個典型工作模式進行逐層分解,分解得到該裝備所支持的下級工作模式。
以某型設備為例,其任務剖面全集中出現的軟件工作模式集包含K-K、K-H、K-D和D-H四種典型工作模式,對四種工作模式進行下一級分解,如K-K工作模式進一步分解為VS,RWS,TWS,STT、SAM等(見表3所示)。
3)基于Markov鏈的狀態遷移矩陣構建
依據任務來確定工作模式的切換,模式之間的轉換是有一定的約束:同級模式之間可以直接轉換,子模式之間的轉換若是跨父模式的,是以父模式切換為前提條件的,有些模式的切換則必須經過其他模式的引導(見表4和圖5所示),因此,可以使用分層結構Markov鏈使用模型,將同一層級工作模式看作一個整體,看作是Markov 鏈中的一個結點,將同層級的轉換關系封裝起來形成子集,避免Markov鏈狀態空間爆炸問題。使用Markov鏈使用模型構建同層工作模式的轉移概率矩陣,同層級不同模式下子模式之間的轉換關系,則通過兩個子模式及父級的Markov鏈的串行關系來實現:
假設狀態轉移矩陣Ak為n×n的矩陣,其中k∈{1,…,m},m為分解得到的工作模式集總數,n為第k層級工作模式的最大模式數,每一項pkij=p(Xkt=xkj|Xk(t-1)=xki)表示工作模式xki轉移到工作模式xkj的概率,在轉移矩陣中,如果某兩個工作模式xki、xkj之間不能直接轉換,則記狀態轉移概率pkij為0。
表2 任務剖面擴充信息表
表3 K-K工作模式轉換關系
圖5 K-K工作模式轉換圖(示例)
轉移概率矩陣Ak滿足以下兩個條件:
4)執行路徑序列集構造及單任務軟件測試剖面用例集設計
根據1)-3)得到所有工作模式執行路徑序列集S={s1,s2,…,sd}, 路徑sd代表軟件的一次完整使用操作過程,等同1個基礎測試用例,路徑概率代表用戶使用操作的頻度,sd經歷了若干個模式,結合Markov鏈狀態遷移矩陣,可計算得到每條路徑所對應的路徑概率psd。
假設某條執行路徑跨越了一個父級Ak及兩個子級狀態轉移矩陣Ak-1、Ak-2:
式中:
∏AK—該執行路徑在狀態轉移矩陣Ak內的狀態遷移概率的乘積。
對S中的工作模式執行路徑序列,使用等價類劃分法、邊界值分析法、判定表法等測試用例設計方法,對sd進行用例設計形成測試剖面,并建立任務階段與sd的映射表(如表4所示)。
由于硬件可靠性是時間的函數,是器件隨著使用時間的積累其物理特性的變化,有浴盆曲線現象,因此硬件可靠性主要通過環境應力的時間累積來激發產品故障;而軟件可靠性的決定因素是與輸入數據和程序內部狀態有關的軟件差錯,其故障的激發取決于程序運行的路徑,是程序路徑運行狀態空間域的函數,是程序代碼運行空間的函數。
依據硬件可靠性和軟件可靠性的這一特性,將多任務可靠性試驗剖面合成剖面的時間占比,替換為來自任務該階段(Aij)的軟件執行路徑序列的執行概率占比,實現可靠性試驗剖面的“時間”與軟件測試剖面的“空間”的匹配。如圖6所示,從2.1中“2)多任務可靠性試驗剖面合成”,得到合成試驗剖面中溫度臺階(-34.3 ℃)的任務來源及其持續時間占比(圖6中虛線框內所示),通過上述“時空匹配”,可得到該溫度臺階需執行的執行路徑序列及其執行概率(見表5所示),單個Aij內的執行路徑序列間的執行分配由式(5)的psd來確定。最后,對執行路徑序列歸一化處理,形成考慮軟件工作載荷的可靠性綜合試驗剖面,如圖7所示。
表4 某任務剖面Ai任務階段與sd的映射表
圖6 軟件測試剖面與可靠性試驗剖面匹配
表5 溫度臺階(-34.3 ℃)的任務來源及sd執行概率
圖7 考慮軟件工作載荷的可靠性綜合試驗剖面
在某設備的可靠性驗收試驗中,采用本文提出的剖面構造技術進行可靠性綜合試驗剖面設計,驗證試驗共設計13.75個循環,合計試驗時間110 h。驗證試驗的綜合試驗剖面中,涉及軟件操作和測試的有6個溫度臺階(見圖7所示),與之前同型號裝備的試驗剖面相比,增加52個基本用例數,歸一化后的用例執行總數量為502個。
驗證試驗發現了軟硬件關聯故障1個,該故障在此前的可靠性試驗和軟件測試均未發現。通過故障歸零分析時發現:該故障曾經出現過多次,且是該裝備的外場使用中出現,出現的條件組合都是“載機在大量級振動并裝備在運行大角度俯仰掃描功能”,傳統的可靠性試驗和軟件測試由于各自特點與局限性,均未能暴露該類型的故障。
由此可見,考慮軟件工作載荷的可靠性綜合試驗剖面設計技術,以完善的軟件測試剖面替代原有的測試點,其本質與盡可能貼近用戶使用環境和條件的可靠性試驗要求,是相一致的,可作為傳統可靠性試驗和單獨的軟件第三方測試/定型測試的有效補充,有效暴露軟件密集型信息化裝備的軟硬件關聯故障,符合目前裝備發展的需求,具有良好的應用前景。