《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種多維度的軟件系統(tǒng)可靠性測(cè)試方法研究
一種多維度的軟件系統(tǒng)可靠性測(cè)試方法研究
2014年微型機(jī)與應(yīng)用第19期
覃文闖, 鄭麗娜, 胡一鳴, 馬文斌
國(guó)家應(yīng)用軟件產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)中心,北京 100193
摘要: 傳統(tǒng)的軟件可靠性測(cè)試更多偏重于軟件的功能方面。針對(duì)于這個(gè)不足之處,提出了結(jié)合操作剖面和性能測(cè)試的一種相對(duì)完善、全面的軟件可靠性測(cè)試方法。歸納總結(jié)軟件內(nèi)部可靠性設(shè)計(jì)、外部高可用技術(shù)以及容災(zāi)恢復(fù)規(guī)范等諸多影響軟件系統(tǒng)可靠性的因素,設(shè)計(jì)可靠性操作剖面要全面考慮這些因素。此方法是對(duì)傳統(tǒng)方法的有用補(bǔ)充。最后通過一個(gè)案例簡(jiǎn)要介紹了該方法。
Abstract:
Key words :

  摘 要: 傳統(tǒng)的軟件可靠性測(cè)試更多偏重于軟件的功能方面。針對(duì)于這個(gè)不足之處,提出了結(jié)合操作剖面和性能測(cè)試的一種相對(duì)完善、全面的軟件可靠性測(cè)試方法。歸納總結(jié)軟件內(nèi)部可靠性設(shè)計(jì)、外部高可用技術(shù)以及容災(zāi)恢復(fù)規(guī)范等諸多影響軟件系統(tǒng)可靠性的因素,設(shè)計(jì)可靠性操作剖面要全面考慮這些因素。此方法是對(duì)傳統(tǒng)方法的有用補(bǔ)充。最后通過一個(gè)案例簡(jiǎn)要介紹了該方法。

  關(guān)鍵詞: 可靠性測(cè)試;可靠性設(shè)計(jì);高可用技術(shù);容災(zāi)恢復(fù);性能測(cè)試

0 引言

  對(duì)于軟件可靠性不同的標(biāo)準(zhǔn)有著不同的定義,從國(guó)內(nèi)標(biāo)準(zhǔn)和國(guó)外標(biāo)準(zhǔn)兩個(gè)方面看:

  IEEE對(duì)軟件可靠性做出了如下的定義[1]:

  (1)規(guī)定的條件下,在規(guī)定的時(shí)間內(nèi),軟件不引起系統(tǒng)失效的概率;

  (2)在規(guī)定的時(shí)間周期內(nèi),在所述條件下軟件執(zhí)行所要求功能的能力。

  我國(guó)GB/T 16260.1-2006 《軟件工程產(chǎn)品質(zhì)量第1部分:質(zhì)量模型》對(duì)可靠性的定義[2]:在指定的使用條件下,軟件產(chǎn)品維持規(guī)定的性能級(jí)別的能力。該標(biāo)準(zhǔn)并解釋軟件不會(huì)損耗和老化。軟件可靠性取決于軟件產(chǎn)品的使用方式和所選擇的程序選項(xiàng),與時(shí)間無關(guān),可靠性的定義已經(jīng)被擴(kuò)展為“維持所規(guī)定的性能級(jí)別的能力”,而不是“完成所需功能”。

  上述兩種說法的側(cè)重點(diǎn)略有不同,IEEE強(qiáng)調(diào)的是概論和能力,偏重功能,而國(guó)標(biāo)強(qiáng)調(diào)的是能力,偏向于性能。雖然側(cè)重點(diǎn)不一樣,但是可以看出計(jì)算機(jī)軟件系統(tǒng)是指由系統(tǒng)軟件、支撐軟件、應(yīng)用軟件以及相關(guān)硬件組成的計(jì)算機(jī)軟件系統(tǒng)。作為一個(gè)綜合的整體系統(tǒng),其可靠性依賴因素不僅僅是其軟件本身,還涉及多方面的因素,包括人員、技術(shù)、管理等??煽啃缘脑u(píng)價(jià)不局限于功能性,應(yīng)該擴(kuò)展到性能方面。

  本文立足于分析影響軟件系統(tǒng)特定使用環(huán)境下的可靠性的脆弱點(diǎn),提出從軟件本身和外部使用環(huán)境所涉及的高可用技術(shù)和管理制度等多方面設(shè)計(jì)軟件可靠性測(cè)試操作剖面,并結(jié)合性能測(cè)試進(jìn)行可靠性的驗(yàn)證測(cè)試。

