登錄

軟件可靠性

百科 > 質(zhì)量術(shù)語 > 軟件可靠性

1.什么是軟件可靠性

軟件可靠性是指在給定時(shí)間內(nèi),特定環(huán)境下軟件無錯(cuò)運(yùn)行的概率。

2.軟件可靠性的內(nèi)容

軟件可靠性包含了以下三個(gè)要素:

1.規(guī)定的時(shí)間

軟件可靠性只是體現(xiàn)在其運(yùn)行階段,所以將“運(yùn)行時(shí)間”作為“規(guī)定的時(shí)間”的度量。 “運(yùn)行時(shí)間”包括軟件系統(tǒng)運(yùn)行后工作與掛起(開啟但空閑)的累計(jì)時(shí)間。由于軟件運(yùn)行的環(huán)境與程序路徑選取的隨機(jī)性,軟件的失效為隨機(jī)事件,所以運(yùn)行時(shí)間屬于隨機(jī)變量。

2.規(guī)定的環(huán)境條件

環(huán)境條件指軟件的運(yùn)行環(huán)境。它涉及軟件系統(tǒng)運(yùn)行時(shí)所需的各種支持要素,如支持硬件、操作系統(tǒng)、其它支持軟件、輸入數(shù)據(jù)格式和范圍以及操作規(guī)程等。不同的環(huán)境條件下軟件的可靠性是不同的。具體地說,規(guī)定的環(huán)境條件主要是描述軟件系統(tǒng)運(yùn)行時(shí)計(jì)算機(jī)的配置情況以及對(duì)輸入數(shù)據(jù)的要求,并假定其它一切因素都是理想的。有了明確規(guī)定的環(huán)境條件,還可以有效判斷軟件失效的責(zé)任在用戶方還是研制方。

3.規(guī)定的功能

軟件可靠性還與規(guī)定的任務(wù)和功能有關(guān)。由于要完成的任務(wù)不同,軟件的運(yùn)行剖面會(huì)有所區(qū)別,則調(diào)用的子模塊就不同(即程序路徑選擇不同),其可靠性也就可能不同。所以要準(zhǔn)確度量軟件系統(tǒng)的可靠性必須首先明確它的任務(wù)和功能。

3.軟件可靠性的測(cè)試[1]

軟件可靠性測(cè)試的目的

軟件可靠性測(cè)試的主要目的有:

(1)通過在有使用代表性的環(huán)境中執(zhí)行軟件,以證實(shí)軟件需求是否正確實(shí)現(xiàn)。

(2) 為進(jìn)行軟件可靠性估計(jì)采集準(zhǔn)確的數(shù)據(jù)。估計(jì)軟件可靠性一般可分為四個(gè)步驟,即數(shù)據(jù)采集、模型選擇、模型擬合以及軟件可靠性評(píng)估。可以認(rèn)為,數(shù)據(jù)采集是整個(gè)軟件可靠性估計(jì)工作的基礎(chǔ),數(shù)據(jù)的準(zhǔn)確與否關(guān)系到軟件可靠性評(píng)估的準(zhǔn)確度。

(3)通過軟件可靠性測(cè)試找出所有對(duì)軟件可靠性影響較大的錯(cuò)誤。

軟件可靠性測(cè)試的特點(diǎn)

軟件可靠性測(cè)試不同于硬件可靠性測(cè)試,這主要是因?yàn)槎呤У脑虿煌?。硬件失效一般是由于元器件的老化引起?因此硬件可靠性測(cè)試強(qiáng)調(diào)隨機(jī)選取多個(gè)相同的產(chǎn)品,統(tǒng)計(jì)它們的正常運(yùn)行時(shí)間。正常運(yùn)行的平均時(shí)間越長, 則硬件就越可靠。軟件失效是由設(shè)計(jì)缺陷造成的,軟件的輸入決定是否會(huì)遇到軟件內(nèi)部存在的故障。因此,使用同樣一組輸入反復(fù)測(cè)試軟件并記錄其失效數(shù)據(jù)是沒有意義的。在軟件沒有改動(dòng)的情況下,這種數(shù)據(jù)只是首次記錄的不斷重復(fù),不能用來估計(jì)軟件可靠性。軟件可靠性測(cè)試強(qiáng)調(diào)按實(shí)際使用的概率分布隨機(jī)選擇輸入,并強(qiáng)調(diào)測(cè)試需求的覆蓋面。軟件可靠性測(cè)試也不同于一般的軟件功能測(cè)試。相比之下,軟件可靠性測(cè)試更強(qiáng)調(diào)測(cè)試輸入與典型使用環(huán)境輸入統(tǒng)計(jì)特性的一致,強(qiáng)調(diào)對(duì)功能、輸入、數(shù)據(jù)域及其相關(guān)概率的先期識(shí)別。測(cè)試實(shí)例的采樣策略也不同,軟件可靠性測(cè)試必須按照使用的概率分布隨機(jī)地選擇測(cè)試實(shí)例,這樣才能得到比較準(zhǔn)確的可靠性估計(jì),也有利于找出對(duì)軟件可靠性影響較大的故障。

