何銀川 周翔 鄧任鋒
摘要:時(shí)序特性是嵌入式軟件的重要特性,實(shí)時(shí)嵌入式軟件運(yùn)行的正確性不僅依賴于任務(wù)執(zhí)行結(jié)果,更依賴于任務(wù)執(zhí)行時(shí)間。執(zhí)行任務(wù)往往具有多個(gè)時(shí)間約束,且相互之間可能存在制約關(guān)系,對(duì)時(shí)間約束進(jìn)行驗(yàn)證和確認(rèn)是嵌入式軟件測(cè)試過程中一個(gè)非常重要問題,因而文章提出了一種基于執(zhí)行片段的嵌入式軟件時(shí)序特性檢測(cè)方法,簡(jiǎn)單地說(shuō),即通過執(zhí)行片段對(duì)軟件的時(shí)序進(jìn)彳亍特性檢測(cè)。
關(guān)鍵詞:執(zhí)行片段;時(shí)序缺陷檢測(cè);軟件測(cè)試;嵌入式軟件
時(shí)序特性是否滿足設(shè)計(jì)要求將對(duì)實(shí)時(shí)嵌入式軟件的正常運(yùn)行有著至關(guān)重要的影響,因?yàn)闀r(shí)序異常極有可能會(huì)造成任務(wù)執(zhí)行的失敗,甚至在很多時(shí)候還會(huì)造成系統(tǒng)的極大破壞,因此正確的嵌入式軟件時(shí)序的設(shè)計(jì)不僅是軟件開發(fā)的重中之重,更是軟件正常實(shí)現(xiàn)的關(guān)鍵。
1 研究背景
要想準(zhǔn)確地掌握目標(biāo)系統(tǒng)的時(shí)序特征、合理地對(duì)時(shí)序序列缺陷進(jìn)行檢測(cè)都是要建立在精確、完整建模的基礎(chǔ)上。接口自動(dòng)機(jī)(Interface Automata,IA)作為一種輕量級(jí)的形式模型,其主要是通過狀態(tài)機(jī)的相關(guān)接口去實(shí)現(xiàn)對(duì)構(gòu)件間通信以及交互過程的描述,并且還可以進(jìn)行對(duì)構(gòu)件內(nèi)部結(jié)構(gòu)的隱藏,實(shí)現(xiàn)對(duì)外部環(huán)境有關(guān)行為特性的刻畫,同時(shí)在這個(gè)環(huán)境下,還可以自動(dòng)地進(jìn)行相容性檢測(cè)和精化檢驗(yàn),因而是一種可組合的、非常適合軟件系統(tǒng)建模的常用工具。
2 時(shí)序缺陷檢測(cè)關(guān)于相關(guān)性的分析
在對(duì)時(shí)序進(jìn)行缺陷檢測(cè)的時(shí)候,需要借助清除、簡(jiǎn)化、整合、自動(dòng)化(Eliminate Simplify Integrate Automate,ESIA)模型和執(zhí)行路徑在時(shí)間約束方面的相關(guān)性進(jìn)行分析,因此需要對(duì)執(zhí)行片段中預(yù)先提取的各類信息進(jìn)行自動(dòng)檢測(cè),以排查軟件在執(zhí)行過程中各種時(shí)序錯(cuò)誤,并借此檢查軟件相關(guān)的異常處理機(jī)制是否符合設(shè)計(jì)需求。本文為了更好地對(duì)序列的執(zhí)行過程進(jìn)行描述,把其定義為一個(gè)行為執(zhí)行序列。
在對(duì)執(zhí)行片段進(jìn)行提取的過程中也有一些注意事項(xiàng),比如可能會(huì)有信息不存在的情況,這時(shí)只需要讓相應(yīng)元素空缺即可,而又如某一項(xiàng)執(zhí)行片段缺失時(shí)間信息,那么這時(shí)也就沒有與之相關(guān)聯(lián)的任何信息進(jìn)行描述的必要[1]。此外,在基于執(zhí)行片段的嵌入式軟件時(shí)序特性檢測(cè)(Trace-BasedTemporal Defect Detection,TBTDD)方法中,應(yīng)當(dāng)保證執(zhí)行片段相關(guān)記錄的規(guī)范性和完整性,以幫助后續(xù)的解析和檢測(cè)任務(wù)的順利進(jìn)行。并且對(duì)于軟件異常時(shí)序機(jī)制處理的檢測(cè)和驗(yàn)證也是必不可少的,以此來(lái)避免非預(yù)期結(jié)果的出現(xiàn)。
出于這些因素考量,本文中又將時(shí)序片段分為正常和異常兩個(gè)部分,其具體定義如下。
2.1 正常時(shí)序片段
如果該執(zhí)行片段僅包含正常的時(shí)序序列和與之對(duì)應(yīng)的執(zhí)行分支,則被叫作正常片段。
2.2 異常時(shí)序片段
如果該執(zhí)行片段包含異常時(shí)序和與之相對(duì)應(yīng)的異常處理分支,則被叫作異常片段。
但需要注意的是,在對(duì)執(zhí)行片段的提取上應(yīng)當(dāng)盡可能地對(duì)各種正常或者異常的時(shí)序進(jìn)行覆蓋,以達(dá)到對(duì)目標(biāo)軟件的所有異常時(shí)序充分檢測(cè)的目的。
3 執(zhí)行片段注意事項(xiàng)
3.1 對(duì)執(zhí)行片段進(jìn)行匹配
如果所執(zhí)行片段中的序列信息能夠與ESIA模型中的執(zhí)行路徑相符,則就稱該執(zhí)行片段能夠被ESIA模型所接受。因此制定出相關(guān)的可接受準(zhǔn)則是首要解決的事,并在此準(zhǔn)則的基礎(chǔ)上提出一種基于廣度優(yōu)先算法的候選狀態(tài)選取策略,然后再逐項(xiàng)地對(duì)執(zhí)行片段上的各種信息進(jìn)行匹配,通過這種方法找到所有能與ESIA模型相匹配的執(zhí)行路徑,如果不能找到正確的匹配路徑則把不能匹配的片段進(jìn)行濾除。由于ESIA模型中既有正常的時(shí)序信息也有異常的時(shí)序判斷,所以在對(duì)可接受準(zhǔn)則的制定上應(yīng)當(dāng)以能夠適應(yīng)這兩種匹配過程的準(zhǔn)則為先導(dǎo)。以下是對(duì)相關(guān)可接受準(zhǔn)則的一個(gè)定義。
(1)從j=1開始,即從λ1開始,選擇VP中某一個(gè)候選元素作為起始狀態(tài),啟動(dòng)Trace進(jìn)行匹配。
(2)如果候選集合中存在著與λ1相一致的狀態(tài)遷移,則對(duì)該狀態(tài)移動(dòng)以及相應(yīng)的目標(biāo)狀態(tài)進(jìn)行記錄。通過這種方法,讓?duì)?對(duì)所有的候選狀態(tài)基于該過程進(jìn)行匹配,并把匹配過后所得到的記錄狀態(tài)的集合對(duì)當(dāng)前的狀態(tài)候選集合進(jìn)行更新,到此λ1完成所有匹配過程。
(3)根據(jù)執(zhí)行片段的順序,使Trace重復(fù)進(jìn)行步驟(2)。如果Trace中的所有過程均能夠被正確匹配,則表示能夠找到一組與之相符的ESIA執(zhí)行路徑,反之,則不行。但值得注意的是,往往在匹配的過程中不是只有一個(gè)候選狀態(tài)能與執(zhí)行片段相匹配,換句話說(shuō)就是有多個(gè)狀態(tài)遷徙能夠與執(zhí)行片段相匹配,因此與之相符的ESIA執(zhí)行路徑可能不只一條[2]。
但面對(duì)ESIA的執(zhí)行路徑存在多條的時(shí)候,則要根據(jù)具體的問題具體進(jìn)行分析,一般從執(zhí)行路徑與時(shí)間約束之間的關(guān)系著手。如果不同的匹配路徑其時(shí)間關(guān)系不同,則不能輕易地判斷該執(zhí)行路徑是符合時(shí)序的相應(yīng)設(shè)計(jì)要求的。針對(duì)以上情況,還需要通過對(duì)匹配路徑的有關(guān)時(shí)間約束和時(shí)序序列進(jìn)行缺陷檢測(cè)來(lái)增強(qiáng)準(zhǔn)確判斷的籌碼,如果檢測(cè)的結(jié)果是執(zhí)行片段中的相關(guān)時(shí)間信息不能滿足匹配路徑對(duì)于時(shí)序的要求,則判定該軟件的時(shí)序存在缺陷或異常,不過具體存在何種問題則還需要進(jìn)一步的進(jìn)行驗(yàn)證和分析。
此外,如果沒有一條與該執(zhí)行片段相符合的執(zhí)行路徑,則過濾該執(zhí)行片段,也不再對(duì)其進(jìn)行其他的相關(guān)障礙檢測(cè),在這種情況下有兩種可能性,一種就是ESIA模型描述的場(chǎng)景不全面,另一種就是軟件存在著功能性障礙,具體是哪一種情況,還需要對(duì)相應(yīng)執(zhí)行片段及其功能設(shè)計(jì)進(jìn)一步的進(jìn)行審查,但不能篤定地說(shuō)軟件一定存在著時(shí)序缺陷。
3.2 對(duì)時(shí)序進(jìn)行缺陷分析
對(duì)嵌入式軟件進(jìn)行故障檢測(cè)、定位、隔離、重構(gòu)以及修復(fù)是故障管理的5個(gè)主要方面。如果目標(biāo)軟件存在著較多的時(shí)序缺陷或者故障的時(shí)候,其檢測(cè)、定位也將更加復(fù)雜,并且常常由于故障之間的某種關(guān)系或者作用,使得許多故障在檢測(cè)的過程中極有可能被掩蓋,因而本文主要針對(duì)的是目標(biāo)軟件中某一個(gè)單一的時(shí)序序列,通過檢測(cè)、識(shí)別、定位等步驟對(duì)其故障進(jìn)行排查。所以,首先要對(duì)軟件在執(zhí)行過程中有可能會(huì)出現(xiàn)的類似于時(shí)序異常、功能性障礙等情況進(jìn)行分析和判斷,根據(jù)分析結(jié)果確定相關(guān)的時(shí)序缺陷類型[3],并以此為基礎(chǔ)有針對(duì)性的制定出檢測(cè)過程中的特性檢測(cè)準(zhǔn)則,從而達(dá)到對(duì)異常時(shí)序檢測(cè)、識(shí)別有效性和可靠性的目的。此外,如果目標(biāo)軟件程序在ESIA模型之上不存在與之相匹配的執(zhí)行路徑,則該軟件在程序的實(shí)現(xiàn)上可以判斷為有功能性缺陷,甚至在運(yùn)行的過程中極有可能有以下時(shí)序異常的發(fā)生。
(1)違反特定的時(shí)間約束,即對(duì)于時(shí)間變量的取值不符合特定的時(shí)間約束,或者是在對(duì)其狀態(tài)匹配的過程中未能找到與之相對(duì)應(yīng)的時(shí)間約束。
(2)違反相關(guān)的時(shí)間約束,簡(jiǎn)單地說(shuō)就是在時(shí)間變量的取值上不滿足時(shí)間約束之間的關(guān)系。
(3)違反計(jì)時(shí)起點(diǎn)設(shè)置要求,即對(duì)某些時(shí)間變量進(jìn)行計(jì)時(shí)起點(diǎn)設(shè)計(jì)的過程中不滿足有關(guān)設(shè)計(jì)要求。
(4)錯(cuò)誤的異常時(shí)序處理,也就是說(shuō)對(duì)于異常時(shí)序的相關(guān)處理機(jī)制不符合設(shè)計(jì)要求。
3.3 對(duì)時(shí)序進(jìn)行缺陷檢測(cè)
通常通過執(zhí)行片段中的時(shí)間信息與檢測(cè)過程中所制定的相關(guān)標(biāo)準(zhǔn)之間的關(guān)系來(lái)判斷所設(shè)計(jì)的軟件時(shí)序是否滿足設(shè)計(jì)要求。因此,在TBTDD方法中,首先需要分析和掌握時(shí)序的缺陷類型,并根據(jù)該類型制定滿足時(shí)序特征的相關(guān)準(zhǔn)則,再由此把ESIA模型中對(duì)于時(shí)間需求的描述當(dāng)作檢測(cè)的一個(gè)度量,然后檢測(cè)正在執(zhí)行中的有關(guān)片段的時(shí)間信息和異常處理機(jī)制,并且對(duì)異常時(shí)序機(jī)制的檢測(cè)還可以保證軟件運(yùn)行的可靠性和健壯性。此外,這種方法還可以通過ESIA的有關(guān)執(zhí)行路徑對(duì)有缺陷的時(shí)序進(jìn)行定位,對(duì)違反相關(guān)或者特定時(shí)間約束的、不符合設(shè)計(jì)特定時(shí)序異常處理機(jī)制要求的、計(jì)時(shí)起點(diǎn)設(shè)置錯(cuò)誤的等缺陷情況,都能夠非常有效和充分地進(jìn)行檢查和測(cè)試。
[參考文獻(xiàn)]
[1]汪普慶.計(jì)算機(jī)軟件安全及其防范探討[J].數(shù)字技術(shù)與應(yīng)用,2016(1):219.
[2]王磊.計(jì)算機(jī)軟件安全問題及防御對(duì)策研究[J].工業(yè)c,2016(3):229.
[3]吳巍.計(jì)算機(jī)網(wǎng)絡(luò)安全問題及有效防范措施研究[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2015(2):164-165.