1 軟件可靠性測(cè)試操作用例設(shè)計(jì)的考慮因素

  1.1 軟件內(nèi)部可靠性影響因素

  通常軟件內(nèi)部可靠性問題是軟件本身所固有的,與外部因素?zé)o關(guān),只與軟件本身的使用選項(xiàng)有關(guān)。例如一個(gè)有溢出錯(cuò)誤的軟件,不論軟件的備份機(jī)制如何完備,當(dāng)溢出錯(cuò)誤的輸入滿足時(shí),軟件輸出必將溢出。在嚴(yán)格遵循軟件工程原理的基礎(chǔ)上,為了保證和提高軟件的可靠性,通常在軟件設(shè)計(jì)過程中采用避錯(cuò)設(shè)計(jì) 、 查錯(cuò)設(shè)計(jì) 、 改錯(cuò)設(shè)計(jì)和容錯(cuò)設(shè)計(jì)等軟件可靠性設(shè)計(jì)方法,所以從內(nèi)部可靠性影響因素來說,軟件可靠性測(cè)試用例應(yīng)考慮如下設(shè)計(jì)以提高有效性和正確性。

  (1)避錯(cuò)設(shè)計(jì)

  軟件可靠性設(shè)計(jì)的首要方法體現(xiàn)在預(yù)防為主的思想。軟件產(chǎn)品在設(shè)計(jì)過程中的避錯(cuò)設(shè)計(jì)目的是使軟件不發(fā)生錯(cuò)誤或少發(fā)生錯(cuò)誤。原則是控制和減少程序的復(fù)雜性。下列方法可以在避錯(cuò)程序設(shè)計(jì)中參考,如參數(shù)化、公共數(shù)據(jù)和變量、非授權(quán)存取限制、無意指令跳轉(zhuǎn)處理、程序檢測(cè)點(diǎn)設(shè)置、尋址模式選用、數(shù)據(jù)區(qū)隔離、安全關(guān)鍵信息要求、信息存儲(chǔ)要求、算法選擇要求。

  下列的結(jié)構(gòu)和技術(shù)容易引起系統(tǒng)的缺陷,設(shè)計(jì)測(cè)試用例時(shí)優(yōu)先考慮如下操作和結(jié)構(gòu)類型:浮點(diǎn)數(shù)、指針、動(dòng)態(tài)內(nèi)存分配、并行、遞歸、中斷、繼承、別名、默認(rèn)輸入的處理。

  (2)查錯(cuò)設(shè)計(jì)

  軟件查錯(cuò)設(shè)計(jì)是通過賦予程序自校驗(yàn)功能,使程序在運(yùn)行中能自動(dòng)發(fā)現(xiàn)錯(cuò)誤的設(shè)計(jì)方法。包含被動(dòng)式錯(cuò)誤檢測(cè)和主動(dòng)錯(cuò)誤檢測(cè)。前者即在程序的若干部位設(shè)置檢測(cè)點(diǎn),等待錯(cuò)誤出現(xiàn)時(shí)觸發(fā)告警;后者能自動(dòng)對(duì)程序狀態(tài)進(jìn)行檢查。

  對(duì)于查錯(cuò)設(shè)計(jì)的驗(yàn)證,測(cè)試用例優(yōu)先考慮如下操作進(jìn)行設(shè)計(jì):按照已知的數(shù)據(jù)極限值檢查數(shù)據(jù)邊界的輸入輸出;按照變量間恒定關(guān)系檢驗(yàn)變量的輸入和結(jié)果輸出;檢查所有多值數(shù)據(jù)的有效性;對(duì)冗余的輸入數(shù)據(jù)進(jìn)行一致性檢驗(yàn);循環(huán)等待次數(shù)控制。

  (3)改錯(cuò)設(shè)計(jì)

  改錯(cuò)設(shè)計(jì)通過賦予程序自我改正錯(cuò)誤的能力,減少錯(cuò)誤危害程度。故障隔離技術(shù)是改錯(cuò)設(shè)計(jì)的常用方法。改錯(cuò)設(shè)計(jì)的關(guān)鍵前提是準(zhǔn)確地定位軟件錯(cuò)誤原因和錯(cuò)誤的代碼,減少軟件錯(cuò)誤造成的損害,將損害限制在可以接受的范圍內(nèi)。

  對(duì)于改錯(cuò)設(shè)計(jì)的驗(yàn)證,可靠性測(cè)試用例可以參考如下方法:用戶的應(yīng)用程序或數(shù)據(jù)訪問受控,其他用戶不能輕易修改;應(yīng)用程序引用或修改操作系統(tǒng)的編碼或操作系統(tǒng)內(nèi)部的數(shù)據(jù)應(yīng)受控;操作系統(tǒng)的錯(cuò)誤不應(yīng)引起應(yīng)用程序和數(shù)據(jù)的變更;應(yīng)用程序不能終止操作系統(tǒng)工作; 應(yīng)用程序不能觸發(fā)操作系統(tǒng)修改其他程序或數(shù)據(jù)。

 ?。?)容錯(cuò)設(shè)計(jì)

  軟件容錯(cuò)是程序在錯(cuò)誤已被觸發(fā)的情況下,系統(tǒng)仍然具有正常運(yùn)行能力。常用的容錯(cuò)設(shè)計(jì)有時(shí)間冗余、結(jié)構(gòu)冗余和信息冗余。

  時(shí)間冗余是以消耗時(shí)間開銷為代價(jià)獲取軟件系統(tǒng)高可靠性的一種手段,如指令重復(fù)執(zhí)行和程序重復(fù)執(zhí)行。對(duì)于重復(fù)執(zhí)行不成功時(shí),通常發(fā)出中斷,轉(zhuǎn)入錯(cuò)誤處理程序,或?qū)Τ绦蛑貜?fù)技術(shù)計(jì)算、重新組合系統(tǒng)、放棄程序處理。

  結(jié)構(gòu)冗余是針對(duì)軟件系統(tǒng)不同版本的并行運(yùn)行的冗余設(shè)計(jì)。對(duì)相同的初始條件、相同的輸入操作,多版本結(jié)構(gòu)的結(jié)果應(yīng)一致,或者對(duì)不同的結(jié)果實(shí)行表決后決定是否繼續(xù)執(zhí)行(多數(shù)決定、一致決定)。

  信息冗余是為檢測(cè)或糾正信息在運(yùn)算或傳輸中的錯(cuò)誤外加的一部分信息。如奇偶校驗(yàn)碼或者類似MD5的完整性校驗(yàn)來確保數(shù)據(jù)完整和正確;信息之間應(yīng)保持足夠的安全Hamming 距離;安全關(guān)鍵信息的決策判斷不得依賴于全“1”或全“0”的輸入。

  1.2 軟件外部可靠性影響因素

  計(jì)算機(jī)軟件系統(tǒng)是指由操作系統(tǒng)軟件、數(shù)據(jù)庫(kù)軟件、應(yīng)用軟件等基礎(chǔ)支撐軟件以及相關(guān)硬件組成的計(jì)算機(jī)軟件系統(tǒng)。軟件作為一個(gè)系統(tǒng)使用時(shí),系統(tǒng)不僅僅是軟件本身,還包含軟件系統(tǒng)運(yùn)行的外圍載體,如操作系統(tǒng)、網(wǎng)絡(luò)、服務(wù)器等。作為一個(gè)綜合的整體系統(tǒng),其可靠性依賴因素不僅僅是其軟件本身,還涉及多方面的因素,包括人員、技術(shù)、管理等。針對(duì)軟件可靠性的外部影響因素,本文從兩個(gè)方面進(jìn)行闡述,一是高可用技術(shù)保障,一是軟件系統(tǒng)管理制度保障。軟件外部可靠性測(cè)試用例設(shè)計(jì)可以結(jié)合上述兩方面的具體情況進(jìn)行設(shè)計(jì)。

 ?。?)高可用技術(shù)

  常用高可用技術(shù)主要有如下幾種分類,不同的高可用技術(shù)對(duì)系統(tǒng)可靠性的貢獻(xiàn)是不一樣的。

  ① 高可用技術(shù)。高可用是系統(tǒng)高可靠的基礎(chǔ),主要有如下幾種實(shí)現(xiàn)方式:冗余技術(shù)、集群技術(shù)、遠(yuǎn)程集群技術(shù)、多路技術(shù)和虛擬機(jī)技術(shù)。

  ② 數(shù)據(jù)備份技術(shù)。數(shù)據(jù)備份是系統(tǒng)高可靠的必要條件。數(shù)據(jù)備份從策略上來說有3種:全備份、增量備份和差異備份?;旧隙际腔谌缦录夹g(shù)實(shí)現(xiàn):Host-Based備份、LAN-Based備份、LAN-Free備份和Server-Less備份。

  數(shù)據(jù)復(fù)制技術(shù)是確保數(shù)據(jù)備份的前提。主要的備份技術(shù)有如下幾種:基于復(fù)制軟件復(fù)制、基于存儲(chǔ)陣列復(fù)制、基于服務(wù)器復(fù)制、基于SAN復(fù)制和Server-Less備份。

  持續(xù)數(shù)據(jù)保護(hù)技術(shù)通過捕獲或跟蹤數(shù)據(jù)的變化,并將變化異地存儲(chǔ)在生產(chǎn)數(shù)據(jù)之外,保證數(shù)據(jù)可以恢復(fù)到任意時(shí)間點(diǎn)。主要有如下幾種類型:基于應(yīng)用的持續(xù)數(shù)據(jù)保護(hù)、基于文件的持續(xù)數(shù)據(jù)保護(hù)和基于數(shù)據(jù)塊的持續(xù)數(shù)據(jù)保護(hù)。

 ?。?)系統(tǒng)服務(wù)保證類因素

  對(duì)于應(yīng)用級(jí)的保護(hù),為保護(hù)系統(tǒng)連續(xù)正常的運(yùn)行,避免系統(tǒng)受到未授權(quán)的修改、破壞而導(dǎo)致系統(tǒng)不可用,參考國(guó)標(biāo)GB/T 22239-2008中的相關(guān)部分內(nèi)容,可靠性測(cè)試中系統(tǒng)服務(wù)保證類的測(cè)試用例可以參考表1所列幾個(gè)方面。

