999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VC33航天軟件集成測(cè)試技術(shù)研究

2020-02-27 12:33:44牛穎蓓

牛穎蓓, 左 蕓

(中國(guó)電子科技集團(tuán)公司 第三十二研究所,上海 201808)

0 引言

航天工程,包括運(yùn)載火箭、衛(wèi)星、飛船和武器等型號(hào)都涉及巨大的投入、重要的使命乃至國(guó)家的安危[1]。特別是承擔(dān)過(guò)程控制、系統(tǒng)指揮、數(shù)據(jù)處理等關(guān)鍵任務(wù)的軟件,有大量是實(shí)時(shí)嵌入式軟件。嵌入式控制器既需要快速地完成復(fù)雜控制算法的運(yùn)算,又需要很高的控制精度。DSPVC33由于具有高效的實(shí)時(shí)運(yùn)算速度和強(qiáng)大的數(shù)據(jù)運(yùn)算處理能力,越來(lái)越廣泛地應(yīng)用于航空航天領(lǐng)域。伴隨著基于DSPVC33航天軟件可靠性要求越來(lái)越高,基于DSPVC33航天軟件的測(cè)試技術(shù)要求也越來(lái)越高。實(shí)時(shí)嵌入式軟件給軟件測(cè)試造成了很大的困難,使得軟件測(cè)試技術(shù)和方法的運(yùn)用非常艱難,有時(shí)甚至是不可行的,因此選擇一種合適的測(cè)試技術(shù)和方法顯得尤為重要。

隨著國(guó)外芯片及傳感器的智能化、網(wǎng)絡(luò)化及微型化發(fā)展,使得采用虛擬儀器構(gòu)建測(cè)試系統(tǒng)測(cè)試軟件應(yīng)運(yùn)而生,目前我國(guó)的測(cè)試技術(shù)正逐步向智能化、網(wǎng)絡(luò)化方向發(fā)展。

在軟件測(cè)試中,為了使得整個(gè)軟件得到多次多層的測(cè)試[2],發(fā)現(xiàn)存在于單元間接口的諸多問(wèn)題,驗(yàn)證單元接口的一致性、正確性而采用集成測(cè)試技術(shù),集成測(cè)試采取系統(tǒng)性的技術(shù),這是一個(gè)漸進(jìn)的過(guò)程,從一個(gè)單元開始,逐步把單元集成為部件,把部件和部件集成為軟件配置項(xiàng)。在這個(gè)過(guò)程中,對(duì)接口的測(cè)試和對(duì)部件的測(cè)試交叉進(jìn)行,從而使得整個(gè)軟件得到多層次的測(cè)試。根據(jù)航天型號(hào)軟件可靠性、安全性要求高,又有極特殊的運(yùn)行環(huán)境,通過(guò)結(jié)合具體航天型號(hào)軟件研制實(shí)踐,形成基于DSPVC33航天型號(hào)軟件適用的集成測(cè)試技術(shù)和方法。

1 集成測(cè)試方法

集成測(cè)試方法是進(jìn)行單元模塊組裝的方法和步驟[3]。集成測(cè)試方法包含漸增式和非漸增式兩大類,漸增式測(cè)試又可分為自頂向下、自底向上和三明治集成3種方法。

1.1 非漸增式

把幾十甚至上百個(gè)單元聯(lián)接在一起,先分散測(cè)試,再集中起來(lái)一次完成組合和測(cè)試,對(duì)各個(gè)模塊測(cè)試結(jié)束為止,對(duì)整個(gè)程序進(jìn)行組合時(shí)才能發(fā)現(xiàn)錯(cuò)誤,需要構(gòu)造驅(qū)動(dòng)模塊和樁模塊。適用于在一個(gè)做得很好的、高內(nèi)聚的設(shè)計(jì)中,模塊間的相互作用很小,而且十分小心地詳盡地說(shuō)明了接口,那么接口錯(cuò)誤將可保持在最低限度。

以下面程序結(jié)構(gòu)圖說(shuō)明非漸增式集成方法過(guò)程:

圖1 程序結(jié)構(gòu)圖