此外,軟件可靠性測(cè)試過程中還要求比較準(zhǔn)確地記錄軟件的運(yùn)行時(shí)間,它的輸入覆蓋一般也要大于普通軟件功能測(cè)試的要求。

對(duì)一些特殊的軟件,如容錯(cuò)軟件、實(shí)時(shí)嵌入式軟件等,進(jìn)行軟件可靠性測(cè)試時(shí)需要有多種測(cè)試環(huán)境。這是因?yàn)樵谑褂铆h(huán)境下常常很難在軟件中植入錯(cuò)誤,以進(jìn)行針對(duì)性的測(cè)試。

軟件可靠性測(cè)試的效果

軟件可靠性測(cè)試是軟件可靠性保證過程中非常關(guān)鍵的一步。經(jīng)過軟件可靠性測(cè)試的軟件并不能保證該軟件中殘存的錯(cuò)誤數(shù)最小,但可以保證該軟件的可靠性達(dá)到較高的要求。從工程的角度來看,一個(gè)軟件的可靠性高不僅意味著該軟件的失效率低,而且意味著一旦該軟件失效,由此所造成的危害也小。一個(gè)大型的工程軟件沒有錯(cuò)誤是不可能的,至少理論上還不能證

明一個(gè)大型的工程軟件能沒有錯(cuò)誤。因此,保證軟件可靠性的關(guān)鍵不是確保軟件沒有錯(cuò)誤,而是要確保軟件的關(guān)鍵部分沒有錯(cuò)誤。更確切地說,是要確保軟件中沒有對(duì)可靠性影響較大的錯(cuò)誤。這正是軟件可靠性測(cè)試的目的之一。軟件可靠性測(cè)試的側(cè)重點(diǎn)不同于一般的軟件功能測(cè)試,其測(cè)試實(shí)例設(shè)計(jì)的出發(fā)點(diǎn)是尋找對(duì)可靠性影響較大的故障。因此,要達(dá)到同樣的可靠性要求,可靠性測(cè)試比一般的功能測(cè)試更

有效,所花的時(shí)間也更少。另外, 軟件可靠性測(cè)試的環(huán)境是具有使用代表性的環(huán)境,這樣,所獲得的測(cè)試數(shù)據(jù)與軟件的實(shí)際運(yùn)行數(shù)據(jù)比較接近,可用于軟件可靠性估計(jì)。

總之, 軟件可靠性測(cè)試比一般的功能測(cè)試更加經(jīng)濟(jì)和有效,它可以代替一般的功能測(cè)試,而一般的軟件功能測(cè)試卻不能代替軟件可靠性測(cè)試,而且一般功能測(cè)試所得到的測(cè)試數(shù)據(jù)也不宜用于軟件可靠性估計(jì)。

軟件可靠性測(cè)試中需注意的問題

軟件可靠性測(cè)試一般可分為四個(gè)階段:制定測(cè)試方案,制定測(cè)試計(jì)劃,進(jìn)行測(cè)試并記錄測(cè)試結(jié)果,編寫測(cè)試報(bào)告。

制定測(cè)試方案時(shí)需要特別注意被測(cè)功能的識(shí)別和失效等級(jí)的定義。制定測(cè)試計(jì)劃時(shí)需設(shè)計(jì)測(cè)試實(shí)例,決定測(cè)試時(shí)要確定輸入順序,并確定程序輸出的預(yù)期結(jié)果,這時(shí)也需注意測(cè)試覆蓋問題。

