周藝斌,殷永峰,李驍?shù)?,王明?/p>
(北京航空航天大學(xué) 可靠性與系統(tǒng)工程學(xué)院,北京100191)
隨著模型驅(qū)動(dòng)軟件設(shè)計(jì)思想(MBD)的廣泛應(yīng)用,軟件開發(fā)的重心已由傳統(tǒng)的代碼設(shè)計(jì)轉(zhuǎn)移到建模及模型的轉(zhuǎn)換上[1].如果能在完成軟件初步設(shè)計(jì)的同時(shí),及早發(fā)現(xiàn)并修復(fù)模型中的錯(cuò)誤,不僅能縮短后期的代碼測(cè)試周期,還能提高模型的可靠性,改善軟件產(chǎn)品的質(zhì)量.因此,越來(lái)越多的研究開始關(guān)注高層次的模型驗(yàn)證與測(cè)試工作.
Simulink是Matlab提供的一個(gè)用于對(duì)動(dòng)態(tài)系統(tǒng)進(jìn)行建模、仿真和分析的工具.它為用戶建模提供了一個(gè)圖形化的用戶界面,通過(guò)不同類型模塊庫(kù)中的功能模型來(lái)完成系統(tǒng)的建模.目前,許多航空機(jī)載安全關(guān)鍵軟件已運(yùn)用Simulink/RTW技術(shù)進(jìn)行開發(fā),但仍存在缺乏完善的模型測(cè)試充分性準(zhǔn)則及自動(dòng)高效的測(cè)試用例生成等問(wèn)題[2].不同于基于控制流和數(shù)據(jù)流的測(cè)試充分性準(zhǔn)則,程序變異是一項(xiàng)用于評(píng)價(jià)測(cè)試優(yōu)良程度的有效技術(shù),它為測(cè)試評(píng)價(jià)和測(cè)試增強(qiáng)提供了準(zhǔn)則.將程序變異技術(shù)應(yīng)用于Simulink的模型測(cè)試,不僅可以為Simulink模型提供測(cè)試充分性準(zhǔn)則,還可以用來(lái)指導(dǎo)設(shè)計(jì)較強(qiáng)發(fā)現(xiàn)故障能力的測(cè)試用例生成.但是由于Simulink模型的變異測(cè)試過(guò)程中存在的測(cè)試執(zhí)行開銷大和測(cè)試用例生成效率低兩個(gè)問(wèn)題,是將變異測(cè)試技術(shù)從學(xué)術(shù)界研究轉(zhuǎn)化為工業(yè)界應(yīng)用所面臨的主要技術(shù)難題.
本文研究設(shè)計(jì)了針對(duì)Simulink模型測(cè)試的改進(jìn)變異算子集,在不影響測(cè)試用例集變異評(píng)分的情況下,該組變異算子集能夠減少變異模型的生成數(shù)量,從而有效降低測(cè)試開銷.在此基礎(chǔ)上設(shè)計(jì)了一種基于搜索的Simulink模型變異測(cè)試用例生成方法.
程序變異(program mutation)是一種面向缺陷的測(cè)試技術(shù),最早由DeMillo等在文獻(xiàn)[3]中提出,主要應(yīng)用于單元測(cè)試,在接口測(cè)試、面向方面測(cè)試及面向?qū)ο鬁y(cè)試中也有相關(guān)的理論研究.它依賴于兩個(gè)基本原則:其一是稱職程序員假設(shè),即假設(shè)熟練的程序員寫出的是一個(gè)接近于正確的程序P;另一個(gè)是耦合效應(yīng)假設(shè),即若測(cè)試用例可以檢測(cè)出簡(jiǎn)單缺陷,則該測(cè)試用例也易于檢測(cè)到更為復(fù)雜的缺陷.
程序變異的基礎(chǔ)是變異算子集.變異算子是在符合語(yǔ)法規(guī)則前提下,從原有程序生成差別極小程序(變異體)的轉(zhuǎn)換規(guī)則[4].文獻(xiàn)[5]于1987年針對(duì)Fortran77語(yǔ)言首次定義了22種變異算子,這組算子集為后來(lái)的其他編程語(yǔ)言變異算子的設(shè)計(jì)提供了重要的依據(jù).該組變異算子主要分為4種類型,即常量變異、操作法變異、語(yǔ)句變異及變量變異,實(shí)際中每種分類下面都有很多個(gè)變異算子.每種分類下面的變異算子的類型和數(shù)量依賴于針對(duì)的編程語(yǔ)言.
程序變異技術(shù)雖然已有較多研究成果,但其應(yīng)用卻存在分析過(guò)程中計(jì)算開銷過(guò)大的技術(shù)難題.大量變異模型的生成使得測(cè)試分析工作的開銷及其高昂,為此需要有效的優(yōu)化方法來(lái)減小計(jì)算開銷.文獻(xiàn)[6]中首先提出了選擇性變異的方法,即忽略ASR和SVR兩個(gè)可以生成30% ~40%變異體的變異算子.這種策略被稱為“2-selective mutation”,文獻(xiàn)[7]將這種策略延伸為“N-selective mutation”.實(shí)驗(yàn)結(jié)果表明,使用“N-selective mutation”策略后的變異評(píng)分均值仍可以保持較高,并明顯降低了變異體數(shù)量.在以上的實(shí)驗(yàn)研究分析下,文獻(xiàn)[8]將文獻(xiàn)[5]中提出的22種變異算子進(jìn)一步分為了操作數(shù)類算子、表達(dá)式類算子和語(yǔ)句類算子.通過(guò)對(duì)每一類變異算子的分析,最終確定了5個(gè)最為重要的變異算子:ABS算子、AOR算子、LCR算子、ROR算子、UOI算子,實(shí)驗(yàn)結(jié)果表明,使用這5個(gè)變異算子僅將其變異評(píng)分降低了0.5%.文獻(xiàn)[9]中針對(duì)Proteum測(cè)試工具為C語(yǔ)言的變異算子設(shè)計(jì)了優(yōu)化的方法,提出了選擇出充分變異算子集的6條指導(dǎo)策略.即:①考慮能獲得高變異評(píng)分的變異算子.②考慮每個(gè)變異算子類中的一個(gè)算子.③依據(jù)實(shí)驗(yàn)將包含在高效算子中的算子除去.④建立增量策略.⑤考慮能夠在變異評(píng)分上提供增量的變異算子.⑥考慮具有高可信度的算子.
在上述研究分析的基礎(chǔ)上,本文擬在不影響變異評(píng)分的前提下,以上述6條策略為指導(dǎo),通過(guò)對(duì)Simulink變異算子進(jìn)行約簡(jiǎn)優(yōu)化來(lái)大規(guī)模減少變異體數(shù)量,從而減小變異測(cè)試的計(jì)算開銷.
許多航空機(jī)載安全關(guān)鍵軟件已運(yùn)用Simulink/RTW技術(shù)進(jìn)行開發(fā),但仍存在以下問(wèn)題:①仍缺乏完善的測(cè)試充分性度量證明模型的測(cè)試是充分的.不同的軟件測(cè)試人員使用不同的充分性準(zhǔn)則標(biāo)準(zhǔn),沒(méi)有統(tǒng)一的標(biāo)準(zhǔn).②如何自動(dòng)高效生成滿足Simulink模型測(cè)試所需的測(cè)試用例集,仍是一個(gè)亟待解決的問(wèn)題.③雖然已有眾多工具應(yīng)用于模型驅(qū)動(dòng)的軟件開發(fā)過(guò)程領(lǐng)域,但是對(duì)Simulink模型的測(cè)試工具研究尚屬于起步階段.
考慮Simulink環(huán)境特點(diǎn),設(shè)置被測(cè)單位為一個(gè)系統(tǒng)模型,在生成變異模型的過(guò)程中不對(duì)子系統(tǒng)的模塊進(jìn)行變異.這時(shí)子系統(tǒng)類似于代碼中的調(diào)用函數(shù),在以子系統(tǒng)為被測(cè)單位時(shí)再對(duì)其模塊進(jìn)行變異.本文提出了基于程序變異的Simulink模型測(cè)試過(guò)程,如圖1所示.
過(guò)程具體說(shuō)明如下:①用已有的測(cè)試集T執(zhí)行原始Simulink模型P.②根據(jù)設(shè)定好的變異算子生成活躍變異模型L集合.③選取一個(gè)未考慮過(guò)的活躍變異模型M.④選取未執(zhí)行過(guò)的測(cè)試用例t.⑤使用測(cè)試用例t執(zhí)行變異模型M,檢查針對(duì)測(cè)試用例t執(zhí)行M產(chǎn)生的結(jié)果與執(zhí)行P產(chǎn)生的結(jié)果是否相同.若相同則返回步驟④,選取下一測(cè)試用例;若不相同則稱為t殺死了變異模型M,將M添加到被殺死的變異模型D集合中.⑥當(dāng)測(cè)試集T中沒(méi)有測(cè)試用例能將變異模型M殺死時(shí),將M放回到活躍變異模型L中.⑦檢查L(zhǎng)集合是否為空.若不為空,測(cè)試其與原始模型P的等價(jià)性.從L中剔除出等價(jià)變異模型E.⑧計(jì)算測(cè)試用例集T的變異評(píng)分(mutation score).給定集合L,D和E,用SM(T)表示T的變異評(píng)分,則
正如上式所示,一個(gè)測(cè)試集的變異評(píng)分總是介于0~1之間.如果測(cè)試集T能夠殺死除等價(jià)變異模型外的所有變異模型,則|L|=0,變異評(píng)分SM(T)為1,該測(cè)試集T的發(fā)現(xiàn)錯(cuò)誤能力較強(qiáng).反之T不能殺死任何一個(gè)變異模型,則|D|=0,變異評(píng)分SM(T)為0,測(cè)試集T的發(fā)現(xiàn)錯(cuò)誤能力較弱.測(cè)試用例t殺死變異模型為當(dāng)且僅當(dāng)測(cè)試用例t使得變異模型的最終輸出與原模型的最終輸出不同.
圖1 基于程序變異的Simulink模型測(cè)試方法流程Fig.1 Process of Simulink model testing method based on program mutation
Simulink包含很多現(xiàn)成的模塊庫(kù),主要有輸入源庫(kù)、離散及連續(xù)系統(tǒng)庫(kù)、數(shù)學(xué)運(yùn)算庫(kù)及非線性系統(tǒng)庫(kù).根據(jù)以上通用的模塊庫(kù),考慮Simulink建模過(guò)程中的典型錯(cuò)誤,文獻(xiàn)[10]中首次研究了Simulink模型的故障模型,包括類型故障、變量故障、常量故障、連續(xù)離散時(shí)間故障、語(yǔ)句故障和表達(dá)式故障,并基于上述故障模型,針對(duì)Simulink模型提出了一組變異算子集.不同于傳統(tǒng)程序變異的算子,該組算子集針對(duì)Simulink中常用的不同模塊進(jìn)行變異,如Switch模塊的門限發(fā)生變異、積分及延時(shí)模塊的變異.文中將其提出的變異算子集應(yīng)用于一個(gè)二次方程模型的測(cè)試過(guò)程,通過(guò)計(jì)算4組測(cè)試用例集的變異評(píng)分,從而選擇出最優(yōu)用例集.文獻(xiàn)[10]針對(duì)一組典型Simulink模型設(shè)計(jì)了變異測(cè)試實(shí)驗(yàn),本文對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行了統(tǒng)計(jì).該實(shí)驗(yàn)共生成59個(gè)變異模型,其中,TRO算子生成的變異模型數(shù)量最多,且該實(shí)驗(yàn)的等價(jià)變異模型全部由TRO算子產(chǎn)生,根據(jù) N-selective mutation策略,本文首先將TRO算子忽略,不僅有效減少生成27.11%的變異模型,還可以減少等價(jià)變異模型的生成,從而大幅降低測(cè)試開銷.隨后的實(shí)驗(yàn)驗(yàn)證了優(yōu)化方案的必要性.
基于充分變異算子的指導(dǎo)準(zhǔn)則,上述算子集可以分為如下5類:數(shù)據(jù)類型變異(TRO)、變量變異(VCO,VNO)、常量變異(CCO,CRO,DCO)、Switch模塊變異(SCO,SSO)和表達(dá)式變異(ROE,AOR,ASR,LOR).考慮文獻(xiàn)[9]中的6 條變異算子優(yōu)化策略,依次對(duì)每一類里的變異算子進(jìn)行分析.本文選擇出6種重要的變異算子:VCO,CRO,SCO,DCO,ROR,AOR.圖2 是一個(gè)包含基本模塊的Simulink模型,其主要功能是判斷二次方程解的類型,通過(guò)對(duì)該模型的變異測(cè)試實(shí)驗(yàn)表明,以上6種變異算子組成的針對(duì)Simulink模型的改進(jìn)變異算子集比原有的變異算子集,在變異模型生產(chǎn)數(shù)量和變異評(píng)分方面都有進(jìn)步.
在圖2的二次方程模型解類型檢驗(yàn)?zāi)P椭?,本文選擇了6組測(cè)試用例集(每組包含6個(gè)測(cè)試用例),并執(zhí)行于由上面6種算子生成的29個(gè)變異模型,得出了如表1所示的實(shí)驗(yàn)結(jié)果.本文中變異模型均通過(guò)修改模塊參數(shù)以實(shí)現(xiàn)算子對(duì)模型的變異操作.
從表1中的結(jié)果可看出,改進(jìn)后的變異算子集能夠顯著減少變異模型的數(shù)量,并且略微提高了測(cè)試用例集的變異評(píng)分.由于其中隨機(jī)生成的測(cè)試用例的廣泛性不夠,測(cè)試用例集T3的變異評(píng)分偏低.對(duì)于未被殺死的非等價(jià)變異模型,在第4節(jié)中將介紹基于搜索的用例生成方法,在改進(jìn)變異算子集的基礎(chǔ)上,主要關(guān)注于如何生成能夠殺死上面提到的變異模型的測(cè)試用例.
圖2 二次方程式模型Fig.2 Quadratic model
表1 用例集的測(cè)試結(jié)果Table1 Testing results of test sets
由圖1可看出,當(dāng)用例集T的測(cè)試用例都不能殺死變異模型,則需要向T中添加用例,其中測(cè)試用例生成是最花費(fèi)人力和時(shí)間的過(guò)程.文獻(xiàn)[11]中提出了一個(gè)自動(dòng)化的測(cè)試用例生成框架,該框架采用搜索算法為結(jié)構(gòu)化的模型生成了測(cè)試用例,實(shí)驗(yàn)證明該組用例能夠達(dá)到較高的結(jié)構(gòu)化覆蓋準(zhǔn)則,但是該實(shí)驗(yàn)僅選用了3個(gè)變異算子,對(duì)于變異測(cè)試的充分性不足.本文通過(guò)采用第3節(jié)中的改進(jìn)算子集,更真實(shí)地模擬了Simulink仿真過(guò)程中可能出現(xiàn)的錯(cuò)誤.文獻(xiàn)[12]研究了基于搜索的Simulink模型測(cè)試數(shù)據(jù)生成法,針對(duì)Simulink模型復(fù)雜性的特點(diǎn),采用模擬退火算法對(duì)目標(biāo)函數(shù)求優(yōu).但是,滿足結(jié)構(gòu)化覆蓋標(biāo)準(zhǔn)的測(cè)試用例有時(shí)并不能夠發(fā)現(xiàn)Simulink模型中的一些錯(cuò)誤,如邏輯模塊故障、Switch模塊故障等.由于結(jié)構(gòu)化覆蓋標(biāo)準(zhǔn)下的測(cè)試用例僅能保證覆蓋特定路徑,如果上述模塊發(fā)生故障(如設(shè)計(jì)人員將Switch模塊的門限“>0”錯(cuò)寫為“>=0”)的情況下,該用例仍然可覆蓋該特定路徑,則該故障不能被發(fā)現(xiàn).因此如何高效地從Simulink模型產(chǎn)生符合高變異評(píng)分的測(cè)試用例是本節(jié)研究的重點(diǎn).
基本思想是:反復(fù)執(zhí)行被測(cè)程序,根據(jù)執(zhí)行過(guò)程中搜集到的數(shù)據(jù)判斷當(dāng)前輸入滿足特定測(cè)試需求的程度.借助反饋機(jī)制,逐漸調(diào)整輸入直到滿足測(cè)試需求為止.本文考慮對(duì)于指定路徑上不滿足要求的分支,將測(cè)試數(shù)據(jù)生成問(wèn)題轉(zhuǎn)化為函數(shù)極小化問(wèn)題,其重點(diǎn)在于如何選擇合適的目標(biāo)函數(shù)和函數(shù)極小化方法.
根據(jù)文獻(xiàn)[13]提出的代價(jià)函數(shù),本文設(shè)計(jì)了代價(jià)函數(shù)定義基本規(guī)則和變異模型的代價(jià)函數(shù)構(gòu)造規(guī)則,其中基本規(guī)則如表2所示.
表2 代價(jià)函數(shù)Table2 Cost functions
表2中,K表示當(dāng)斷言不滿足時(shí)的代價(jià)函數(shù)值,可用于比較各斷言之間的差距.例如,對(duì)于斷言來(lái)說(shuō)A<5,A=6比A=10更接近于該斷言,A=6的代價(jià)函數(shù)值更小.為了構(gòu)造Simulink不同模塊之間的代價(jià)函數(shù),文獻(xiàn)[14]中提出為了使得原模型與變異模型的輸出產(chǎn)生差異,必須滿足兩個(gè)條件:
1)變異模塊的輸出必須發(fā)生改變;
2)該輸出的改變必須影響到整個(gè)模型的輸出.
一般模塊變異后,條件1能夠滿足.但是條件2則需要研究模型的結(jié)構(gòu),并保證從變異模塊到系統(tǒng)輸出之間的路徑上,每個(gè)模塊的輸出與原模型的不同.如果系統(tǒng)模型包含多個(gè)輸出,則至少1個(gè)輸出不同就認(rèn)為被殺死.針對(duì)本文提出的優(yōu)化變異算子集,不同位置的不同類型變異均有不同的代價(jià)函數(shù),下面將逐一介紹代價(jià)函數(shù)的構(gòu)造.
4.1.1 常量模塊與變量模塊
如果模塊的變異類型為常量變異與變量變異,則其代價(jià)函數(shù)應(yīng)該為:C=CCV+CA.其中,CCV為常量模塊與變量模塊變異后需不同于原模塊的代價(jià),CA為該模塊變異后其改變需影響到整個(gè)模型的輸出的代價(jià).
4.1.2 Switch 模塊
圖3(a)代表受影響的信號(hào)輸入Switch模塊的第1或第3輸入,此時(shí)其代價(jià)函數(shù)應(yīng)為:C=CD+CS+CA.其中,CD表示受影響的信號(hào)需不同于原模型中信號(hào)的代價(jià),CS表示若受影響的信號(hào)輸入Switch模塊的第1輸入時(shí),第2輸入信號(hào)達(dá)到門限的代價(jià);若受影響的信號(hào)輸入Switch模塊的第3輸入時(shí),第2輸入信號(hào)未達(dá)到門限的代價(jià).
圖3(b)代表受影響的信號(hào)輸入Switch模塊的第2輸入,此時(shí)其代價(jià)函數(shù)應(yīng)為:C=CD+(CS1S3+)∨(C′S1S3+)+CA.其中,CS1S3為原Switch模塊的第3輸入與變異Switch模塊的第1輸入不同的代價(jià),C′S1S3為原Switch模塊的第1輸入與變異Switch模塊的第3輸入不同的代價(jià).
圖3 受變異的信號(hào)輸入Switch模塊Fig.3 Mutated signal input Switch blocks
4.1.3 表達(dá)式模塊
如果模塊的變異算子為ROR,AOR或LOR時(shí),則其代價(jià)函數(shù)應(yīng)為:C=CP≠M(fèi)+CA.其中,CP≠M(fèi)為輸入經(jīng)過(guò)變異表達(dá)式操作的輸出值不同于原模塊的代價(jià).
圖4(a)代表受影響的信號(hào)輸入表達(dá)式模塊的任意輸入端口,其代價(jià)函數(shù)為:C=CD+CP≠M(fèi)+CA.圖4(b)代表受影響的信號(hào)輸入兩個(gè)表達(dá)式模塊的任意輸入端口,其代價(jià)函數(shù)為:C=CD+(CO1∨CO2),其中,CO1=CP1≠M(fèi)1+CA1,CO2=CP2≠M(fèi)2+CA2.
圖4 受變異的信號(hào)輸入表達(dá)式模塊Fig.4 Mutated signal input expression blocks
結(jié)合表2中的代價(jià)函數(shù)構(gòu)造規(guī)則,可以遞歸地從變異模塊到最終輸出來(lái)計(jì)算,從一組隨機(jī)測(cè)試用例中搜索出能夠殺死該變異模型的測(cè)試用例的代價(jià)函數(shù).假設(shè)圖3中模型受變異算子ROR影響生成變異模型,其中Compare To Zero模塊的“>=”被替換為“<=”.如果該變異模型在圖1中步驟⑤中沒(méi)有被殺死,則其代價(jià)函數(shù)應(yīng)為
在4.1節(jié)中將測(cè)試用例生成問(wèn)題轉(zhuǎn)化為了代價(jià)函數(shù)值極小化問(wèn)題的基礎(chǔ)上,采用模擬退火算法來(lái)解決代價(jià)函數(shù)極小化問(wèn)題[15].首先,模擬退火算法能夠跳出初始輸入的局部最優(yōu)解,搜索到目標(biāo)輸入的穩(wěn)定性較高,對(duì)Simulink模型中各種復(fù)雜情況具有更高適應(yīng)性[12].另外,由于從R2009a版本開始,Matlab自帶的優(yōu)化工具箱集成了模擬退火算法,因此用Matlab環(huán)境來(lái)驗(yàn)證本文的測(cè)試數(shù)據(jù)生成算法方便易行.在第5節(jié)中將通過(guò)典型實(shí)例來(lái)簡(jiǎn)要介紹該算法的應(yīng)用和變現(xiàn).
本節(jié)通過(guò)設(shè)計(jì)4組圖2中模型的變異模型來(lái)驗(yàn)證第4節(jié)的測(cè)試數(shù)據(jù)生成方法.表3為圖2中模型的4個(gè)變異模型,具體描述如表3所示.
表3 實(shí)驗(yàn)變異模型描述Table3 Description of mutated models in experiment
這里設(shè)置代價(jià)函數(shù)的K=1,由定義可知,目標(biāo)函數(shù)的最優(yōu)值為0.即可使目標(biāo)函數(shù)為0的測(cè)試輸入能夠殺死對(duì)應(yīng)的變異模型.對(duì)于系統(tǒng)的代價(jià)函數(shù)及以上4組變異模型的目標(biāo)函數(shù),可用Matlab腳本編寫.用Matlab編寫的測(cè)試數(shù)據(jù)生成腳本如下:
ObjectiveFunction=@obj_function;%目標(biāo)函數(shù)句柄設(shè)定
startingPoint=[010];%初始值設(shè)定
lb=[-10-10-10];%輸入值下限
ub=[101010];%輸入值上限
options=saoptimset(‘InitialTemperature’,1000,‘TemperatureFcn’,@temperatureexp,‘ReannealInterval’,500,‘PlotFcns’,{@saplotbestx,@saplotbestf,@saplotx,@saplotf});% 模擬退火算法參數(shù)設(shè)定
[x,fval,exitFlag,output] =simulannealbnd(ObjectiveFunction,startingPoint,lb,ub,options);%執(zhí)行模擬退火算法
這里設(shè)置模擬退火算法的終止條件為目標(biāo)函數(shù)達(dá)到0,起始溫度為1000,冷卻率為0.95.通過(guò)分別編寫目標(biāo)函數(shù),執(zhí)行算法生成測(cè)試數(shù)據(jù),運(yùn)行上述腳本,4組模型的執(zhí)行結(jié)果如圖5所示.最優(yōu)目標(biāo)函數(shù)表示在橫軸的迭代次數(shù)下得到縱軸的目標(biāo)函數(shù)值(最優(yōu)目標(biāo)函數(shù)為0),最優(yōu)變量值表示當(dāng)目標(biāo)函數(shù)達(dá)最優(yōu)時(shí)的測(cè)試數(shù)據(jù).
圖5 搜索迭代次數(shù)與最優(yōu)變量輸入值Fig.5 Searching iteration number and optimal input value of variables
由圖5可看出,通過(guò)采用模擬退火算法經(jīng)過(guò)一定迭代次數(shù)均可使目標(biāo)函數(shù)達(dá)到最優(yōu)值,即可以找到需要的測(cè)試數(shù)據(jù).除第1組的迭代次數(shù)為761次外,另3組的平均迭代次數(shù)不超過(guò)30次,就可以找到滿足代價(jià)函數(shù)為0的測(cè)試輸入.因此,當(dāng)變異模型不能被現(xiàn)有測(cè)試用例殺死而需要額外添加測(cè)試用例時(shí),使用本文方法能夠有效實(shí)現(xiàn).
本文基于程序變異技術(shù)提出了Simulink模型的變異測(cè)試過(guò)程和一組改進(jìn)變異算子集,并相應(yīng)設(shè)計(jì)了一種基于搜索的Simulink模型變異測(cè)試用例生成方法,經(jīng)實(shí)驗(yàn)驗(yàn)證表明:
1)該組改進(jìn)變異算子集能夠減少變異模型的數(shù)量,并且保證測(cè)試用例集的變異評(píng)分基本不變;
2)對(duì)于Simulink基本模塊庫(kù)中的不同變異模塊,基于搜索的Simulink模型變異測(cè)試用例生成方法能夠快速準(zhǔn)確地生成滿足測(cè)試要求的測(cè)試用例.
今后研究將從以下幾個(gè)方面展開:本文采用手工方式構(gòu)造實(shí)驗(yàn)變異模型的代價(jià)函數(shù),未實(shí)現(xiàn)代價(jià)函數(shù)構(gòu)造自動(dòng)化.僅考慮了Simulink中的基本模塊庫(kù),對(duì)于其他特定領(lǐng)域的模塊庫(kù),其變異算子的設(shè)計(jì)有待繼續(xù)研究.等價(jià)變異模型判定、子系統(tǒng)模塊處理等問(wèn)題的優(yōu)化,也是未來(lái)值得研究的方向.
References)
[1] Molina J M,Pan X,Grimm C,et al.A framework for modelbased design of embedded systems for energy management[C]//Modeling and Simulation of Cyber-Physical Energy Systems(MSCPES).Piscataway,NJ:IEEE,2013:1-6.
[2] He N,Rümmer P,Kroening D.Test-case generation for embedded Simulink via formal concept analysis[C]//Proceedings of the 48th Design Automation Conference.New York:ACM,2011:224-229.
[3] DeMillo R A,Lipton R J,Sayward F G.Hints on test data selection:help for the practicing programmer[J].Computer,1978,11(4):34-41.
[4] Jia Y,Harman M.An analysis and survey of the development of mutation testing[J].IEEE Transactions on Software Engineering,2011,37(5):649-678.
[5] King K N,Offutt A J.A fortran language system for mutationbased software testing[J].Software:Practice and Experience,1991,21(7):685-718.
[6] Mathur A P.Performance,effectiveness,and reliability issues in software testing[C]//15th Annual International Computer Software and Applications Conference.New York:IEEE,1991:604-605.
[7] Offutt A J,Rothermel G,Zapf C.An experimental evaluation of selective mutation[C]//Proceedings of the 15th International Conference on Software Engineering.Piscataway,NJ:IEEE Computer Society Press,1993:100-107.
[8] Offutt A J,Lee A,Rothermel G,et al.An experimental determination of sufficient mutant operators[J].ACM Transactions on Software Engineering and Methodology(TOSEM),1996,5(2):99-118.
[9] Barbosa E F,Maldonado J C,Vincenzi A M R.Toward the determination of sufficient mutant operators for C[J].Software Testing,Verification and Reliability,2001,11(2):113-136.
[10] Binh N T.Mutation operators for Simulink models[C]//Knowledge and Systems Engineering(KSE),2012 Fourth International Conference on.Piscataway,NJ:IEEE,2012:54-59.
[11] Zhan Y,Clark J.Search based automatic test-data generation at an architectural level[C]//Genetic and Evolutionary Computation-GECCO 2004.Berlin:Springer,2004:1413-1424.
[12] 鄧紹鵬,楊志義,王宇英.基于搜索的Simulink測(cè)試數(shù)據(jù)生成[J].計(jì)算機(jī)應(yīng)用研究,2012,29(7):2527-2530.Deng S P,Yang Z Y,Wang Y Y.Search-based test-data generation for Simulink[J].Application Research of Computers,2012,29(7):2527-2530(in Chinese).
[13] Bottaci L.Predicate expression cost functions to guide evolutionary search for test data[C]//Genetic and Evolutionary Computation—GECCO 2003.Berlin:Springer,2003:2455-2464.
[14] Zhan Y,Clark J A.Search-based mutation testing for Simulink models[C]//Proceedings of the 2005 Conference on Genetic and Evolutionary Computation.New York:ACM,2005:1061-1068.
[15] McMinn P.Search-based software test data generation:a survey[J].Software Testing,Verification and Reliability,2004,14(2):105-156.