001.jpg

  (3)系統(tǒng)災(zāi)難恢復(fù)管理體系

  對(duì)于更高一級(jí)的系統(tǒng)級(jí)保護(hù),可以參考GB/T 20988—2007《信息安全技術(shù)信息系統(tǒng)災(zāi)難恢復(fù)規(guī)范》。做為系統(tǒng)級(jí)的可靠性保證,容災(zāi)系統(tǒng)的建設(shè)必不可少。對(duì)于不同的容災(zāi)級(jí)別要求,該規(guī)范作出了明確的指導(dǎo)。而評(píng)估一個(gè)容災(zāi)系統(tǒng)的建設(shè)通??梢詮谋?所示7個(gè)方面進(jìn)行評(píng)價(jià)??煽啃詼y(cè)試用例設(shè)計(jì)可以借鑒參考表2。

002.jpg

2 傳統(tǒng)軟件可靠性測(cè)試方法

  軟件可靠性測(cè)試方法主要有兩種: 基于運(yùn)行剖面的可靠性測(cè)試和基于使用模型的統(tǒng)計(jì)測(cè)試。前者是AT&T貝爾實(shí)驗(yàn)室的Musa J D在1993年提出的[3],后者是由Mills H D[4]和whittaker J A[5]提出。這兩種方法構(gòu)造的測(cè)試模型從不同的角度來模擬軟件真實(shí)的運(yùn)行環(huán)境。

  這兩種方法所用的術(shù)語雖有微小的差別,但它們的基本思想都是基于統(tǒng)計(jì)學(xué)的基本原理,即根據(jù)軟件實(shí)際使用情況的統(tǒng)計(jì)規(guī)律的描述對(duì)軟件進(jìn)行隨機(jī)測(cè)試。統(tǒng)計(jì)測(cè)試進(jìn)行的前提條件就是生成如實(shí)反映系統(tǒng)使用情況的使用模型。以往使用模型的建立主要是通過預(yù)測(cè)和估計(jì)得出,不能如實(shí)地反映系統(tǒng)的真實(shí)情況。

  傳統(tǒng)的軟件可靠性測(cè)試方法借鑒了硬件的可靠性測(cè)試方法,更多是偏重功能實(shí)現(xiàn)的角度去測(cè)試。而軟件不同于硬件,軟件的可靠性測(cè)試除了依賴上述傳統(tǒng)的可靠性測(cè)試方法外,應(yīng)該結(jié)合軟件的性能測(cè)試進(jìn)行可靠性測(cè)試,這樣的可靠性測(cè)試結(jié)果更為全面,更具參考性。