非漸增式以下列方式進(jìn)行:首先對(duì)六個(gè)模塊中的每一個(gè)執(zhí)行單元測(cè)試,對(duì)單元的測(cè)試次序可以順序地進(jìn)行或平行地進(jìn)行。最后把單元組合或結(jié)合成一個(gè)程序。根據(jù)單元在結(jié)構(gòu)圖的地位,對(duì)模塊M2配備了驅(qū)動(dòng)模塊D1和樁模塊S1,對(duì)模塊M4配備了驅(qū)動(dòng)模塊D3和樁模塊S2,對(duì)模塊M3、M5、M6只配備了驅(qū)動(dòng)模塊D2、D4、D5,對(duì)主模塊M1,配備了樁模塊S3、S4、S5。分別進(jìn)行單元測(cè)試后,按結(jié)構(gòu)圖1形式聯(lián)接起來(lái),進(jìn)行集成測(cè)試。

圖2 非漸增式集成測(cè)試

1.2 漸增式

漸增式測(cè)試不是單獨(dú)地測(cè)試每個(gè)單元,而是首先把下一個(gè)要被測(cè)試的單元同已測(cè)試的單元集合組合起來(lái),然后再測(cè)試。典型的分為自頂向下、自底向上和三明治集成3種。

1.2.1 自頂向下集成

自頂向下集成測(cè)試從主程序開始。被主程序調(diào)用的下層單元都作為樁函數(shù)出現(xiàn),樁就是模擬被調(diào)用單元的一次性代碼[4]。把附屬主控模塊的子模塊孫模塊單元等集成起來(lái)的方式有深度優(yōu)先和廣度優(yōu)先兩種。

圖3 深度優(yōu)先自頂向下測(cè)試

深度優(yōu)先方法是先把結(jié)構(gòu)中的一條主要的控制路徑上的全部模塊完全集成起來(lái)。主要路徑的選擇與特定的軟件應(yīng)用特性有關(guān),可以盡量選取程序主要功能所涉及的路徑。如圖3所示,選擇左側(cè)路徑,先集成M1、M2及M5,下一步集成M8,如果M2的某個(gè)功能需要也可以先集成M6,然后在聯(lián)結(jié)中間和右面的路徑。

廣度優(yōu)先方法從結(jié)構(gòu)的頂層開始逐層向下集成。把上一層模塊直接調(diào)用的模塊集成進(jìn)去,然后對(duì)每一個(gè)新集成進(jìn)去的模塊再把其直接調(diào)用的模塊集成進(jìn)去。如圖3所示,從M1出發(fā),先集成M2、M3及樁模塊S4,接著是M5、M6這一層,以此類推。

自頂向下的集成過(guò)程為以下五個(gè)步驟:

1)用主控制模塊做測(cè)試驅(qū)動(dòng)模塊,用樁模塊代替所有直接被主控模塊調(diào)用的模塊。

2)根據(jù)所選擇的集成方法(深度優(yōu)先或廣度優(yōu)先)以及新模塊的選擇原則,每次用一個(gè)實(shí)際單元替代一個(gè)被調(diào)用的樁模塊,并開發(fā)該單元可能需要的樁模塊。

3)每組裝一個(gè)新模塊,測(cè)試一個(gè)。

4)完成一組測(cè)試后,用實(shí)際模塊替換另一個(gè)樁模塊;并為該實(shí)際模塊開發(fā)必要的樁模塊。

5)為了避免引入新的錯(cuò)誤,再次復(fù)用以前使用過(guò)的測(cè)試用例進(jìn)行測(cè)試,即重復(fù)以前執(zhí)行過(guò)的部分或全部測(cè)試。

1.2.2 自底向上集成

自底向上集成測(cè)試是按照自頂向下順序的鏡像,不同的是,樁模塊由模擬功能分解樹上一層單元的驅(qū)動(dòng)模塊代替。在自底向上集成測(cè)試過(guò)程中,首先從分解樹的葉開始,并用編寫的驅(qū)動(dòng)測(cè)試[5]。驅(qū)動(dòng)模塊單元中的一次性代碼比樁模塊單元中的少。大多數(shù)系統(tǒng)在接近葉時(shí)都有較高的扇出數(shù),因此在自底向上集成測(cè)試過(guò)程中,不需要同樣數(shù)量的驅(qū)動(dòng)模塊單元,不過(guò)代價(jià)是驅(qū)動(dòng)模塊單元比較復(fù)雜。

