顧吉堂
摘要:結(jié)合軟件可靠性測試流程,分析了軟件可靠性數(shù)據(jù)獲取、處理辦法,最后提出一種基于軟件失效數(shù)據(jù)進(jìn)行軟件可靠性測試的方法。
關(guān)鍵詞:軟件可靠性;軟件失效;可靠性測試
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)01-0122-02
Abstract:Combining software testing process, the paper studies software reliability data acquisition and processing methods, a way of testing software reliability Based on its failure data is proposed.
Key words:software reliability; software failure; reliability test
計(jì)算機(jī)軟件日趨復(fù)雜,影響其質(zhì)量的因素也越來越多,盡管人們采用了軟件工程、軟件質(zhì)量保證等一系列技術(shù)提高其可靠性水平,但在當(dāng)前技術(shù)下做到軟件零缺陷幾乎是不可能的,用戶對運(yùn)行穩(wěn)定、交互順暢、性能良好的計(jì)算機(jī)軟件的不斷追求為深入開展軟件可靠性測試研究提供了不竭動(dòng)力。
可靠性作為衡量軟件質(zhì)量的重要指標(biāo),越來越受到人們的重視,軟件可靠性測試已成為軟件可靠性工程的核心內(nèi)容。
美國IEEE計(jì)算機(jī)學(xué)會(huì)軟件工程技術(shù)委員會(huì)于1983年對軟件可靠性作出如下的定義:
1) 在規(guī)定條件下和規(guī)定時(shí)間內(nèi)不引起系統(tǒng)失效的概率;
2) 在規(guī)定的時(shí)間周期內(nèi),所述條件下程序執(zhí)行預(yù)定功能的能力。
其中,“規(guī)定條件”包括軟件運(yùn)行環(huán)境、運(yùn)行剖面;“規(guī)定時(shí)間”分為執(zhí)行時(shí)間、日歷時(shí)間和時(shí)鐘時(shí)間等。
當(dāng)軟件失效時(shí),就說明軟件不可靠,軟件失效次數(shù)越多或者發(fā)生失效時(shí)間間隔越短,認(rèn)為軟件越不可靠。軟件失效的機(jī)理可用圖1表示。
其中:
錯(cuò)誤(error):指軟件生存期內(nèi)出現(xiàn)的不希望或不可接受的人為錯(cuò)誤,其結(jié)果導(dǎo)致軟件缺陷產(chǎn)生,相對于軟件本身,錯(cuò)誤是一種外部行為;
缺陷(defect):指存在于軟件文檔、數(shù)據(jù)、程序中的偏差導(dǎo)致軟件運(yùn)行于特定條件下出現(xiàn)故障;
故障(fault):指軟件在運(yùn)行過程中出現(xiàn)的系統(tǒng)不能夠執(zhí)行規(guī)定功能的狀態(tài),故障是一種動(dòng)態(tài)行為,具有較強(qiáng)的不確定性;
失效(failure):指程序的運(yùn)行偏離了需求,產(chǎn)生了一種不希望或不可接受的外部行為結(jié)果。
軟件失效機(jī)理可概括為:軟件錯(cuò)誤通常是人為原因造成的,一個(gè)軟件錯(cuò)誤必定會(huì)產(chǎn)生軟件缺陷;軟件缺陷被激活時(shí),軟件故障就會(huì)隨之而來;軟件故障若未及時(shí)處理便會(huì)導(dǎo)致軟件失效。
1 軟件可靠性測試流程
軟件可靠性測試指的是對特定時(shí)間和環(huán)境下軟件無故障運(yùn)行概率的分析判斷,一般情況下,可按軟件運(yùn)行剖面隨機(jī)檢查其各項(xiàng)指標(biāo),通過收集測試數(shù)據(jù)并運(yùn)用可靠性模型確定軟件的可靠性水平。
軟件可靠性測試流程通常分可靠性測試準(zhǔn)備、可靠性測試執(zhí)行和可靠性結(jié)果分析三個(gè)階段,軟件可靠性測試的一般流程如圖2所示。
1) 構(gòu)造運(yùn)行剖面:“軟件的運(yùn)行剖面”是指由軟件所有可能的輸入值構(gòu)成的軟件運(yùn)行的輸入空間及其分布概率。粗略地說,運(yùn)行剖面是用來描述軟件實(shí)際使用情況的,可根據(jù)軟件的需求規(guī)格說明及設(shè)計(jì)文檔確定軟件功能點(diǎn)、提取操作點(diǎn)、明確操作點(diǎn)相互關(guān)系和操作概率等。
2) 選取測試用例:測試用例一般包括測試項(xiàng)功能、輸入數(shù)據(jù)和預(yù)期結(jié)果等,要使其輸入環(huán)境與軟件典型使用環(huán)境在統(tǒng)計(jì)特性上盡可能保持一致,也要根據(jù)軟件運(yùn)行剖面隨機(jī)選取與用戶的使用概率分布相吻合的測試用例,確保軟件可靠性估計(jì)的準(zhǔn)確性和客觀性。
3) 測試執(zhí)行:即在實(shí)裝真實(shí)條件下或模擬生成的仿真測試環(huán)境中,按軟件操作流程運(yùn)行測試用例,記錄軟件運(yùn)行期間的失效時(shí)間、失效間隔、累積失效數(shù)等測試數(shù)據(jù)。
4) 結(jié)果分析:根據(jù)軟件運(yùn)行結(jié)果判斷被試軟件是否失效并對其中原因定位,除此之外,還要根據(jù)軟件失效數(shù)據(jù)評價(jià)其可靠性指標(biāo)是否滿足預(yù)定要求,為管理決策提供依據(jù)。
5) 糾錯(cuò)與回歸測試:在結(jié)果分析基礎(chǔ)上,針對導(dǎo)致軟件失效的程序要通過糾錯(cuò)措施進(jìn)行糾正,才能實(shí)現(xiàn)軟件可靠性的增長;回歸測試是指對修改錯(cuò)誤程序后的軟件按照測試流程和運(yùn)行剖面再次進(jìn)行的測試,其目的是確認(rèn)糾錯(cuò)措施沒有產(chǎn)生新的錯(cuò)誤。
2 軟件可靠性數(shù)據(jù)采集
軟件可靠性數(shù)據(jù)不僅要滿足軟件可靠性模型要求還要滿足軟件全壽命、全周期可靠性分析要求,數(shù)據(jù)采集的質(zhì)量、數(shù)量直接影響到軟件可靠性測試結(jié)果的準(zhǔn)確性和可信度。為便于研究,這里將軟件的錯(cuò)誤、缺陷、故障及引起軟件差錯(cuò)的其他數(shù)據(jù)統(tǒng)稱為軟件可靠性數(shù)據(jù)。
對于一個(gè)計(jì)算機(jī)軟件來說,發(fā)生軟件失效一般是因?yàn)檫\(yùn)行了某一包含缺陷的軟件模塊的原因。為了討論方便,這里把那些驅(qū)動(dòng)系統(tǒng)軟件模塊運(yùn)行的因素為操作,并用操作序列來表達(dá)系統(tǒng)進(jìn)行的所有活動(dòng)。同時(shí),軟件失效又具有相對獨(dú)立性,其發(fā)生的時(shí)間與系統(tǒng)先前工作狀態(tài)、運(yùn)行時(shí)長及累積失效等因素均無關(guān)。
一般來說,可以把軟件在某一次可靠性測試過程中的所有操作用一個(gè)操作序列來表示,其失效時(shí)間序列為,這里為系統(tǒng)開機(jī)時(shí)間。為方便研究,我們在時(shí)間軸上用操作軸和操作序列、失效軸和失效序列來直觀反映軟件在一次測試過程中發(fā)生失效的情況,如圖3所示。
引入操作序列的概念,有利于按時(shí)間先后順序獲取軟件在實(shí)際使用中的失效數(shù)據(jù),該數(shù)據(jù)能直觀反映出測試周期中的軟件可靠性數(shù)據(jù),有利于開展軟件的可靠性分析。
所謂失效序列,通常認(rèn)為其中的任意一次失效,意味著運(yùn)行了某個(gè)包含缺陷的軟件模塊,測試中可以通過記錄失效時(shí)間來構(gòu)建其失效序列。
當(dāng)軟件進(jìn)行修改后,其失效數(shù)據(jù)的獲取可以根據(jù)修改缺陷模塊的運(yùn)行反推出該模塊操作可能失效現(xiàn)象,在先前失效序列中去掉已修改的失效數(shù)據(jù),加上該操作在更新后發(fā)生的失效數(shù)據(jù)就可以獲得新的、可利用的軟件可靠性數(shù)據(jù)了。
3 軟件可靠性測試模型
現(xiàn)有的軟件可靠性測試模型有很多種,這里采用G-O非齊次Poisson過程模型,根據(jù)軟件可靠性測試中采集的軟件失效數(shù)據(jù)預(yù)測其最終的失效總數(shù),為可靠性分析奠定基礎(chǔ)。
作如下假設(shè):
1) 時(shí)刻t被發(fā)現(xiàn)的軟件失效數(shù)據(jù)服從泊松分布;
2) 軟件錯(cuò)誤相互獨(dú)立且被發(fā)現(xiàn)概率基本相同;
3) 軟件糾錯(cuò)過程中不會(huì)產(chǎn)生新的錯(cuò)誤。
累積錯(cuò)誤數(shù)m(t)為軟件運(yùn)行到t時(shí)刻的累積錯(cuò)誤總數(shù),a為最終可能被檢測出的錯(cuò)誤總數(shù),則有:
對于一個(gè)被測軟件,在獲取軟件失效數(shù)及失效間隔時(shí)間基礎(chǔ)上,可通過上述模型計(jì)算出軟件累積錯(cuò)誤,為該軟件的可靠性測試奠定基礎(chǔ)。
4 結(jié)束語
本文從軟件失效數(shù)據(jù)采集、分析入手,結(jié)合軟件可靠性評估模型,針對軟件可靠性測試技術(shù)進(jìn)行了研究,對提高計(jì)算機(jī)軟件可靠性測試水平具有指導(dǎo)意義。
參考文獻(xiàn):
[1] 李麗清.軟件缺陷數(shù)據(jù)的分析和預(yù)測[J].中國工程物理研究院科技年報(bào),2003(6):160-162.
[2] 張廣梅.軟件測試與可靠性評估[D].北京:中國科學(xué)院研究生院,2006:21-22.
[3] 揚(yáng)玥.軟件可靠性評測的多因素決策模型[J].計(jì)算機(jī)應(yīng)用研究,2015(4):1110-1111.
[4] 喬輝.軟件缺陷預(yù)測技術(shù)研究[D]. 北京:信息工程大學(xué),2013:3-4.endprint