李華等

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