1. 功能識(shí)別

軟件可靠性測(cè)試的第一步就是進(jìn)行功能識(shí)別,確定使用剖面。功能識(shí)別的目標(biāo)是:識(shí)別所有被測(cè)功能以及執(zhí)行這些功能所需的相關(guān)輸入,識(shí)別每一個(gè)使用需求及其相關(guān)輸入的概率分布。為達(dá)到第一個(gè)目標(biāo),需要分析軟件功能的所有集合,這些功能之間全部的約束條件,功能之間的獨(dú)立性、相互關(guān)系和相互影響,還需分析系統(tǒng)的不同運(yùn)行模式、失效發(fā)生時(shí)系統(tǒng)重構(gòu)策略等對(duì)軟件運(yùn)行方式有較大影響的因素。第一個(gè)目標(biāo)也是一般軟件功能測(cè)試需要達(dá)到的目標(biāo),但第二個(gè)目標(biāo)則是軟件可靠性測(cè)試特別強(qiáng)調(diào)的。為了得到能夠反映軟件使用的有代表性的概率分布,測(cè)試人員必須和系統(tǒng)工程師、系統(tǒng)運(yùn)行分析員和顧客共同合作。需要指出的是,由于可靠性的要求,輸入數(shù)據(jù)的概率分布應(yīng)包括合法數(shù)據(jù)的概率分布和非法數(shù)據(jù)的概率分布兩部分。有時(shí)為了更好地反映實(shí)際使用狀況,還需給出那些影響程序運(yùn)行方式的條件,如硬件配置.負(fù)荷等的概率分布。

2. 定義換效等級(jí)

定義失效等級(jí)主要是為了解決下面兩個(gè)問題:

·對(duì)發(fā)生概率小但失效后危害嚴(yán)重的功能需求的識(shí)別。

·對(duì)可不查找失效原因、并不做統(tǒng)計(jì)的功能需求的識(shí)別。

在制定測(cè)試計(jì)劃時(shí),失效及其等級(jí)的定義應(yīng)由測(cè)試人員、設(shè)計(jì)人員和用戶共同商定,達(dá)成協(xié)議。

3. 可靠性測(cè)試覆蓋

可靠性測(cè)試必須保證輸入覆蓋和環(huán)境覆蓋,這是準(zhǔn)確估計(jì)軟件可靠性的基礎(chǔ)。

輸入覆蓋包括下面幾個(gè)內(nèi)容:

·輸入域覆蓋,即所有被測(cè)輸入值域的發(fā)生概率之和必須大于軟件可靠度的要求。

·重要輸入變量值的覆蓋。

·相關(guān)輸入變量可能組合的覆蓋,以確保相關(guān)輸入變量的相互影響不會(huì)導(dǎo)致軟件失效。

·設(shè)計(jì)輸入空間與實(shí)際輸入空間之間區(qū)域的覆蓋,即不合法輸入域的覆蓋。

·各種使用功能的覆蓋。

環(huán)境覆蓋是指測(cè)試時(shí)必須覆蓋所有可能影響程序運(yùn)行方式的條件。

軟件可靠性測(cè)試的步驟

軟件可靠性測(cè)試分為四個(gè)階段:

1.制訂測(cè)試方案

本階段的目標(biāo)是識(shí)別軟件功能需求,觸發(fā)該功能的輸入和對(duì)應(yīng)的數(shù)據(jù)域,確定相關(guān)的概率分布及需強(qiáng)化測(cè)試的功能。

以下是我們推薦的步驟。在一些特定的應(yīng)用中,有的步驟并不是必須的。

(1)分析功能需求 分析各種功能需求, 識(shí)別觸發(fā)該功能的輸入及相關(guān)的數(shù)據(jù)域(包括合法

與不合法的兩部分)。分析時(shí)要注意下述問題:

·該軟件是否存在不同的運(yùn)行模式?如果存在,那么應(yīng)列出所有的系統(tǒng)運(yùn)行模式。