過(guò)程如圖4所示,D1、D2、D3、D4是模塊集合1、2、3、4的驅(qū)動(dòng)模塊,集合1、2、3上屬于M2,去掉D1、D2、D3將這3個(gè)集合直接與M2接口;同樣地,在集合4與M3接口前去掉D4,M2與M3最后與M1接口。

圖4 自底向上測(cè)試示意圖

自底向上集成過(guò)程可用以下步驟實(shí)現(xiàn):

1)把底層模塊組裝成實(shí)現(xiàn)特定軟件子功能的集合。

2)為每個(gè)集合設(shè)計(jì)一個(gè)驅(qū)動(dòng)模塊單元,作為測(cè)試控制程序,明確測(cè)試用例的輸入和輸出。

3)對(duì)模塊集合進(jìn)行測(cè)試。

4)按結(jié)構(gòu)自底向上的順序,用真實(shí)模塊替換驅(qū)動(dòng)模塊,將模塊集合組裝起來(lái)形成新的模塊,再進(jìn)行測(cè)試,直到全部完成。

1.2.3 三明治集成

三明治集成測(cè)試是自頂向下和自底向上兩種集成測(cè)試的組合。如果通過(guò)分解樹考慮三明治集成測(cè)試,則只需要在子樹上進(jìn)行大爆炸集成[6]。樁模塊單元和驅(qū)動(dòng)器模塊單元的開發(fā)工作都比較小,不過(guò)作為大爆炸集成的后果,在一定程度上增加了定位缺陷的困難。對(duì)于有多個(gè)關(guān)鍵模塊,從兩頭開始向中間進(jìn)行,關(guān)鍵模塊單元選用自底向上集成測(cè)試方法,需要考慮編寫測(cè)試驅(qū)動(dòng)模塊和測(cè)試樁模塊的工作量[7]。

除了大爆炸集成測(cè)試,基于分解的方法在直覺上很清楚,使用通過(guò)測(cè)試的組件構(gòu)建。發(fā)現(xiàn)失效后,就可以懷疑最新加入的單元模塊。集成測(cè)試方法很容易根據(jù)分解樹追蹤[8]。整個(gè)機(jī)制是根據(jù)結(jié)構(gòu)集成單元模塊,假設(shè)正確行為來(lái)自個(gè)體正確的單元模塊和正確的接口。給定分解樹所需集成測(cè)試會(huì)話數(shù)的計(jì)算公式如下:

會(huì)話=節(jié)點(diǎn)-頁(yè)+邊

(1)

對(duì)于自頂向下集成方法,需要開發(fā)(節(jié)點(diǎn)-1個(gè))樁模塊;對(duì)于自底向上集成方法,需要開發(fā)(節(jié)點(diǎn)-葉子)驅(qū)動(dòng)器模塊[9]。

1.3 選取集成測(cè)試策略

單個(gè)模塊分別都可以單獨(dú)運(yùn)行,可是這些模塊集成在一起就不能正常工作,主要原因是因?yàn)檫@些模塊在相互集成時(shí)接口間會(huì)引入新的問(wèn)題。部分?jǐn)?shù)據(jù)經(jīng)過(guò)接口很可能丟棄;這個(gè)模塊單元對(duì)那個(gè)模塊單元可能造成不正常影響;幾個(gè)子功能相互組合起來(lái)不能完成主要的功能;誤差經(jīng)過(guò)不斷積累達(dá)到難以接受的程度;全局?jǐn)?shù)據(jù)類型定義出現(xiàn)了數(shù)據(jù)覆蓋之類的錯(cuò)誤等。集成測(cè)試的目的是盡可能暴露單元測(cè)試時(shí)難以暴露的結(jié)構(gòu)性錯(cuò)誤。問(wèn)題定位究竟是這個(gè)模塊是否破壞了哪個(gè)模塊的功能,或者是部分?jǐn)?shù)據(jù)通過(guò)接口時(shí)是否丟失,或者是子功能組合起來(lái)難以實(shí)現(xiàn)主要功能,或者是誤差是否進(jìn)行反復(fù)多次積累等。集成測(cè)試按設(shè)計(jì)要求把通過(guò)的各個(gè)單元測(cè)試的模塊集成在一起進(jìn)行測(cè)試,以便發(fā)現(xiàn)與內(nèi)部接口相關(guān)聯(lián)的各種錯(cuò)誤。

