李華等
摘 要:計(jì)算機(jī)軟件測試的重要手段是測試用例的自動生成,關(guān)鍵問題是路徑搜索。遺傳算法技術(shù)是一種高效的搜索巡游算法,在軟件測試用例中廣泛應(yīng)用。將遺傳算法進(jìn)行優(yōu)化改進(jìn),使它有能力處理輸入的龐大數(shù)據(jù),均衡搜索能力,從而設(shè)計(jì)出最優(yōu)測試數(shù)據(jù)。
關(guān)鍵詞:遺傳算法 軟件測試 技術(shù)研究
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2015)03(b)-0050-01
軟件測試過程中,可以用搜索問題的思想對測試數(shù)據(jù)的生成問題進(jìn)行轉(zhuǎn)化。遺傳算法是美國學(xué)者提出的,是指通過對生物遺傳和進(jìn)化機(jī)制的模仿,對問題進(jìn)行最優(yōu)化,它將遺傳基因中的某些行為,借鑒應(yīng)用到算法求解的過程中。作為一種高效的搜索尋優(yōu)算法,遺傳算法在解決現(xiàn)實(shí)中很多復(fù)雜問題上起到了很大的作用。近些年,人們又嘗試在軟件測試中運(yùn)用遺傳算法,取得了一定的研究成果。但是在應(yīng)用過程中也存在很多缺陷,優(yōu)化遺傳算法在軟件測試方面的應(yīng)用是目前需要研究的重要課題。
1 基于遺傳算法的軟件測試用例優(yōu)化技術(shù)研究
1.1 遺傳算法技術(shù)介紹
遺傳算法產(chǎn)生于20世紀(jì)六七十年代,后來,國外有科學(xué)家首次將遺傳算法應(yīng)用到機(jī)器學(xué)領(lǐng)域,并研制出分類器系統(tǒng)。近些年,對遺傳算法的研究更多,作為一種簡單、實(shí)用、高效的優(yōu)化技術(shù),得到迅速發(fā)展。
1.2 遺傳算法的應(yīng)用
遺傳算法的應(yīng)用領(lǐng)域比較廣泛,如自動化工程中自適應(yīng)控制、車間調(diào)度、優(yōu)化設(shè)計(jì)等。遺傳算法主要包括可編碼設(shè)計(jì)、評價函數(shù)設(shè)計(jì)、選擇路徑、自適應(yīng)控制、計(jì)算機(jī)模擬等等。遺傳算法現(xiàn)已應(yīng)用于許多學(xué)科,目前已在生物科學(xué)術(shù)及計(jì)算機(jī)軟件工程等學(xué)科得到廣泛應(yīng)用,并且發(fā)展成為了一種綜合性技術(shù)。
1.3 遺傳算法在計(jì)算機(jī)軟件測試用例中的應(yīng)用
遺傳算法進(jìn)行軟件測試用例優(yōu)化的關(guān)鍵在于選擇恰當(dāng)?shù)脑u價函數(shù),用戶在設(shè)計(jì)評價函數(shù)時應(yīng)與求解問題本身的要求相結(jié)合。我們知道軟件測試用例選擇的好壞直接影響測試結(jié)果,從而影響計(jì)算機(jī)軟件質(zhì)量。因此在軟件測試中對測試用例進(jìn)行優(yōu)化是重中這重,目前軟件測試用例優(yōu)化技術(shù)包括三種,一是測試用例序列化技術(shù)、測試用例最優(yōu)排序技術(shù)及測試用例集合最少技術(shù)。
2 遺傳算法與構(gòu)件化軟件測試技術(shù)相結(jié)合
軟件開發(fā)是一個多人參與的復(fù)雜過程,在開發(fā)中出現(xiàn)錯誤的情況難以避免。隨著軟件需求的不斷增多和軟件規(guī)模的不斷擴(kuò)大,錯誤發(fā)生的可能性也就越大,對軟件進(jìn)行有效測試的問題也急需解決。在構(gòu)建和軟件測試中,需要利用改進(jìn)的算法來對最初生成的測試用例進(jìn)行優(yōu)化。遺傳算法從串集開始搜索,覆蓋面大,利于全局擇優(yōu),同時具有基于領(lǐng)域交叉的交叉操作技術(shù),在實(shí)際操作中顯示了其獨(dú)特的優(yōu)勢。
2.1 構(gòu)件化軟件測試用例技術(shù)
目前的構(gòu)件化軟件測試用例生成技術(shù)是在傳統(tǒng)的軟件測試技術(shù)基礎(chǔ)上發(fā)展來的,相較于傳統(tǒng)技術(shù)而言,增設(shè)了對構(gòu)件源代碼不可見性問題的研究,但是由于其自身的存在缺陷,也導(dǎo)致了一系列軟件測試問題。在軟件測試中需要評判測試用例的有效性問題,這就需要具體的軟件測試充分準(zhǔn)則。
測試準(zhǔn)則可以用一個定性的函數(shù)C(p,s,t)=true來表示。在這個公式中,p為代表程序、s代表規(guī)格說明、t是測試集。函數(shù)結(jié)果為true時,則意味著在程序p運(yùn)行的情況下,規(guī)格說明s所產(chǎn)生的測試用例集t符合測試充分準(zhǔn)則。
2.2 構(gòu)件化軟件測試用例生成技術(shù)中應(yīng)用遺傳算法研究
在進(jìn)行搜索中,遺傳算法基本不需要利用外部信息,僅依據(jù)評價函數(shù),它用來判斷群體中的個體的優(yōu)劣程度的指標(biāo),因此,在利用遺傳算法進(jìn)行構(gòu)件化軟件測試中,關(guān)鍵是要選取恰當(dāng)?shù)脑u估函數(shù),進(jìn)而找到遺傳算法的最優(yōu)解。對于優(yōu)化的遺傳算法而言,不需要了解所需解決問題的實(shí)質(zhì),問題解決好壞的關(guān)鍵取決于適應(yīng)度函數(shù)的構(gòu)造是否合理。
對于構(gòu)件化軟件而言,構(gòu)造適度函數(shù)首先要對構(gòu)件化軟件的每個構(gòu)件建立標(biāo)記函數(shù),此標(biāo)記函數(shù)用作唯一的標(biāo)識,并對相應(yīng)構(gòu)件加以識別。假設(shè)某構(gòu)件化軟件的構(gòu)件組成是m件,每個構(gòu)件接口為n個,則每個構(gòu)件標(biāo)記函數(shù)可記為:
K1=f1(x1,x2,…,xn)
K2=f2(x1,x2,…,xn)
Km=fm(x1,x2,…,xn)
在構(gòu)建軟件結(jié)束處插入的適度函數(shù)為:
F=U(K1)+U(K2)+……+U(Km),其中,x>0。
3 軟件測試用例生成技術(shù)中應(yīng)用蟻群算法的研究
3.1 遺傳算法和蟻群算法
遺傳算法和蟻群算法均是模擬自然生物系統(tǒng)的仿生算法體系,是指通過正反饋、分布式協(xié)作來尋找最優(yōu)路徑,從而優(yōu)化生存狀態(tài),是一種仿生智能算法。遺傳算法和蟻群算法兩種算法間既有共同之處,又存在明顯差異。其相同點(diǎn)為兩種均屬概率型的全局優(yōu)化算法,具有組織性進(jìn)化型,均屬于智能控制算法等。但是,兩種算法也有很多不同之處,如算法原理和實(shí)現(xiàn)形式等方面。
遺傳算法和蟻群算法在科學(xué)研究中很多領(lǐng)域都有廣泛研究,但是在軟件測試方面研究較少,尤其是蟻群算法。如果將蟻群算法的思想融入遺傳算法之中,將兩種算法進(jìn)行優(yōu)勢互補(bǔ),合為遺傳蟻群算法,這對其在軟件測試方面的具有極大的研究價值。
3.2 改進(jìn)遺傳算法后測試用例自動生成技術(shù)
基于遺傳蟻群算法的軟件測試用例自動生成的方法,比單一的遺傳算法和蟻群算法更具優(yōu)勢。要充分發(fā)揮其優(yōu)勢,需要對具體的遺傳蟻群核算方法進(jìn)行研究,不僅需要對模型方法進(jìn)行模型構(gòu)建,還要對適度函數(shù)進(jìn)行適當(dāng)改進(jìn)。具體的算法流程包括建立蟻群網(wǎng)、蟻群和控制參數(shù)的初始化設(shè)計(jì),隨后利用建構(gòu)的初始化網(wǎng)絡(luò)進(jìn)行信息的搜索,并根據(jù)螞蟻移動規(guī)律更新信息,設(shè)計(jì)計(jì)算的最佳路徑,最后對信息的發(fā)揮作用進(jìn)行動態(tài)控制,同時對路徑隨機(jī)變異進(jìn)行調(diào)控分析,最后找到最優(yōu)路徑。
遺傳蟻群算法中,對軟件測試數(shù)據(jù)生成,對參數(shù)編碼、信息、適度函數(shù)和螞蟻路徑都做出了很多改進(jìn),強(qiáng)化了混合算法的搜索能力。在軟件測試的具體應(yīng)用中取得了良好成效。
4 結(jié)語
綜上所述,軟件測試是軟件開發(fā)利用工程的一個重要環(huán)節(jié),當(dāng)今社會,軟件系統(tǒng)開發(fā)規(guī)模不斷擴(kuò)大,軟件測試對軟件質(zhì)量檢測的意義重大。探索適合軟件測試的方法,對軟件的可行性與準(zhǔn)確性進(jìn)行科學(xué)有效測試,是當(dāng)今社會發(fā)展中探究解決的課題。在今后的研究中應(yīng)進(jìn)一步加大對遺傳蟻群算法應(yīng)用于軟件測試用例生成的研究,為軟件開發(fā)提供科學(xué)參考。
參考文獻(xiàn)
[1] 祁金佺.直覺模糊遺傳算法在軟件測試中的應(yīng)用[J].自動化與儀器儀表,2013,5(12):98-100.
[2] 苗亮亮.基于遺傳算法軟件測試用例自動生成分析與研究[D].蘭州交通大學(xué),2013.