【摘 要】隨著信息技術(shù)的不斷發(fā)展,軟件規(guī)模的擴(kuò)大,如何保證和提高軟件質(zhì)量成為軟件界最為關(guān)心的問題之一。基于缺陷模式的軟件測試是近年來發(fā)展起來的一種程序源代碼靜態(tài)分析技術(shù)。本文提出了一種缺陷模式的檢測的統(tǒng)一模型,為如何利用缺陷數(shù)據(jù)來提高軟件可靠性提供了思路。
【關(guān)鍵詞】軟件測試;軟件缺陷;缺陷模式
0.引言
軟件測試伴著軟件而誕生,自從有了軟件,便有了軟件測試。隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,軟件產(chǎn)品已經(jīng)應(yīng)用到社會生活的各個領(lǐng)域,軟件質(zhì)量問題已成為人們共同關(guān)注的焦點(diǎn)。軟件開發(fā)商為了占有市場,提高軟件質(zhì)量已經(jīng)是企業(yè)的重要目標(biāo)之一。毋庸置疑,提高軟件質(zhì)量已成為整個軟件開發(fā)過程中必須始終關(guān)心和設(shè)法解決的問題。
1983年,美國電氣及電子工程師學(xué)會(IEEE)對軟件測試給出的定義是:使用人工或自動化手段來運(yùn)行或測定某個軟件系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。這個定義明確指出了軟件測試是以檢驗(yàn)軟件系統(tǒng)是否滿足需求為目標(biāo),它不只是軟件開發(fā)后期的活動,而是與整個開發(fā)流程融合成一體,軟件測試是一個需要運(yùn)用專門的方法和手段,需要專門人才和專家來承擔(dān)的科學(xué)技術(shù)專業(yè)。
1.軟件測試方法
V模型最早是由已故的Paul Rook在上個世紀(jì)80年代后期提出來的,傳統(tǒng)的軟件開發(fā)和軟件測試是相對應(yīng)的。軟件測試過程則是一個自底向上,逐步繼承的過程,依次為單元測試、集成測試、系統(tǒng)測試。開發(fā)過程則是一個自頂向下,逐步細(xì)化的過程,順序?yàn)樾枨蠓治觥⒏乓O(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼實(shí)現(xiàn)。有時候開發(fā)和測試過程會平行的進(jìn)行。
本文研究的基于缺陷的軟件測試技術(shù)的分析對象是用戶源代碼,也就是軟件測試的單元測試環(huán)節(jié)。在單元測試環(huán)節(jié),主要對軟件質(zhì)量的三個主要特性進(jìn)行測試:正確性、可靠性和效率。軟件缺陷模式研究時間不長,因此,暫時的缺陷模式只是針對代碼級,沒有涉及到其他階段,如集成測試和系統(tǒng)測試。但是在不久的將來,基于缺陷模型的軟件測試勢必會擴(kuò)展到軟件測試的每一個環(huán)節(jié)。
2.軟件缺陷模式概述
軟件缺陷模式的研究始于近幾年,尚未有權(quán)威組織提出軟件缺陷模式的定義。軟件缺陷的定義繁多,本文采用國內(nèi)軟件可靠性工程領(lǐng)域廣泛使用的定義,即存在于軟件中的、不期望的或不可接受的偏差,其結(jié)果是當(dāng)軟件運(yùn)行于某一特定條件時將出現(xiàn)軟件故障,軟件缺陷以一種靜態(tài)的形式存在于軟件的內(nèi)部,是軟件開發(fā)過程中人為錯誤的結(jié)果。
圖1 軟件缺陷分析的一般框圖
由于軟件測試是一個不斷重復(fù)和積累的過程。因而缺陷模式主要由有經(jīng)驗(yàn)的軟件開發(fā)人員或測試人員總結(jié)出來,或根據(jù)以往測試積累的缺陷數(shù)據(jù)概括出來,是傳統(tǒng)軟件測試方法的有力補(bǔ)充,但并不能取代傳統(tǒng)測試方法。缺陷模式的主要的優(yōu)勢在于:1)需求改變時,很容易更新測試組;2)事實(shí)證明,在軟件開發(fā)過程中,問題發(fā)現(xiàn)得越早,對整個開發(fā)所造成的人力物力損失越小;3)可用于各種不同系統(tǒng)的測試。無論使用何種分析技術(shù),所有針對軟件缺陷的源代碼靜態(tài)分析工具,其工作原理大致上是相同的,圖1給出了基于模型測試的基本過程圖示。
本文從程序的源代碼著眼,以缺陷產(chǎn)生后果的嚴(yán)重性為標(biāo)準(zhǔn),提出了一種缺陷模式檢測的統(tǒng)一模型。在該模型中,被測軟件與測試模型分開,測試模型統(tǒng)一描述,適用于各種系統(tǒng),有著良好的移植性。各種被測軟件獨(dú)立存在,因而可以并行高效分析多個軟件。
3.缺陷模式檢測模型
參考程序靜態(tài)分析的一般工作方式,結(jié)合軟件缺陷檢測的特點(diǎn),缺陷模式檢測的一般模型如圖2所示:
圖2缺陷模式檢測模型
該模型主要由缺陷模型統(tǒng)一測試框架和輸入模塊兩大部分組成。模塊之間的調(diào)用關(guān)系如圖中箭頭所示。具體過程有如下6個步驟:
3.1構(gòu)造抽象語法樹
由于源程序中存在預(yù)處理命令,因而有必要對這些命令進(jìn)行預(yù)編譯,源程序中的所有語句都被分解。分解后的語句構(gòu)造抽象語法樹,每一句語句都將是抽象語法樹的節(jié)點(diǎn)。語法樹是整個模型的基礎(chǔ),是源程序的初步抽象。
3.2生成控制流圖
從抽象語法樹構(gòu)造程序的控制流圖,控制流圖反映了程序的控制結(jié)構(gòu)。從語法樹的語句節(jié)點(diǎn)可以方便地訪問到控制流圖的相應(yīng)節(jié)點(diǎn),控制流圖是源程序的進(jìn)一步抽象。
3.3生成符號表
生成控制流圖和生成符號表是一個同步過程,都是從抽象語法樹生成的。不過控制流圖主要反映程序的控制結(jié)構(gòu)。而符號表是用來記錄標(biāo)示符的各種信息。在處理類型、變量和函數(shù)的聲明這些標(biāo)示符時,都可以在符號表中找到。
3.4區(qū)間運(yùn)算
源程序經(jīng)過構(gòu)造抽象語法樹后生成控制流圖和符號表,在這一系列過程中,可能會引起缺陷狀態(tài)機(jī)狀態(tài)的改變,這樣就無法測試到本來的程序缺陷,區(qū)間運(yùn)算主要計(jì)算由于變量取值范圍而引起的狀態(tài)變遷。
3.5缺陷測試
缺陷測試是基于缺陷模型測試的最關(guān)鍵步驟,首先導(dǎo)入缺陷狀態(tài)機(jī)的描述文件,然后根據(jù)區(qū)間運(yùn)算生成的內(nèi)部數(shù)據(jù)結(jié)構(gòu),對控制流圖進(jìn)行遍歷,對測試模型進(jìn)行匹配,生成故障報表。
3.6 IP確認(rèn)
由于誤報的存在,需要人工確認(rèn)。每個IP經(jīng)確認(rèn)后,一般分為三種情況:確認(rèn)為缺陷的數(shù)目;確認(rèn)為非缺陷的數(shù)目;不能確定是否有缺陷的數(shù)目。對于基于缺陷模型的測試來說,IP測試是基于缺陷模型最消耗的步驟。
4.缺陷模式檢測模型優(yōu)缺點(diǎn)
4.1優(yōu)點(diǎn)
軟件測試本是一個無限重復(fù)的過程,通過檢測模型的建立,可以省去很多相同的步驟,提高軟件測試的效率。并且基于模型的軟件測試可以把軟件測試工作提前到開發(fā)工作早期。隨著整個社會對軟件測試的逐漸重視,基于模型的軟件測試必然會得到廣泛運(yùn)用。
4.2缺點(diǎn)
第一、基于模型的軟件測試始于最近幾年,現(xiàn)在還只用于源代碼階段,要想把這種測試方法推廣到軟件測試的所有階段,未來的路還很長;第二、缺陷模式的定義和軟件的邏輯關(guān)系密切,隨著時間的發(fā)展,關(guān)系會更緊密,因而對于一個好的測試系統(tǒng)來說缺陷模式不方便擴(kuò)展;第三、有時候無法突破程序本身的的固有缺陷直接影響測試自動化。
5.結(jié)束語
本文提出了一種缺陷模式檢測的統(tǒng)一模型,基于模型的軟件測試技術(shù)得到了越來越廣泛的應(yīng)用,它是原始軟件測試方法的強(qiáng)烈補(bǔ)充,不能取代原始測試方法,但也是其他的測試方法不可取代的。因而,軟件測試中,僅僅依靠基于模型進(jìn)行軟件測試也是不夠的。隨著軟件測試模型的增多,算法的逐漸成熟,這種測試方法一定會有更好的前景。
【參考文獻(xiàn)】
[1]宋穎.面向嵌入式C的軟件缺陷檢測技術(shù)的研究與實(shí)現(xiàn)[D].北京郵電大學(xué).2011.1.11.
[2]王雅文,宮云戰(zhàn),楊朝紅.軟件測試工具綜述[J],北京化工大學(xué)學(xué)報,2007,34(S1):1-5.
[3]趙振宇.嵌入式軟件測試技術(shù)研究及應(yīng)用[D].北京郵電大學(xué).2011.01.
[4]肖慶,楊朝紅,畢學(xué)軍.一種基于故障模式狀態(tài)機(jī)的測試方法[J].北京化工大學(xué)學(xué)報(自然科學(xué)版),2007,34(S1):73-76.
[5]張威.軟件動態(tài)內(nèi)存故障模型及自動測試方法研究[D].北京:裝甲兵工程學(xué)院,2006.
[6]Hovemeyer D,Pugh H.Finding more 1 pointer bugs,but not too many.In Proceedings of the 7th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering.New York:ACM Press,2007:9-14.