進(jìn)行集成測(cè)試需要確定關(guān)鍵單元模塊,對(duì)這些關(guān)鍵單元模塊進(jìn)行集成測(cè)試。關(guān)鍵單元模塊應(yīng)具有以下特征之一:1)滿足軟件功能需求;2)有清晰明確定義的指標(biāo)要求;3)具備控制決策功能;4)較復(fù)雜、較容易產(chǎn)生錯(cuò)誤的模塊;

集成測(cè)試時(shí)需要考慮如下要素:1)使用哪一種集成測(cè)試方法來(lái)進(jìn)行;2)是否需要特別的軟硬件設(shè)備和環(huán)境在測(cè)試過(guò)程中;3)各個(gè)單元模塊集成測(cè)試的順序;4)集成測(cè)試的順序是否與模塊代碼的設(shè)計(jì)編寫進(jìn)度一致;

進(jìn)行集成測(cè)試需要使用集成測(cè)試用例,進(jìn)行一次集成測(cè)試,就需要生成一系列集成測(cè)試用例。測(cè)試的重點(diǎn)是設(shè)計(jì)有效的測(cè)試用例。由于完全測(cè)試具有不確定性,因此發(fā)現(xiàn)盡可能多的錯(cuò)誤使用有限的測(cè)試用例就顯得非常重要。設(shè)計(jì)和執(zhí)行測(cè)試用例需要遵守下面幾個(gè)重要原則:

1)設(shè)計(jì)測(cè)試用例要明確輸入數(shù)據(jù)應(yīng)同時(shí)明確程序的預(yù)期輸出;2)設(shè)計(jì)測(cè)試用例應(yīng)該系統(tǒng)地科學(xué)地進(jìn)行,不能隨便設(shè)計(jì);3)測(cè)試用例輸入需要包含不合理的數(shù)據(jù)和合理的數(shù)據(jù);4)不僅要檢查程序是否做了不應(yīng)該做的事情,而且還要檢查程序是否做了該做的事情;5)記錄合理的測(cè)試用例,為了以后復(fù)用;

非增量式集成測(cè)試的弊端是對(duì)每個(gè)錯(cuò)誤的定位和糾正特別困難。一次集成可能發(fā)現(xiàn)一大堆錯(cuò)誤,有可能在改正一個(gè)錯(cuò)誤的同時(shí)引入另一個(gè)錯(cuò)誤,新舊錯(cuò)誤混雜,容易出現(xiàn)混亂。定位出錯(cuò)的原因和位置更加困難。

自頂向下集成的弊端是需要建立樁模塊。使樁模塊模擬實(shí)際子單元模塊的功能有些困難,因?yàn)闃赌K在接收了所測(cè)模塊發(fā)送的指令后需要按照它所代替的實(shí)際子模塊返回相應(yīng)的值,這加強(qiáng)建立樁模塊的難度,導(dǎo)致增添額外的樁模塊測(cè)試。并且輸入/輸出單元模塊和較復(fù)雜算法大都在底層,這是很容易有問(wèn)題的模塊單元,一旦有這些問(wèn)題,將導(dǎo)致無(wú)數(shù)次回歸測(cè)試。而自頂向下集成測(cè)試方法的好處是能比較早地對(duì)發(fā)現(xiàn)問(wèn)題。選用采用深度優(yōu)先自頂向下集成或是廣度優(yōu)先自頂向下集成,是根據(jù)軟件部件的特點(diǎn)進(jìn)行決定。深度優(yōu)先自頂向下集成是把主控制路徑上的模塊單元集成在一起,選擇哪一條路徑作為主控制路徑一般根據(jù)問(wèn)題的特性確定。廣度優(yōu)先自頂向下集成方法是沿控制層次結(jié)構(gòu)水平地向下移動(dòng)。