·是否存在影響程序運(yùn)行方式的外部條件?如果存在,那么有多少?它們的影響程度如何

·各種功能需求之間是相互獨(dú)立的還是相關(guān)的?如果相關(guān),是密切相關(guān)還是部分相關(guān)?如果兩種功能密切相關(guān),那么可將兩種功能合并為一種功能。如果功能之間為部分相關(guān),則需列出相應(yīng)輸入變量的合法組合。

(2)定義失效等級(jí)

判斷是否存在出現(xiàn)危害度較大的1級(jí)和2級(jí)失效的可能性。如果這種可能性存在,則應(yīng)進(jìn)行故障樹分析,標(biāo)識(shí)出所有可能造成嚴(yán)重失效的功能需求和其相關(guān)的輸入領(lǐng)域。


(3)確定概率分布

·確定各種不同運(yùn)行方式的發(fā)生概率,判斷是否需要對(duì)不同的運(yùn)行方式進(jìn)行分別測(cè)試。如果需要,則應(yīng)給出各種運(yùn)行方式下各數(shù)據(jù)域的概率分布;否則,給出各數(shù)據(jù)域的概率分布。

·判斷是否需要強(qiáng)化測(cè)試某些功能。

(4)整理概率分布的信息 將這些信息編碼送入數(shù)據(jù)庫。

2.制訂測(cè)試計(jì)劃

本階段的目標(biāo)是:

(1)根據(jù)前一階段整理的概率分布信息生成相對(duì)應(yīng)的測(cè)試實(shí)例集,并計(jì)算出每一測(cè)試實(shí)例預(yù)期的軟件輸出結(jié)果。

本階段需要注意:在按概率分布隨機(jī)選擇生成測(cè)試實(shí)例的同時(shí),要保證測(cè)試的覆蓋面。

(2)編寫測(cè)試計(jì)劃,確定測(cè)試順序,分配測(cè)試資源。由于本階段前一部分的工作需要考慮大量的信息和數(shù)據(jù),因此需要一個(gè)軟件支持工具,建立數(shù)據(jù)庫,并產(chǎn)生測(cè)試實(shí)例。另外,有時(shí)預(yù)測(cè)軟件輸出結(jié)果也需要大量的計(jì)算,有些復(fù)雜的軟件甚至要用到仿真器模擬輸出結(jié)果??傊?具體實(shí)施與被測(cè)應(yīng)用軟件的實(shí)際功能類型有關(guān)。

3. 測(cè)試

本階段進(jìn)行軟件測(cè)試。需注意的是被測(cè)軟件的測(cè)試環(huán)境(包括硬件配置和軟件支撐環(huán)境

)應(yīng)和預(yù)期的實(shí)際使用環(huán)境盡可能一致,對(duì)某些環(huán)境要求比較嚴(yán)格的軟件(如嵌入式軟件)則應(yīng)完全一致。測(cè)試時(shí)按測(cè)試計(jì)劃和順序?qū)γ恳粋€(gè)測(cè)試實(shí)例進(jìn)行測(cè)試,判斷軟件輸出是否符合預(yù)期結(jié)果。測(cè)試時(shí)應(yīng)記錄測(cè)試結(jié)果、運(yùn)行時(shí)間和判斷結(jié)果。如果軟件失效,那么還應(yīng)記錄失效現(xiàn)象和時(shí)間,以備以后核對(duì)。

4.編寫測(cè)試報(bào)告

按軟件可靠性估計(jì)的要求整理測(cè)試記錄,并將結(jié)果寫成報(bào)告。

筆者認(rèn)為,軟件可靠性測(cè)試的關(guān)鍵在于:

·對(duì)需求、輸入、數(shù)據(jù)域的識(shí)別及相關(guān)概率分布的確定。

·按照概率分布隨機(jī)生成測(cè)試實(shí)例,并確定測(cè)試順序。