3 結(jié)合性能測(cè)試驗(yàn)證軟件可靠性

  本文提出了一種可靠性的測(cè)試建議作為傳統(tǒng)可靠性測(cè)試的補(bǔ)充,即建議在系統(tǒng)性能負(fù)載較重的情況下結(jié)合傳統(tǒng)的可靠性測(cè)試方法進(jìn)行可靠性測(cè)試。

  3.1 測(cè)試方法介紹

  同樣以傳統(tǒng)的基于操作剖面可靠性測(cè)試為例介紹測(cè)試方法:

 ?。?)構(gòu)造測(cè)試操作剖面。操作剖面的構(gòu)造要素來自于第1節(jié)本文作者從軟件內(nèi)部和軟件外部?jī)蓚€(gè)方面總結(jié)的可靠性影響因素。綜合上述的梳理分析,計(jì)算機(jī)軟件系統(tǒng)作為一個(gè)整體,其可靠性測(cè)試剖面應(yīng)參考內(nèi)部和外部?jī)煞矫娴挠绊懸蛩兀婕暗郊夹g(shù)、人員和管理多個(gè)方面。

  (2)模擬軟件系統(tǒng)真實(shí)使用場(chǎng)景下的性能負(fù)載,此性能負(fù)載作為執(zhí)行操作剖面的背景數(shù)據(jù)。

 ?。?)執(zhí)行測(cè)試剖面操作,結(jié)合性能測(cè)試評(píng)價(jià)軟件系統(tǒng)的可靠性。

  3.2 案例介紹


