亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于特征模型和遺傳算法的測試用例自動(dòng)生成?

        2019-12-27 06:32:30江志強(qiáng)王金波王曉華
        關(guān)鍵詞:測試用例遺傳算法定義

        江志強(qiáng) 王金波 王曉華

        (中國科學(xué)院空間應(yīng)用工程與技術(shù)中心 北京 100094)

        1 引言

        測試是軟件開發(fā)的關(guān)鍵一環(huán),測試用例生成是測試過程的重要環(huán)節(jié)。測試用例是否有效、快速地生成,影響了整個(gè)測試的效率[1]。一個(gè)好的測試用例集,能以較低的測試開銷保障較高的測試性能[2]?,F(xiàn)有常見的測試用例生成方法有基于UML模型[3],向量機(jī)[4]等方法。它們注重測試性能的同時(shí)并不能有效減小測試開銷。因此,本文選用了特征模型。特征模型作為一種功能性的模型,可對功能模塊實(shí)現(xiàn)高可復(fù)用性,從而有效降低測試開銷。

        當(dāng)前,特征模型的應(yīng)用主要運(yùn)用于產(chǎn)品線領(lǐng)域的測試開發(fā)。它使用特征表征功能,同一產(chǎn)品線中不同的產(chǎn)品以不同的特征組合方式表達(dá),而每個(gè)特征又通過UML等模型方法建立測試用例[5]。因此,這些產(chǎn)品的測試用例,是通過復(fù)用這些選擇特征的測試用例進(jìn)行組合得到。與之相比,本文對被測產(chǎn)品進(jìn)行特征建模,并將特征與被測件輸入關(guān)聯(lián),不需要將特征與其他模型相結(jié)合。由于使用組合測試策略能夠進(jìn)一步提高復(fù)用率[6],因此本文采用組合策略對特征模型進(jìn)行選擇,得到較優(yōu)的測試用例集。

        2 特征模型基本概念

        特征模型[7]是在產(chǎn)品線分析的領(lǐng)域分析中誕生的,通常被視為一個(gè)產(chǎn)品與其它產(chǎn)品不同的地方,它關(guān)注的是產(chǎn)品系列中的需求和功能,并且通過需求分析構(gòu)建產(chǎn)品。

        特征模型被視作一個(gè)四元組[8]:(F,?,λ,Φ)。其中F代表一組有限的特征節(jié)點(diǎn),?代表各特征節(jié)點(diǎn)的關(guān)系,通常是以樹狀圖的形式體現(xiàn),λ代表了特征的四類分配規(guī)則,分別是必選特征mandato?ry和三類非必須的特征:可選擇特征optional,多選一特征alternative,和至少選取一個(gè)的特征or規(guī)則。Φ則代表了特征節(jié)點(diǎn)集合中可能的約束,通常包括兩類約束條件:其一是依賴性約束require,也就是某個(gè)特征的存在必須以另一個(gè)特征存在為前提;其二是互斥性約束exclude,也就是兩者不能同時(shí)出現(xiàn)在同一個(gè)產(chǎn)品中。

        圖1 工資計(jì)算器的特征模型

        本文用于說明的實(shí)例是一個(gè)網(wǎng)頁應(yīng)用工資計(jì)算器 SalaryCalculator(SC)[9]。它的特征模型如圖 1所示。其中,根特征SC有三個(gè)功能,對應(yīng)三個(gè)特征:分別是稅率計(jì)算TaxCalculator(TC),繳納基數(shù)PayBase(PB)和住房公積金計(jì)算 HouseFund(HF)。其中,PB特征含有兩個(gè)不同的特征:保險(xiǎn)基數(shù)InsuranceBase(IB)和公積金基數(shù)HouseBase(HB)。它們都是optional規(guī)則特征。而HF下有兩個(gè)滿足or規(guī)則的特征:代表基本公積金的Base和補(bǔ)充公積金的Supply。

        3 模型構(gòu)建

        3.1 模型細(xì)化

        圖1中特征都對應(yīng)了被測軟件的一個(gè)功能模塊。相對于傳統(tǒng)的特征模型,對每個(gè)特征不再建立諸如UML等對應(yīng)的實(shí)體關(guān)系模型。而是將特征繼續(xù)細(xì)化,對應(yīng)測試的輸入值,建立子特征。

        特征與輸入之間存在相互映射的關(guān)系。對特征的測試是通過一組輸入得到相應(yīng)的反饋,根據(jù)反饋結(jié)果檢查特征對應(yīng)的功能是否符合預(yù)期[10],因此特征與輸入就存在相互影響。這種關(guān)系通常都不是一對一的關(guān)系。子特征則是特征的一部分,指該功能在部分輸入下得到相同反饋或者同一性質(zhì)的反饋的部分功能。根據(jù)特征與輸入的關(guān)系,子特征的建立按如下方式進(jìn)行。

        第一,如果一個(gè)特征中受多個(gè)輸入影響,則每一個(gè)輸入都作為該特征的一個(gè)子特征。這些子特征會根據(jù)特征分配規(guī)則,被賦予四類分配規(guī)則的中的一種。

        第二,如果一個(gè)輸入影響多個(gè)特征,該輸入受到特征組合的影響,其生成通過后文特征組合實(shí)現(xiàn)。

        第三,當(dāng)特征或子特征中只含有一個(gè)輸入且反之亦然時(shí),此時(shí)分為兩類情況:

        第1類:布爾型特征:該特征是一個(gè)布爾型變量。具體表現(xiàn)為此輸入只會對特征對應(yīng)的子功能產(chǎn)生兩種互斥的狀態(tài)。例如開關(guān)的開啟和關(guān)閉;該特征自身就是其子特征。在特征選擇中,選擇與不選擇兩個(gè)狀態(tài)分別對應(yīng)其互斥的兩個(gè)結(jié)果,并根據(jù)其選擇狀態(tài)表征其測試輸入值。

        如圖1中的Base,Supply特征,它們各自都只有一個(gè)輸入,表現(xiàn)為選項(xiàng)框,因此只有選擇和非選擇兩個(gè)輸入狀態(tài)表示該功能是否激活。而IB和HB,它們也是選項(xiàng)框輸入,選擇與非選擇分別代表該特征輸入值為系統(tǒng)設(shè)置的默認(rèn)值或最小值兩個(gè)狀態(tài)。這四個(gè)特征符合布爾型特征。

        第2類:非布爾型特征:該特征與第一類不同,隨著其對應(yīng)輸入值的變化,子功能反饋兩種以上的結(jié)果。因此,該特征可以視作以分段函數(shù),輸入值變化區(qū)間是該分段函數(shù)的定義域,可以劃分為多個(gè)子區(qū)間,不同輸入?yún)^(qū)間對應(yīng)分段函數(shù)的不同的子函數(shù),每個(gè)子函數(shù)都可被視作一個(gè)子特征。這些子特征之間是互斥的,對應(yīng)了特征模型中的Alternative特征。在測試用例中,該類子特征可以使用邊界值或者等價(jià)類直接表示。在特征選擇中,被選中的子特征的值作為其父節(jié)點(diǎn)的值輸出,沒有被選擇的其他子特征的值被舍棄。

        例如圖1中的TC特征,它的輸入是一個(gè)數(shù)值,隨著數(shù)值的變化,對應(yīng)的計(jì)算稅率的函數(shù)會發(fā)生變化,因此符合非布爾型特征,可以按照測試文檔說明按稅率變化分為圖2中TC下的8個(gè)子特征,分別是無稅率noTax,第一等稅率Tax_1,直到第七等Tax_7。這些子特征按照非布爾型特征規(guī)則,應(yīng)該滿足optional規(guī)則。

        將特征模型通過樹形圖表示,在細(xì)分子特征之后,每個(gè)葉子節(jié)點(diǎn)都對應(yīng)一個(gè)值。而通過選取葉子節(jié)點(diǎn),就可以得到一個(gè)特征組合并形成測試用例[11]。因此在實(shí)際運(yùn)用中,只選取所有的葉子節(jié)點(diǎn)作為全部特征列表。為了描述測試用例生成,首先有以下定義:

        圖2 建立子特征的測試特征模型

        定義1:特征模型中所有的葉節(jié)點(diǎn)特征構(gòu)成的集合被稱為特征列表(Feature List,F(xiàn)L)。

        如圖1中,所有葉子節(jié)點(diǎn)構(gòu)成的集合{noTax,Tax_1,Tax_2,Tax_3,Tax_4,Tax_5,Tax_6,Tax_7,HB,IB,base,supply}就是一個(gè)特征列表FL。

        定義2:特征配置(FeatureConfigure,fc)是一組滿足特征模型規(guī)范和約束的特征組合,定義為fc={sel,},其中 sel?FL,sel代表該選定的特征,而都是未選定的特征,它們都是FL的子集,

        如圖2中,存在一特征配置fc1={{Tax_1,IB,base},{noTax,Tax_2,Tax_3,Tax_4,Tax_5,Tax_6,Tax_7,HB,supply}},其中 fc1.sel={Tax_1,IB,base},代表了特征 Tax_1,IB 和 base被選取,={noTax,Tax_2,Tax_3,Tax_4,Tax_5,Tax_6,Tax_7,HB,supply},代表這些特征未被選擇。因?yàn)樗械娜~子節(jié)點(diǎn)都對應(yīng)一個(gè)值,它們根據(jù)選取或未選取的狀態(tài)返回相應(yīng)的值,或者舍棄該子特征,返回值會根據(jù)特征和輸入的相互關(guān)系反向獲得測試用例的輸入,并根據(jù)測試需求得到預(yù)期結(jié)果,組成測試用例[12]。因此一個(gè)特征組合就能對應(yīng)一個(gè)測試用例。

        定義3:特征配置fc構(gòu)成的集合被稱為特征配置集(Feature Configure Set)FCS。其中,特征列表FL中滿足特征模型規(guī)范和約束的全部特征配置構(gòu)成的集合被稱為完全特征配置覆蓋集。

        完全特征配置覆蓋集代表了該被測件所有可能的特征配置形式,即全部的測試路徑。但一般來說這是一個(gè)較大的值。例如圖2中,12個(gè)葉節(jié)點(diǎn)就構(gòu)成了96個(gè)特征配置。

        3.2 組合測試

        完全特征配置覆蓋通常意味著龐大的測試用例集和大量測試開銷。而好的測試用例集,是選取一個(gè)較小的特征配置集合,實(shí)現(xiàn)特征覆蓋。測試用例的生成就轉(zhuǎn)化為了特征選取的問題。本文采用組合測試策略解決該問題[13],并通過遺傳算法實(shí)現(xiàn)。研究表明,在特征模型中,采用組合測試的方式能夠?qū)崿F(xiàn)更小的組合配置,并且有更好的檢錯(cuò)能力以保障其測試性能[14]。

        本文在特征模型中采用二元組合策略實(shí)現(xiàn)特征配置,相關(guān)定義如下:

        定義4:二元組合配置是一個(gè)二元組c,定義為的特征和非選擇的特征,并且有

        相對于一般特征模型只覆蓋全部特征的方法,二元組合的特征配置集合需要對RC進(jìn)行完全覆蓋。由前文可知,測試用例對應(yīng)的一個(gè)特征組合。目標(biāo)測試用例集所滿足的特征配置集應(yīng)該實(shí)現(xiàn)對RC全覆蓋。這樣的特征配置集合被稱為結(jié)果集合(Result Set,RS)。為了定義RS,首先引入定義5。

        因此結(jié)果集合RS如下定義:

        定義6:存在一個(gè)特征配置集合CFS={fc1,fc2,… fcm},其中 ?fci∈CFS,fci的二元覆蓋集合為cfci,對所有 fsi∈CFS,使二元組合覆蓋集RC=該 CFS被稱為結(jié)果集合(Result Set,RS)。其中,在所有的RS中,m最小的RS是最優(yōu)的結(jié)果集合。

        因此測試用例的生成就從組合特征和選取特征轉(zhuǎn)化為尋找最優(yōu)的RS,也就是尋找一個(gè)足夠小的特征配置集合,使得其能夠?qū)崿F(xiàn)對RC的完全覆蓋。

        4 算法描述

        一般來說,組合測試覆蓋問題是一個(gè)NP難問題,常見的解法有貪心算法和啟發(fā)式算法[15]。前者雖然運(yùn)算速度快,但是作為一種近似算法,貪心算法只是近似解。而以遺傳算法為代表的啟發(fā)式算法相對于貪心算法可以跳出局部最優(yōu)陷阱,能夠得到更好的近似解。因此文本采取了遺傳算法[16]實(shí)現(xiàn)組合測試策略。計(jì)算流程如圖3所示。

        圖3 基于組合測試的遺傳算法框架

        在初始化RC之后,開始對組合測試進(jìn)行遺傳算法運(yùn)算。每一次遺傳算法初始種群都采用隨機(jī)選擇產(chǎn)生。并不斷調(diào)整適應(yīng)度函數(shù)尋找最優(yōu)解。本文中適應(yīng)度函數(shù)主要有兩部分構(gòu)成。

        第一項(xiàng):判斷個(gè)體是否符合特征模型規(guī)則。所有不符合特征需求的個(gè)體都會被淘汰,在遺傳中被遺棄;

        第二項(xiàng):判斷個(gè)體對當(dāng)前RC的覆蓋情況。RC的覆蓋率再每一次輸出一個(gè)最優(yōu)用例的后都收到一個(gè)反饋,對當(dāng)前的RC進(jìn)行修正。其中每個(gè)個(gè)體的RC覆蓋率RCcover計(jì)算如下:

        其中,RCcover代表RC覆蓋率值。此外,三個(gè)覆蓋集合被定義,分別是所有的二元組合覆蓋集AllCover,已經(jīng)被覆蓋的集合RubCover,有效地覆蓋集合 VaildCover;其中 AllCover=RubCover∪ Vaild?Cover;RubCover∩ VaildCover=? ;每個(gè)個(gè)體所包含的二元組合覆蓋定義為ChroCover;

        根據(jù)上述定義,式(1)被修改為

        每個(gè)個(gè)體的適應(yīng)度函數(shù)通過上面兩個(gè)項(xiàng)確定,因此,在每進(jìn)行一次遺傳算法后,選取一個(gè)適應(yīng)度最高的個(gè)體,該個(gè)體是一個(gè)特征配置fc,它是當(dāng)前種群中擁有最高RC覆蓋率的個(gè)體。將其保存在結(jié)果集合RS中,并且從RC中刪去該最優(yōu)解所覆蓋的二元組合。經(jīng)過多次運(yùn)算,當(dāng)RC變?yōu)榭占臅r(shí)候,意味著RC已經(jīng)被完全覆蓋,此時(shí)得到的RS就是實(shí)現(xiàn)了對RC的完全覆蓋的用例集,是通過遺傳算法求得的最優(yōu)解。

        在運(yùn)算結(jié)束以后,最終得到的一個(gè)輸出結(jié)果是一個(gè)由特征配置fc構(gòu)成的集合FC,F(xiàn)C的所有元素都是相互獨(dú)立且不相關(guān)的。根據(jù)前文中在子特征分解中所述,對每一個(gè)特征組合,都可按照其對應(yīng)的功能關(guān)系和特征模型關(guān)系反向得到相應(yīng)的被測軟件輸入數(shù)據(jù)以及期望結(jié)果,該輸入數(shù)據(jù)和期望結(jié)果構(gòu)成測試用例,進(jìn)而獲得所需要的測試用例集。

        5 實(shí)驗(yàn)驗(yàn)證

        為應(yīng)用本文中提出的測試用例自動(dòng)生成的設(shè)計(jì)方法,本文對三個(gè)被測系統(tǒng)進(jìn)行了運(yùn)用,其中第一個(gè)被測件SalaryCalculator是前文特征模型圖建立的被測系統(tǒng),該系統(tǒng)是一個(gè)運(yùn)算模塊,它擁有一個(gè)數(shù)字輸入和四個(gè)參數(shù)調(diào)節(jié)項(xiàng),包含12個(gè)特征;第二個(gè)被測件Blog[17]是另一個(gè)有一個(gè)輸入項(xiàng)和多個(gè)可選擇組合的被測項(xiàng)目,包含18個(gè)特征;第三個(gè)被測件WebLogin[18]是一個(gè)有兩個(gè)輸入項(xiàng)和多個(gè)可選組合的被側(cè)項(xiàng)目,包含25個(gè)特征。三個(gè)被測件都被注入了10個(gè)錯(cuò)誤。

        由于遺傳算法在產(chǎn)生初代種群的時(shí)候采取的是隨機(jī)生成,因此我們對每個(gè)被測件進(jìn)行10次運(yùn)算,將其反映在表1中。

        表1中,pp是該測試用例覆蓋全部測試用例的比例,全部測試用例數(shù)量是窮舉所有滿足特征模型的特征配置得到。其中,SalaryCalculator被測件一共有96個(gè)測試用例,Blog被測件有55520個(gè)測試用例,WedLogin被測件包含451584個(gè)測試用例。從表1中可得,三個(gè)被測件均以較小的開銷實(shí)現(xiàn)二元組合的覆蓋,而且錯(cuò)誤的驗(yàn)證率都在70%以上,尤其是后兩項(xiàng)產(chǎn)品,它們相對于第一個(gè)被測軟件,全路徑分支的測試用例數(shù)更大,但是生成的最小用例集合更小,而且保持了較高的錯(cuò)誤檢測率,分別有87.8%和94.4%。因此,可以驗(yàn)證得到,本文提出的測試用例自動(dòng)生成方法能夠大幅度降低了測試開銷,也可以保持一個(gè)高效的錯(cuò)誤檢測率。

        表1 被測系統(tǒng)測試用例生成表

        Size為生成的測試用例集大??;pp為測試用例集對全部測試用例的比例。

        Fault為發(fā)現(xiàn)的錯(cuò)誤;FP:檢查錯(cuò)誤的百分比=發(fā)現(xiàn)的錯(cuò)誤/注入的總錯(cuò)誤。

        6 結(jié)語

        本文提出的基于特征模型的組合測試用例自動(dòng)生成,結(jié)合了當(dāng)前特征模型測試和組合測試方法的優(yōu)勢,是一種模型簡易易用,可靠性強(qiáng)的測試方法。該方法繼承了特征模型的分析方法,并在此基礎(chǔ)上將特征層次深入到測試數(shù)據(jù)輸入;組合測試和特征模型的結(jié)合進(jìn)一步優(yōu)化測試空間。在實(shí)驗(yàn)中,也驗(yàn)證了該方法能有效降低測試開銷,保障測試性能,生成良好的測試用例集。

        但是遺傳算法隨著迭代次數(shù)的增加,在后期容易出現(xiàn)收斂速度下降的問題,延長了測試用例生成的時(shí)間。當(dāng)前在已經(jīng)有很多學(xué)者對加快遺傳算法收斂速度進(jìn)行了研究[17],在未來的工作中,可以考慮這些算法改進(jìn)策略,優(yōu)化測試用例生成速度。

        猜你喜歡
        測試用例遺傳算法定義
        基于SmartUnit的安全通信系統(tǒng)單元測試用例自動(dòng)生成
        基于混合遺傳算法的回歸測試用例集最小化研究
        基于自適應(yīng)遺傳算法的CSAMT一維反演
        一種基于遺傳算法的聚類分析方法在DNA序列比較中的應(yīng)用
        基于遺傳算法和LS-SVM的財(cái)務(wù)危機(jī)預(yù)測
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        基于改進(jìn)的遺傳算法的模糊聚類算法
        基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
        修辭學(xué)的重大定義
        山的定義
        国产又黄又猛又粗又爽的a片动漫| 亚洲国产丝袜久久久精品一区二区 | 骚货人妻视频中文字幕| 亚洲综合一区二区三区天美传媒| 国产欧美日韩精品专区| 亚洲国产一区二区三区亚瑟| 青青青国产免A在线观看| 亚洲国产日韩一区二区三区四区| 日本一道综合久久aⅴ免费| 国产精品免费久久久久软件| 加勒比日本东京热1区| 国产一区二区不卡av| 国产精品亚洲片在线观看不卡| 成人网站免费大全日韩国产| 极品诱惑一区二区三区| 一区二区三区在线观看人妖| 护士的小嫩嫩好紧好爽| 亚洲色自偷自拍另类小说| 狠狠综合亚洲综合亚色 | 亚洲av无码电影在线播放| 色妞色综合久久夜夜| 无码久久精品蜜桃| 午夜福利视频一区二区二区| 国产 麻豆 日韩 欧美 久久| 日韩欧美区| 在线亚洲免费精品视频| 亚洲最大水蜜桃在线观看| 亚洲国产精品久久久久婷婷老年| 久久福利资源国产精品999| 国产亚洲一区二区毛片| 午夜三级a三级三点在线观看| 99久久免费精品高清特色大片| 久九九久视频精品网站| 中文字幕av人妻少妇一区二区 | 一区二区在线亚洲av蜜桃| 久久精品av在线视频| 国产亚洲一区二区在线观看| 精品欧美一区二区在线观看| 久久亚洲精品一区二区| 免费人成视频网站网址| 国产影片中文字幕|