據(jù)國外有關(guān)文獻(xiàn)報(bào)導(dǎo),這種測(cè)試方法已成功應(yīng)用于大量應(yīng)用軟件的可靠性測(cè)試,包括一些商用軟件和航空、航天電子設(shè)備中嵌入式軟件的測(cè)試,其效果很好。因此,我們有必要投入一定的人力、物力,針對(duì)我們的實(shí)際需要,有目的地對(duì)各類應(yīng)用軟件進(jìn)行軟件可靠性測(cè)試,從實(shí)踐中逐步積累經(jīng)驗(yàn)。同時(shí)需要軟件開發(fā)方和使用方共同合作,進(jìn)行軟件可靠性測(cè)試方法的研究和有關(guān)支持工具的開發(fā),促進(jìn)我國軟件可靠性水平的提高。

4.軟件可靠性的評(píng)測(cè)技術(shù)

軟件可靠性評(píng)測(cè)是指運(yùn)用統(tǒng)計(jì)技術(shù)對(duì)軟件可靠性測(cè)試和系統(tǒng)運(yùn)行期間采集的軟件失效數(shù)據(jù)進(jìn)行處理并評(píng)估軟件可靠性的過程。軟件可靠性評(píng)測(cè)的主要目的是測(cè)量和驗(yàn)證軟件的可靠性,當(dāng)然實(shí)施軟件可靠性評(píng)測(cè)也是對(duì)軟件測(cè)試過程的一種完善,有助于軟件產(chǎn)品本身的可靠性增長。

軟件測(cè)試者可以使用很多方法進(jìn)行軟件測(cè)試,如按行為或結(jié)構(gòu)來劃分輸入域的劃分測(cè)試,純粹隨機(jī)選擇輸入的隨機(jī)測(cè)試,基于功能、路徑、數(shù)據(jù)流或控制流的覆蓋測(cè)試,等等。對(duì)于給定的軟件,每種測(cè)試方法都局限于暴露一定數(shù)量和一些類別的錯(cuò)誤。通過這些測(cè)試能夠查找、定位、改正和消除某些錯(cuò)誤,實(shí)現(xiàn)一定意義上的軟件可靠性增長。但是,由于它們都是面向錯(cuò)誤的測(cè)試,測(cè)試所得到的結(jié)果數(shù)據(jù)不宜用于軟件可靠性評(píng)估。

軟件可靠性測(cè)試是指在軟件的預(yù)期使用環(huán)境中,為進(jìn)行軟件可靠性評(píng)估而對(duì)軟件實(shí)施的一種測(cè)試。軟件可靠性測(cè)試應(yīng)該是面向故障的測(cè)試,以用戶將要使用的方式來測(cè)試軟件,每一次測(cè)試代表用戶將要完成的一組操作,使測(cè)試成為最終產(chǎn)品使用的預(yù)演。這就使得所獲得的測(cè)試數(shù)據(jù)與軟件的實(shí)際運(yùn)行數(shù)據(jù)比較接近,可用于軟件可靠性估計(jì)。

軟件可靠性評(píng)測(cè)由可靠性目標(biāo)的確定、運(yùn)行剖面的開發(fā)、測(cè)試的計(jì)劃與執(zhí)行和測(cè)試結(jié)果的分析與反饋等四個(gè)主要的活動(dòng)組成。

可靠性目標(biāo)是指客戶對(duì)軟件性能滿意程度的期望。通常用可靠度、故障強(qiáng)度、MTTF等指標(biāo)來描述,根據(jù)不同項(xiàng)目的不同需要而定。建立定量的可靠性指標(biāo)需要對(duì)可靠性、交付時(shí)間和成本進(jìn)行平衡。為了定義系統(tǒng)的可靠性指標(biāo),必須確定系統(tǒng)的運(yùn)行模式,定義故障的嚴(yán)重性等級(jí),確定故障強(qiáng)度目標(biāo)。