自底向上集成方法的弊端是直到最后一個(gè)模塊加上去后程序才形成一個(gè)實(shí)體。作為一個(gè)實(shí)體存在程序一直不能,在自底向上集成和測(cè)試的過(guò)程中,最后才能接觸到對(duì)主要部分的控制。這種方式的好處是不需要建立樁模塊,需要建立驅(qū)動(dòng)模塊單元,相對(duì)來(lái)說(shuō)建立驅(qū)動(dòng)模塊單元一般比建立樁模塊單元容易,由于涉及到輸入/輸出的模塊單元和較復(fù)雜算法是最先進(jìn)行集成,這樣能盡早地測(cè)試容易出問(wèn)題的部分。此外自底向上集成測(cè)試可以提高測(cè)試效率,同時(shí)進(jìn)行多個(gè)單元模塊集成測(cè)試。

由于航天型號(hào)軟件大多有相當(dāng)部分復(fù)雜的科學(xué)計(jì)算或數(shù)據(jù)處理,領(lǐng)域應(yīng)用背景強(qiáng),不易編寫樁模塊,故而盡量不采用需編寫樁模塊的辦法。因此不采用非漸增式方法集成。航天型號(hào)軟件算法復(fù)雜,可靠性、安全性要求高,其中故障處理路徑、降級(jí)處理路徑、錯(cuò)誤處理路徑、最長(zhǎng)執(zhí)行時(shí)間路徑等都是重要的功能、性能關(guān)鍵路徑,這些重要特殊的路徑需要高強(qiáng)度仔細(xì)的測(cè)試,因此控制輸入數(shù)據(jù),測(cè)試特殊路徑的能力很重要。所以不采用漸增式方法的三明治集成測(cè)試方法和自底向上集成測(cè)試方法。深度優(yōu)先和廣度優(yōu)先自頂向下集成方法的主要區(qū)別在于組裝次序,根據(jù)航天軟件關(guān)鍵模塊功能高內(nèi)聚的特點(diǎn),采用深度優(yōu)先自頂向下集成方法,不采用廣度優(yōu)先自頂向下集成方法。

2 實(shí)例驗(yàn)證

根據(jù)航天型號(hào)極特殊的運(yùn)行環(huán)境和特點(diǎn),基于VC33航天型號(hào)軟件選擇采用深度優(yōu)先自頂向下集成測(cè)試方法。以通訊控制軟件初始化功能為例,應(yīng)用該方法如下。

1)根據(jù)該軟件設(shè)計(jì),通訊控制軟件劃初始化功能主要由4個(gè)部件process、inithard、selftest、initvar組成,其中inithard部件由start_timer、delay_us、init_Gpio、initXint、setTimer、aceInitBRT、initTimer、InitTable、initFlash、memCopy、aceSetmode、acewait、acesetTllcmd、acegetRTaddr、aceCtrl_WD、acesoftReset、initBRT、aceGetSubadd共18個(gè)函數(shù)組成。初始化模塊劃分圖如下:

圖5 軟件模塊劃分圖

2)使用測(cè)試工具Testbed進(jìn)行分解集成部件,SCU-CSC-init部件采用深度優(yōu)先“自頂向下”的集成測(cè)試方法,由于SCU-CSC-init部件調(diào)用關(guān)系比較復(fù)雜,采用按分支添加函數(shù)進(jìn)行集成測(cè)試,當(dāng)被調(diào)用函數(shù)有多個(gè)上層調(diào)用函數(shù)時(shí),分別考慮單元接口調(diào)用情況,從而達(dá)到遍歷的目的,對(duì)尚未添加函數(shù)人為進(jìn)行插樁處理,從而明確函數(shù)調(diào)用關(guān)系,同時(shí)根據(jù)函數(shù)的正常情況和異常情況并考慮邊界情況進(jìn)行綜合設(shè)計(jì)用例。通訊控制軟件初始化模塊路徑流程圖如圖6所示。

圖6 路徑流程圖

3)在函數(shù)InitHard調(diào)用函數(shù)MemCopy時(shí),選擇基于路徑測(cè)試方法查看語(yǔ)句覆蓋率的覆蓋情況,語(yǔ)句覆蓋率S未達(dá)到100%,如果出現(xiàn)未覆蓋的函數(shù)MemCopy(struct IMU_Static_Model *ps_IMU_Static_M_i,struct Sum_Model _IMU_Diagnose *ps_sum_M),分析沒有完全覆蓋的原因是因?yàn)椴糠种赶蚣拇嫫鞯刂返闹羔樖褂靡穑淮嬖谲浖毕荨Mㄓ嵖刂栖浖跏蓟K過(guò)程基于路徑語(yǔ)句覆蓋率如圖7所示。

