夏良 商偉 王兆星
摘 ?要: 近些年隨著軟件行業(yè)的迅速興起,軟件產(chǎn)品已經(jīng)滲透到日常生活中的各個(gè)角落。作為軟件生命周期中重要階段的軟件測(cè)試,對(duì)軟件行業(yè)的發(fā)展有著十分重要的意義。對(duì)于軟件測(cè)試來(lái)講,測(cè)試質(zhì)量是核心,測(cè)試效率是保證,一個(gè)好的測(cè)試過(guò)程就是要在保證軟件質(zhì)量的基礎(chǔ)上盡可能提高軟件測(cè)試的效率。本文重點(diǎn)針對(duì)軟件系統(tǒng)級(jí)測(cè)試,基于遺傳算法對(duì)選取個(gè)體適應(yīng)因素進(jìn)行調(diào)整,達(dá)到保留必須存在的測(cè)試路徑,減少重復(fù)冗余測(cè)試路徑的目的,進(jìn)而實(shí)現(xiàn)對(duì)測(cè)試路徑的自動(dòng)選擇。
關(guān)鍵詞: 計(jì)算機(jī)軟件;業(yè)務(wù)流程測(cè)試;測(cè)試路徑選取;遺傳算法
中圖分類號(hào): TP311.5 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.04.029
本文著錄格式:夏良,商偉,王兆星. 基于遺傳算法的軟件業(yè)務(wù)流程測(cè)試路徑的研究[J]. 軟件,2019,40(4):133139
【Abstract】: Nowadays, as the software industry promptly developing, the software products have penetrated every area in our daily life. Software testing which is a significant period in the software life cycle, has a very important effect on the software industry. From the point of software testing, the testing quality is the core, and the testing efficiency is the guarantee. A good testing process is to improve the testing efficiency as much as possible on the basis of ensuring the testing quality.
This paper focus on the system software testing, adjust the selection of the individual fitness function based on genetic algorithm, to reserve the testing path which is imperative, and to reduce the redundancy of it, and eventually to realize the testing path automatically generation.
【Key words】: Computer software; Business Process Testing; Testing path selection; Genetic algorithm
0 ?引言
隨著信息科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)技術(shù)及其產(chǎn)物“軟件產(chǎn)品”已在各行各業(yè)中得到廣泛應(yīng)用,軟件產(chǎn)品已成為人們?nèi)粘9ぷ骱蜕畹谋仨毱?,而保證軟件質(zhì)量已成為近年來(lái)軟件領(lǐng)域的一個(gè)重要話題。軟件中的一些缺陷將極有可能直接導(dǎo)致軟件失效,尤其在一些用戶量大或者安全系數(shù)高的關(guān)鍵領(lǐng)域(比如軍隊(duì)安防、核電控制、證券金融和銀行交易等),甚至可能造成災(zāi)難[1]。
軟件測(cè)試就是保證軟件產(chǎn)品質(zhì)量的有效活動(dòng)之一。軟件測(cè)試會(huì)選取一些具有代表性的操作或數(shù)據(jù),并將其組成測(cè)試用例,通過(guò)在被測(cè)程序上使用這些操作和數(shù)據(jù),得到被測(cè)程序的實(shí)際反饋信息,再使用其與期望結(jié)果進(jìn)行比較,最終得到被測(cè)程序是否滿足期望的結(jié)論。軟件測(cè)試有很多重要環(huán)節(jié),其中測(cè)試數(shù)據(jù)的使用就是其中之一。一個(gè)有效的測(cè)試數(shù)據(jù)選擇方法可以實(shí)現(xiàn)對(duì)測(cè)試數(shù)據(jù)的精簡(jiǎn),減少大量重復(fù)或者無(wú)效的測(cè)試工作,這樣就可以在有限的條件下明確測(cè)試目標(biāo)、擴(kuò)大覆蓋規(guī)模,最終達(dá)到提高效率、節(jié)約成本的目的。研究表明,測(cè)試數(shù)據(jù)的選取直接影響了測(cè)試工作的效果,在一定程度上關(guān)乎整個(gè)軟件研發(fā)工作的進(jìn)程[2]。
本文結(jié)合筆者實(shí)際測(cè)試工作,給出了一種個(gè)體適應(yīng)度的計(jì)算方法,并依此給出了一種基于遺傳算法的測(cè)試路徑優(yōu)選算法,該算法可以優(yōu)化測(cè)試路徑的選取,減少冗余的測(cè)試用例,進(jìn)而提高了測(cè)試效率,同時(shí)也對(duì)與流程測(cè)試路徑選取相關(guān)的研究提供了參考[3-10]。
1 ?業(yè)務(wù)流程測(cè)試
1.1 ?實(shí)驗(yàn)材料
業(yè)務(wù)流程測(cè)試是指,針對(duì)用戶實(shí)際的使用場(chǎng)景,將系統(tǒng)中各相關(guān)的功能模塊或者配置項(xiàng)串聯(lián)起來(lái),通過(guò)連貫的操作驅(qū)動(dòng)系統(tǒng)中的數(shù)據(jù)進(jìn)行一系列的變化,比對(duì)中間數(shù)據(jù)結(jié)果和最終數(shù)據(jù)結(jié)果來(lái)驗(yàn)證被測(cè)系統(tǒng)是否滿足用戶需求的過(guò)程。業(yè)務(wù)流程測(cè)試是系統(tǒng)級(jí)測(cè)試中重要的測(cè)試環(huán)節(jié),通過(guò)業(yè)務(wù)流程測(cè)試,可以有效降低軟件系統(tǒng)在交付后出現(xiàn)問(wèn)題的幾率,減少后期維護(hù)成本,提高系統(tǒng)運(yùn)行的穩(wěn)定性[11-15]。
1.2 ?使用基本流圖表示業(yè)務(wù)流程路徑
在進(jìn)行業(yè)務(wù)流程測(cè)試時(shí),為了清晰的展現(xiàn)所有可能存在的業(yè)務(wù)流程路徑,通常需要根據(jù)實(shí)際的使用場(chǎng)景繪制流程圖,再將流程圖中的每個(gè)操作使用唯一的編號(hào)進(jìn)行標(biāo)識(shí),進(jìn)而繪制出便于識(shí)別每一條流程路徑的基本流圖。流程圖和基本流圖的示例如圖1所示。
1.3 ?獨(dú)立路徑的識(shí)別
對(duì)于一般的業(yè)務(wù)流程來(lái)講,僅需對(duì)每個(gè)判斷、每個(gè)分支以及任意兩節(jié)點(diǎn)之間的有向線段進(jìn)行覆蓋,即可達(dá)到測(cè)試的目的。這種覆蓋方式就是“獨(dú)立路徑覆蓋”,而識(shí)別獨(dú)立路徑最簡(jiǎn)單的方式就是在已覆蓋所有有向線段的基礎(chǔ)上,增加一條尚未覆蓋的新有向線段。假設(shè)某軟件系統(tǒng)中存在一系列的操作流程,對(duì)其進(jìn)行分析形成的基本流圖如圖2所示。
這里可以明顯看出每天獨(dú)立路徑都是在其他已知路徑的基礎(chǔ)上,增加了一條未被識(shí)別的新有向線段。通過(guò)使用對(duì)獨(dú)立路徑覆蓋的方法,可以較為快速的找出所有需要覆蓋的測(cè)試路徑,在測(cè)試時(shí)間有限的情況下,盡可能的保證測(cè)試到更多的路徑。
2 ?遺傳算法
2.1 ?基本概念
遺傳算法的思想來(lái)源于達(dá)爾文生物進(jìn)化理論,以“物競(jìng)天擇”的概念模擬了自然界中生物的進(jìn)化過(guò)程,對(duì)搜索空間進(jìn)行自動(dòng)優(yōu)化,對(duì)搜索方向進(jìn)行自動(dòng)調(diào)整。
遺傳算法是一種全局搜索算法,重點(diǎn)強(qiáng)調(diào)種群中個(gè)體的適應(yīng)度,通過(guò)適者生存的概念,自動(dòng)完成對(duì)問(wèn)題的求解。它僅從適應(yīng)度這一個(gè)方面對(duì)種群中的個(gè)體進(jìn)行評(píng)估,不受其他條件和因素的制約,這使得其在當(dāng)今各領(lǐng)域中得到了十分廣泛的應(yīng)用,尤其在信號(hào)處理、自動(dòng)控制選擇等專業(yè)領(lǐng)域發(fā)揮了不小的作用[16-20]。
2.2 ?遺傳算法一般過(guò)程
遺傳操作在遺傳算法中是非常關(guān)鍵的,其目標(biāo)就是根據(jù)個(gè)體對(duì)環(huán)境的適應(yīng)度而施加一定的影響,從而實(shí)現(xiàn)對(duì)優(yōu)良個(gè)體的保留和傳遞,通過(guò)這樣不斷的迭代和優(yōu)化,最終達(dá)到進(jìn)化的目的。
適應(yīng)度函數(shù)又稱評(píng)價(jià)函數(shù),它表示種群中的某個(gè)體對(duì)環(huán)境的適應(yīng)能力,通過(guò)適應(yīng)度函數(shù)可以直接評(píng)價(jià)某個(gè)體的優(yōu)劣,以及其是否可以繁衍下一代。因?yàn)檫z傳算法在整個(gè)搜索過(guò)程中僅使用適應(yīng)度函數(shù)來(lái)評(píng)價(jià)個(gè)體的優(yōu)劣程度,所以對(duì)于適應(yīng)函數(shù)的設(shè)計(jì)就顯得非常重要,必須要在對(duì)問(wèn)題進(jìn)行充分分析和了解的基礎(chǔ)上,才能設(shè)計(jì)出適合的適應(yīng)度函數(shù)。遺傳算法一般過(guò)程如圖3所示[21-25]。
3 ?基于遺傳算法的測(cè)試路徑選擇算法
3.1 ?使用基本流圖表示測(cè)試路徑
在基本流圖中,通過(guò)分支直接形成了不同的獨(dú)立路徑,分支越多則最終形成的獨(dú)立路徑就會(huì)越多。這里使用P(Path)表示路徑,n(node)表示節(jié)點(diǎn),ns表示起始節(jié)點(diǎn),ne表示終節(jié)點(diǎn),L(line)表示相鄰兩節(jié)點(diǎn)之間的有向線段,通過(guò)節(jié)點(diǎn)的形式可表現(xiàn)為ni-nt。
下面用上文提到過(guò)的一個(gè)示例圖2進(jìn)行詳細(xì)說(shuō)明。為了不改變?cè)瓐D中各節(jié)點(diǎn)編號(hào),直接將1作為起始節(jié)點(diǎn)s,11作為終結(jié)點(diǎn)e,變化后的基本流圖如圖4所示。
3.2 ?路徑重復(fù)度計(jì)算
基于遺傳算法測(cè)試路徑選擇的技術(shù)難點(diǎn)在于確定每條路徑的適應(yīng)度。對(duì)于測(cè)試路徑的選取來(lái)講,個(gè)體適應(yīng)度的高低主要體現(xiàn)在“重復(fù)度”上。測(cè)試路徑的重復(fù)度越高,則說(shuō)明這條路徑越接近已經(jīng)被探索過(guò)的路徑;反之重復(fù)度越低,則說(shuō)明這是一條新的、未被發(fā)現(xiàn)的路徑。那么選擇一個(gè)合理的重復(fù)度的計(jì)算方法對(duì)于本次研究來(lái)講就是一個(gè)比較重要的事情了。本文借鑒了前人的研究成果,采用了分段比較的方法,來(lái)確定測(cè)試路徑的重復(fù)度。
對(duì)于其中一條路徑Pt={ns-n1-n2……-nt-ne},可以從第一個(gè)節(jié)點(diǎn)開(kāi)始,依次向下取出長(zhǎng)度為定值m的每條子路徑,第一條子路徑從ns開(kāi)始直到nm結(jié)束,第二條子路徑從n1開(kāi)始直到nm+1結(jié)束……這樣以此類推,每條子路徑都是在前一條的基礎(chǔ)上移出第一個(gè)節(jié)點(diǎn)再引入一個(gè)新的后續(xù)節(jié)點(diǎn)。這樣就有了路徑集合:
通過(guò)上面的方法就可以比較容易找出重復(fù)度較低的測(cè)試路徑。基于遺傳算法的測(cè)試路徑選擇中,可以使用對(duì)比已有路徑和新路徑的重復(fù)度的方法確定個(gè)體的適應(yīng)度。兩條路徑上經(jīng)過(guò)的相同節(jié)點(diǎn)越多,則說(shuō)明這兩條路徑越接近,反之則說(shuō)明兩條路徑之間的差別越大。在對(duì)個(gè)體適應(yīng)度進(jìn)行判斷時(shí),個(gè)體重復(fù)度越高,則說(shuō)明其與已有路徑越接近,個(gè)體適應(yīng)度就越低,應(yīng)該被淘汰;而重復(fù)度越低的,適應(yīng)度就會(huì)越高,應(yīng)該被保留[26-31]。
3.3 ?子路徑權(quán)值
在對(duì)測(cè)試路徑進(jìn)行覆蓋時(shí),通常會(huì)使用深度優(yōu)先和廣度優(yōu)先兩種方法。一般情況下,分支出現(xiàn)的越早,之后的兩條路徑差距越大,所以從某個(gè)方面來(lái)講,在測(cè)試時(shí)間有限的情況下,廣度優(yōu)先的方法更優(yōu)于深度優(yōu)先的方法,它更容易選出多條差距較大的測(cè)試路徑。
可以借助為子路徑設(shè)置權(quán)值的思想來(lái)實(shí)現(xiàn)廣度優(yōu)先,在子路徑集中,越靠前的子路徑其優(yōu)先級(jí)就應(yīng)該設(shè)定得越高,越靠后的則越低。這里使用前文中重復(fù)度計(jì)算的例子進(jìn)行說(shuō)明。
使用等比權(quán)值得到的結(jié)果與使用等差權(quán)值得到結(jié)果差距不大,且都與基本流圖的直觀感受基本一致,所以這兩種方法都可以使用,而且最終的結(jié)果差距不大,都可以滿足實(shí)際使用時(shí)的需要。
等差權(quán)值的優(yōu)點(diǎn)在于計(jì)算精確,當(dāng)出現(xiàn)重復(fù)的路徑時(shí)可以保證重復(fù)度剛好為1,其缺點(diǎn)在于對(duì)不同路徑的子路徑權(quán)值不同,每次進(jìn)行比較的時(shí)候需要先確定權(quán)值才能進(jìn)行比較;而等比權(quán)值對(duì)于所有路徑均是一樣的,使用起來(lái)比較方便,但如果路徑很短時(shí),重復(fù)度結(jié)果就與1偏離較大。所以對(duì)于存在多分支的復(fù)雜流程來(lái)說(shuō),推薦使用等比權(quán)值,而簡(jiǎn)單的流程推薦使用等差權(quán)值。
3.4 ?個(gè)體適應(yīng)度計(jì)算
基于遺傳算法的測(cè)試路徑選取算法的核心在于如何確定個(gè)體適應(yīng)度,確定一個(gè)合適的計(jì)算函數(shù)對(duì)個(gè)體適應(yīng)度的計(jì)算以及搜索算法的效果都有著直接的影響。對(duì)于測(cè)試路徑的覆蓋問(wèn)題來(lái)說(shuō),測(cè)試人員最不希望的進(jìn)行的工作就是對(duì)同一條路徑進(jìn)行反復(fù)的測(cè)試,但對(duì)于比較復(fù)雜的流程來(lái)講,通過(guò)人工選取的方式很難做到避免的冗余,所以本文中采用了計(jì)算測(cè)試路徑重復(fù)度的方法來(lái)輔助計(jì)算個(gè)體適應(yīng)度。
在對(duì)個(gè)體重復(fù)度的計(jì)算方法和計(jì)算結(jié)果進(jìn)行分析后,可以很容易的發(fā)現(xiàn),重復(fù)度函數(shù)是一條值域在[0,1]之間的單調(diào)遞增的函數(shù),這樣在計(jì)算個(gè)體適應(yīng)度時(shí),就可以通過(guò)最簡(jiǎn)單的線性函數(shù)y=1f(x)來(lái)完成個(gè)體測(cè)試路徑適應(yīng)度的計(jì)算。
前文中得出的mP1與mP2的重復(fù)度為:0.9(等差數(shù)列形式計(jì)算),所以mP2的適應(yīng)度就應(yīng)該為:10.9=0.1。類似的mP3的適應(yīng)度為10.5=0.5。很明顯0.5>0.1,說(shuō)明mP3的適應(yīng)度要高于mP2的適應(yīng)度,在選取時(shí)應(yīng)該保留mP3淘汰mP2。將重復(fù)度計(jì)算函數(shù)帶入y=1f(x)中得出個(gè)體測(cè)試路徑的適應(yīng)度公式。
子路徑權(quán)值成等差數(shù)列時(shí),個(gè)體測(cè)試路徑的適應(yīng)度
其中nPi是兩條路徑中各子路徑的重復(fù)程度,m為子路徑數(shù)量(如果相比較的兩條路徑的子路徑條數(shù)不一樣,則取較短的一條的子路徑個(gè)數(shù)),i是自然數(shù)[1, n]。
子路徑權(quán)值成等比數(shù)列時(shí),個(gè)體測(cè)試路徑的適應(yīng)度
其中nPi是兩條路徑中各子路徑的重復(fù)程度,m為子路徑數(shù)量(如果相比較的兩條路徑的子路徑條數(shù)不一樣,則取較短的一條的子路徑個(gè)數(shù)),i是自然數(shù)[1, n]。
從公式上看,當(dāng)子路徑權(quán)值成等比數(shù)列時(shí),公式更為簡(jiǎn)單,對(duì)于比較復(fù)雜的測(cè)試路徑選取更加合適,這也再一次印證了上文中所說(shuō)的對(duì)于存在多分支的復(fù)雜流程來(lái)說(shuō),推薦使用等比權(quán)值,而簡(jiǎn)單的流程推薦使用等差權(quán)值。因?yàn)閮煞N方法計(jì)算出的適應(yīng)度結(jié)果差距不大。
3.5 ?基于遺傳算法的測(cè)試路徑選擇
在選擇一條新的測(cè)試路徑時(shí),需要分別對(duì)備選新路徑與每條已有路徑的適應(yīng)度進(jìn)行計(jì)算,并Min(SPi)的方式得出每條備選新路徑對(duì)已有多條路徑的多路徑適應(yīng)度。
3.6 ?基于遺傳算法的測(cè)試路徑選取步驟
不管是通過(guò)人工方式還是基于某種算法測(cè)試路徑進(jìn)行選取時(shí),都必須認(rèn)真分析現(xiàn)有業(yè)務(wù)需求和邏輯操作流程。在正確繪制業(yè)務(wù)流程圖、基本流圖之后才可以進(jìn)行測(cè)試路徑的選取?;谶z傳算法的測(cè)試路徑選取步驟如下:
(1)首先要找到基本流圖中包含的所有的有向線段集合LS。
(2)再要確定第一條分支路徑,將該路徑直接加入測(cè)試路徑解集中,并將該路徑中包含的所有向線段在有向線段集合LS中刪除。確定該路徑的方法很簡(jiǎn)單,僅需要識(shí)別出基本流圖中一條最短的路徑即可。如果發(fā)現(xiàn)存在多條最短路徑,則將其全部納入解集中。
(3)選取其他新的測(cè)試路徑并進(jìn)行篩選,如果路徑中未包含當(dāng)前有向線段集合LS中的元素時(shí),則直接將其刪除;如果路徑中包含了有向線段集合LS中的元素時(shí),則保留這些測(cè)試路徑并使用這些測(cè)試路徑與已有路徑解集中的測(cè)試路徑逐一進(jìn)行重復(fù)度比較,得出單路徑的多個(gè)適應(yīng)度值,并使用最值的方式得到每條新測(cè)試路徑的適應(yīng)度。
(4)從所有適應(yīng)度中選取適應(yīng)度最高的一條測(cè)試路徑作為本次選擇的最優(yōu)解并納入到解集中,同時(shí)刪除LS中對(duì)應(yīng)的元素。如果出現(xiàn)適應(yīng)度相同的多條路徑,則取路徑長(zhǎng)度較短的一條,如果路徑長(zhǎng)度也相同則取第一條。
(5)重復(fù)執(zhí)行3-4兩個(gè)步驟,直到LS中沒(méi)有元素為止,此時(shí)所有的測(cè)試路徑已經(jīng)全部被覆蓋,這樣就在測(cè)試路徑的解集中得到了全部的測(cè)試路徑。
4 ?結(jié)論
如今的測(cè)試技術(shù)和測(cè)試方法較之前相比已經(jīng)有了很大的進(jìn)步,單純的功能測(cè)試已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足當(dāng)今軟件測(cè)試行業(yè)的發(fā)展需要,越來(lái)越多的時(shí)間和資源將被用于系統(tǒng)級(jí)的測(cè)試中。而且人們對(duì)于測(cè)試技術(shù)的追求也不斷提高,降低測(cè)試設(shè)計(jì)的復(fù)雜度已經(jīng)成為了目前迫切需要解決的問(wèn)題。目前對(duì)于路徑測(cè)試方面的測(cè)試技術(shù)和研究成果還比較有限,本文在現(xiàn)有研究成果的基礎(chǔ)上進(jìn)行了深入的學(xué)習(xí)和研究,給出了一種新的更加適合實(shí)際測(cè)試工作需要的基于遺傳算法的軟件業(yè)務(wù)流程測(cè)試用例選取算法。對(duì)于流程測(cè)試路徑選取提供了參考,對(duì)于自動(dòng)化測(cè)試在系統(tǒng)業(yè)務(wù)流程測(cè)試用的應(yīng)用起到了指導(dǎo)作用。
參考文獻(xiàn)
[1] 顏樂(lè)鳴. 基于工作流的軟件測(cè)試過(guò)程模型研究[J]. 軟件, 2018, 39(5): 160-165
[2] 翁秀木. 一個(gè)通用的軟件質(zhì)量評(píng)估指標(biāo)體系[J]. 軟件, 2015, 36(3): 59-63
[3] 楊勛姮, 段明璐. 軟件缺陷分析技術(shù)的研究[J]. 軟件, 2018, 39(2): 93-101
[4] 葉常春, 尹良澤. 面向小規(guī)模程序的輕型測(cè)試方法[J].軟件, 2015, 36(10): 90-93
[5] 楊子健, 趙逢禹. 基于數(shù)據(jù)流約簡(jiǎn)的測(cè)試用例生成策略研究[J]. 軟件, 2018, 39(4): 191-195
[6] Huang C Y, Software reliability modeling and cost estimation incorporating testing-effort and efficiency[J]. Software Reliability Engineering, 1999, 22(4): 62-72
[7] 朱少民. 軟件測(cè)試方法和技術(shù)[M]. 北京: 清華大學(xué)出版社, 2005
[8] Nirmal Kumar Gupta, Dr.Mukesh Kumar Rohil. Using Genetic Algorithm for Unit Testing of Object Oriented Software[C] ICETET 08, NewYorK, 2008: 308-313
[9] Glen.Myers著, 王峰, 陳杰譯. 軟件測(cè)試的藝術(shù)[M]. 北京: 機(jī)械工業(yè)出版社, 2006.
[10] Susan Khor, Peter Grogono. Using a Genetic Algorithm and Formal Concept Analysis to Generate Branch Coverage Test Data Automactically[J]. Proceeding of the 19th IEEE international conference on Automated software engineering: 346-349.
[11] Dr. Velur Rajappa, Arun Biradar, Satanik Panda. Efficient Software Test Case Generation Using Genetic Algorithms Based Graph Theory[J]. First International Conference on Emerging Trends in Engineering and Technology, ICETET 08, 2008: 298-303.
[12] 董敏, 畢盛, 齊德昱. 基于正則表達(dá)式的測(cè)試數(shù)據(jù)自動(dòng)生成技術(shù)[J]. 計(jì)算機(jī)工程, 2009, 35(16): 29-31.
[13] 付博. 基于模擬退火遺傳算法的軟件測(cè)試數(shù)據(jù)自動(dòng)生成. 計(jì)算機(jī)工程與應(yīng)用. 2005, 12: 82-84.
[14] 王溪波, 馬春, 杜曉舟. 面向路徑的測(cè)定數(shù)據(jù)自動(dòng)生成工具設(shè)計(jì)與實(shí)現(xiàn)[J]. 沈陽(yáng)航空工業(yè)學(xué)院學(xué)報(bào), 2009, 26(3): 54-59.
[15] 夏蕓, 劉峰. 基于免疫遺傳算法的路徑測(cè)試數(shù)據(jù)生成的研究[J]. 計(jì)算機(jī)應(yīng)用, 2008, 28(3): 723-725.
[16] 周澤巖, 張喜. 基于改進(jìn)遺傳算法的TSP問(wèn)題求解的研究. 物流技術(shù), 2012(17): 220-223.
[17] 張海藩. 軟件工程導(dǎo)論[M]. 第三版. 北京: 清華大學(xué)出版社, 2000.139-143.
[18] 鞏敦衛(wèi), 張巖. 一種新的多路徑覆蓋測(cè)試數(shù)據(jù)進(jìn)化生成方法[J]. 電子學(xué)報(bào), 2010(6): 1300-1301.
[19] 張巖, 鞏敦衛(wèi). 基于搜索空間自動(dòng)縮減的路徑覆蓋測(cè)試數(shù)據(jù)進(jìn)化生成[J]. 電子學(xué)報(bào), 2012, 40(5): 1011-1016.
[20] 魏銳, 王海榮. 軟件測(cè)試數(shù)據(jù)自動(dòng)生成方法研究. 電子設(shè)計(jì)工程, 2013(21): 5-7.
[21] 曹洋, 胡春華, 陳少波, 李路明. 一種路徑測(cè)試數(shù)據(jù)自動(dòng)生成方法. 計(jì)算機(jī)工程, 2011(9): 25-28.
[22] 崔麗婷, 雷斌. 改進(jìn)的遺傳算法及其在測(cè)試數(shù)據(jù)自動(dòng)生成中的應(yīng)用. 信息技術(shù)與信息化, 2013(4): 110-115.
[23] 于遠(yuǎn)誠(chéng), 潘洪軍, 李春秋. 遺傳算法在軟件測(cè)試中的應(yīng)用. 浙江海洋學(xué)院學(xué)報(bào), 2013(2): 149-154.
[24] 史嬌嬌, 姜淑娟. 基于遺傳算法的動(dòng)態(tài)可變參數(shù)的測(cè)試數(shù)據(jù)自動(dòng)生成工具. 計(jì)算機(jī)科學(xué), 2012(5): 124-127.
[25] 夏輝, 宋昕, 王理. 基于Z路徑覆蓋的測(cè)試用例自動(dòng)生成技術(shù)研究[J]. 現(xiàn)代電子技術(shù), 2006(6): 92-94.
[26] Willem Visser, Corina S. Pasareanu, Sarfraz Khurshid. Test Input Generation with Java Path Finder. ISSTA, 2004: 97-107.
[27] J.Wegener, A.Baresel, H.Sthamer. Evolutionary test environment for automatic structural testing[J]. Information and Software Technology, 2001, 43(4): 841-854.
[28] 熊偉清, 魏平. 二進(jìn)制蟻群進(jìn)化算法[J]. 自動(dòng)化學(xué)報(bào). 2007, 33(3): 259-264.
[29] 王柳毅, 熊偉清. 并行二級(jí)制蟻群算法的多峰函數(shù)優(yōu)化[J].計(jì)算機(jī)工程與應(yīng)用. 2006, 22(3): 42-45.
[30] Yucheng Kao, Kevin Cheng. An ACO-Based Clustering Algorithm. 5th International Workshop, ANT, 2006, 340- 347.
[31] Michael Eley. Some Experiments with Ant Colony Algorithms for the Exam Timetabling Problem . 5th International Workshop, ANT, 2006, 492-499.