為了對(duì)軟件可靠性進(jìn)行良好的預(yù)計(jì),必須在軟件的運(yùn)行域上對(duì)其進(jìn)行測(cè)試,首先定義一個(gè)相應(yīng)的剖面來鏡像運(yùn)行域,然后使用這個(gè)剖面驅(qū)動(dòng)測(cè)試,這樣可以使測(cè)試真實(shí)的反映軟件的使用情況。由于可能的輸入幾乎是無限的,測(cè)試必須從中選擇出一些樣本,即測(cè)試用例,測(cè)試用例要能反映實(shí)際的使用情況,反映系統(tǒng)的運(yùn)行剖面。將統(tǒng)計(jì)方法應(yīng)用到運(yùn)行剖面開發(fā)和測(cè)試用例生成,在運(yùn)行剖面中的每個(gè)元素都被定量地賦予一個(gè)發(fā)生概率值和關(guān)鍵因子,然后根據(jù)這些因素分配測(cè)試資源、挑選和生成測(cè)試用例。在這種測(cè)試中, 優(yōu)先測(cè)試那些最重要或最頻繁使用的功能,釋放和緩解最高級(jí)別的風(fēng)險(xiǎn),有助于盡早發(fā)現(xiàn)那些對(duì)可靠性有最大影響的故障,以保證軟件的按期交付。一個(gè)產(chǎn)品有可能需要開發(fā)多個(gè)運(yùn)行剖面,這取決于它所包含的運(yùn)行模式和關(guān)鍵操作,通常需要為關(guān)鍵操作單獨(dú)定義運(yùn)行剖面。

在軟件的開發(fā)過程中使用軟件可靠性測(cè)試和利用軟件可靠性測(cè)試對(duì)最終產(chǎn)品進(jìn)行評(píng)價(jià),在測(cè)試計(jì)劃的制定上有所不同。用于設(shè)計(jì)過程的可靠性測(cè)試稱為可靠性增長測(cè)試,測(cè)試與故障的排除聯(lián)系在一起,一般安排在開發(fā)過程的系統(tǒng)測(cè)試階段執(zhí)行,將測(cè)試所確定的故障提交給開發(fā)者進(jìn)行修改,建立軟件的一個(gè)新的版本,再進(jìn)行下一次測(cè)試。在這種“測(cè)試—排錯(cuò)—新版本”的迭代過程中,跟蹤故障強(qiáng)度的變化,確認(rèn)測(cè)試是否可以終止及軟件是否可以發(fā)布??煽啃栽鲩L測(cè)試的測(cè)試腳本將執(zhí)行多次。針對(duì)最終產(chǎn)品的可靠性測(cè)試稱為可靠性驗(yàn)證測(cè)試,通過驗(yàn)證測(cè)試可確定軟件產(chǎn)品當(dāng)前的可靠性水平。就單個(gè)軟件版本而言,可靠性驗(yàn)證測(cè)試的測(cè)試腳本將僅執(zhí)行一次。軟件可靠性故障數(shù)據(jù)的收集是測(cè)試活動(dòng)的一部分,在測(cè)試周期內(nèi),紀(jì)錄每個(gè)故障的資料,如與時(shí)間相關(guān)的故障頻度、類型、嚴(yán)重性和故障的根源等,并且應(yīng)區(qū)分設(shè)計(jì)階段和最終產(chǎn)品的故障。

可靠性增長測(cè)試和可靠性驗(yàn)證測(cè)試將從不同的角度理解故障數(shù)據(jù)。在可靠性增長測(cè)試中,測(cè)試以迭代的方式進(jìn)行,根據(jù)測(cè)試期間跟蹤到的故障,使用基于軟件可靠性增長模型和統(tǒng)計(jì)推理的可靠性評(píng)估程序進(jìn)行故障強(qiáng)度的估計(jì),并用于跟蹤測(cè)試的進(jìn)展情況??煽啃则?yàn)證測(cè)試是軟件系統(tǒng)提交前進(jìn)行的最后測(cè)試。它是最終檢驗(yàn)而不是調(diào)試。在驗(yàn)證測(cè)試中,其目標(biāo)是確定一個(gè)軟件組件或系統(tǒng)在風(fēng)險(xiǎn)限度內(nèi)是被接受還是被拒絕。驗(yàn)證測(cè)試使用可靠性示圖,故障被繪制在圖上。根據(jù)它落入的區(qū)域,來決定被測(cè)軟件是被接受還是被拒絕,或者繼續(xù)進(jìn)行測(cè)試??梢愿鶕?jù)不同的客戶風(fēng)險(xiǎn)(接受一個(gè)不良程序的風(fēng)險(xiǎn))和供應(yīng)商風(fēng)險(xiǎn)(拒絕一個(gè)好程序的風(fēng)險(xiǎn))級(jí)別構(gòu)造圖表。

評(píng)論  |   0條評(píng)論