圖7 基于路徑語(yǔ)句覆蓋率

3 結(jié)束語(yǔ)

根據(jù)航天型號(hào)極特殊的運(yùn)行環(huán)境和特點(diǎn),基于VC33航天型號(hào)軟件選擇采用深度優(yōu)先自頂向下集成測(cè)試方法。以指導(dǎo)工程測(cè)試人員針對(duì)高可靠性航天軟件進(jìn)行測(cè)試方法的選擇。由實(shí)驗(yàn)結(jié)果可知,航天軟件集成測(cè)試采用深度優(yōu)先自頂向下集成測(cè)試方法,可以準(zhǔn)確地反映出被測(cè)軟件存在于單元間接口的諸多問(wèn)題,使得整個(gè)軟件得到多層次的測(cè)試,反映出軟件可靠和缺陷的關(guān)系。通過(guò)實(shí)踐驗(yàn)證該方法的可行性與有效性。同時(shí),從新一代運(yùn)載火箭飛行控制軟件實(shí)驗(yàn)的分析結(jié)果也可以看出,利用本文方法選取的新一代運(yùn)載火箭飛行控制軟件測(cè)試方法進(jìn)行集成測(cè)試,能夠得到比較滿意的系統(tǒng)高可靠性和質(zhì)量保證。

主站蜘蛛池模板: 日韩 欧美 国产 精品 综合| 亚洲天堂久久| 国产情侣一区| 亚洲看片网| 一级做a爰片久久毛片毛片| 美女无遮挡免费网站| 欧美日韩中文国产| 国产麻豆aⅴ精品无码| 华人在线亚洲欧美精品| 夜夜拍夜夜爽| 国产高清在线观看91精品| 日本欧美视频在线观看| 黄色网页在线观看| 国产成人免费手机在线观看视频| 亚洲日韩精品欧美中文字幕| 91免费在线看| 国产黄色片在线看| 无码高潮喷水专区久久| 亚洲一区色| 亚洲狠狠婷婷综合久久久久| 少妇精品在线| 国产精品久久久久鬼色| 亚洲男人的天堂久久精品| 呦视频在线一区二区三区| 国产产在线精品亚洲aavv| 高清不卡一区二区三区香蕉| 日本三级精品| 欧美精品1区2区| 精品色综合| 香蕉国产精品视频| 国产永久无码观看在线| 99精品高清在线播放 | 欧美精品伊人久久| 五月婷婷综合网| 亚洲日韩精品伊甸| 狂欢视频在线观看不卡| 亚洲欧美另类中文字幕| 草逼视频国产| 亚洲精品动漫| 国产丝袜91| 欧美精品亚洲精品日韩专区| 91日本在线观看亚洲精品| 国产欧美日韩va| 欧美中文字幕一区| 在线一级毛片| 欧美不卡视频在线| 无码粉嫩虎白一线天在线观看| 狠狠色综合久久狠狠色综合| 网友自拍视频精品区| 亚洲人成网站色7777| 蜜芽国产尤物av尤物在线看| 毛片久久久| 美女无遮挡免费网站| 92午夜福利影院一区二区三区| 色偷偷av男人的天堂不卡| 免费xxxxx在线观看网站| 青青青国产视频| 成人精品免费视频| 91激情视频| 久久久久国产一区二区| 色噜噜综合网| 欧美精品在线免费| 久久久久无码国产精品不卡| 欧美在线网| 亚洲天堂免费观看| 色综合五月婷婷| 日本午夜视频在线观看| 日韩毛片免费视频| 69免费在线视频| 國產尤物AV尤物在線觀看| 午夜小视频在线| 久久亚洲精少妇毛片午夜无码| 美女一级免费毛片| 国产精品美女自慰喷水| 日本www色视频| 国产香蕉在线视频| 呦视频在线一区二区三区| 国产成人h在线观看网站站| 国产美女91呻吟求| 久久综合丝袜日本网| 最近最新中文字幕在线第一页| 国产9191精品免费观看|