003.jpg

  如圖1所示,在本案例中依次對(duì)軟件系統(tǒng)執(zhí)行了包括“數(shù)據(jù)RAC故障”、“接入進(jìn)程失效”、“路由進(jìn)程失效”、“接入節(jié)點(diǎn)失效”、“路由節(jié)點(diǎn)故障”、“交易服務(wù)器故障”、“額度服務(wù)器故障”和“主限號(hào)服務(wù)器故障”8個(gè)可靠性測(cè)試操作剖面。結(jié)合性能測(cè)試的10 000用戶在線測(cè)試,可以清晰看出相關(guān)測(cè)試剖面對(duì)軟件可靠性的影響大小。

4 結(jié)論

  本文從軟件的內(nèi)部可靠性設(shè)計(jì),結(jié)合軟件系統(tǒng)外圍運(yùn)行載體的高可用技術(shù)和容災(zāi)恢復(fù)管理要素多方面,從技術(shù)、人員和管理方面提出可靠性測(cè)試用例的考慮因素。分析了傳統(tǒng)軟件可靠性測(cè)試方法來源硬件可靠性測(cè)試模式的局限性。結(jié)合實(shí)際情況,對(duì)傳統(tǒng)測(cè)試方法進(jìn)行補(bǔ)充建議,提出了結(jié)合性能測(cè)試和多維度測(cè)試剖面進(jìn)行可靠性測(cè)試,并舉例簡(jiǎn)要闡述了方法和優(yōu)點(diǎn)。

參考文獻(xiàn)

  [1] 黃錫滋.軟件可靠性、安全性與質(zhì)量保證[M].北京:電子工業(yè)出版社,2002.

  [2] GB-T 16260.1-2006. 軟件工程 產(chǎn)品質(zhì)量 第1部分:質(zhì)量模型[S].

  [3] Musa J D.Operational profiles in software—reliability engineering [J].IEEE Software,1993,10(2):14-32.

  [4] Mills H D,Dyer M, Linger R C. Cleanroom software engineering [J].IEEE Software,1987,4(2):19-24.

  [5] Whittaker J A, Poore J H.Statistical testing for clcanroom software engineering [J]. IEEE, 1992(11):31-39.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。