《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > 遗传算法在黑盒测试中的应用

遗传算法在黑盒测试中的应用

2009-06-02
作者:陈 浩 刘海涛

  摘 要:提出了一種利用遺傳算法幫助測試人員在較短時間內完成軟件模塊的黑盒測試,并給出測試結果和好的測試用例的方法。
  關鍵詞: 遺傳算法 測試用例 耦合度


  在軟件測試中,黑盒測試主要是針對模塊進行的功能測試。最普遍的方法是以軟件的功能說明書為基礎將軟件的輸入劃分為若干個等價類,多次運行該軟件來檢驗軟件對于不同的等價類是否能滿足要求。但是在實際應用中,有的模塊太大或輸入參數太多,等價類劃分后需要進行的測試工作可能是一個極大的任務。這時,如何選擇最優的測試用例就成為測試人員的一個重要任務。
  遺傳算法是模仿生物遺傳和進化機制的一種最優化方法,它把類似于遺傳基因的一些行為,如交叉重組、變異、選擇和淘汰等引入到算法求解的改進過程中。遺傳算法的特點之一是,它同時保留著若干局部最優解,通過交叉重組或者解的變異來尋求更好的解。與貪婪算法相比,遺傳算法更可能找到全局最優解,而貪婪算法則容易限于局部最優而達不到全局最優。
  如果能夠將遺傳算法有效地運用于黑盒測試中,幫助測試人員選擇最優的測試用例,那么將給測試工作帶來極大的幫助。
1 應用方法
  在設計具體的算法之前,我們先介紹遺傳算法的基本算法,其算法框架如下[1]
  第一步,初始化:選取p個候選解作為初始解,把其中最好的解作為暫定(最優)解。
  第二步,解的改進:若滿足終止條件,輸出暫定解,算法終止。否則,進行以下的運算:
  (1)解的交叉重組:從p個解中選出兩個或兩個以上的解進行交叉重組,得到新解,重復該運算若干次。
  (2)解的變異:在候選解中隨機加進一些變異,產生新解。
  (3)局部搜索:對新產生的解用局部搜索法進行改良。若能得到比候選解更好的解,更新候選解。
  (4)從全部解中按一定的準則選出p個解作為下一代的候選解,更新暫定解。
  轉第二步。
  了解了遺傳算法的算法框架后,進一步要做的就是在軟件的黑盒測試中,如何將不同的等價類轉變為遺傳算法的候選解, 如何設定解的優劣標準,如何設置合適的終止條件。
  我們假定一個軟件模塊的輸入參數有5個:A、B、C、D、E,經過合理的等價類劃分后,每個參數又有5個不同的等價類:A1~A5,......,E1~E5。我們采用一個廣義的遺傳算法候選解概念,一般的遺傳算法往往將候選解形式定為二進制的數據串,比如:111010、010001等等,而在不同等價類輸入作為候選解時我們將候選解形式定為(按照上面假定為基礎):A3B1C2D4E5、A2B2C4D1E3等等。這樣我們解決了候選解的問題,在解的優劣標準以及終止條件的設定問題上,我們需要借助工具作為標準。
  軟件測試的目的是提高軟件的可靠性,終止條件當然是軟件達到了測試的目的及要求。而解的優劣標準正好與軟件質量相反,即軟件失效幾率越大,這個測試用例(一個輸入的解)越優。文獻[2]中結合北大的青鳥黑盒測試環境提出了一種基于測試執行的失效數據模型JBFDM(Jade Bird failure data model)。利用該模型我們可以做到[2]
  (1)提供一致的失效數據建模、收集及管理的可靠性度量過程,從而支持可靠性度量;
  (2)利用測試及軟件現場收集的數據來評價測試計劃、操作概圖及測試方法的有效性。
  軟件測試的目的是發現錯誤,在黑盒測試中,錯誤表現的形式是軟件失效。但是由于軟件錯誤并不是軟件失效的充分條件,換句話說,并不是所有錯誤都會在測試或運行時暴露,所以黑盒測試的目的就是盡可能的通過運行測試用例使軟件失效而發現錯誤。在我們對測試用例的評價時,用以下的數據表示測試用例的優劣:
  A=P+λ/M+μ×F
  其中A表示遺傳算法中的適應度Adaptation,P表示該測試用例在實際中發生的幾率Probability,M表示平均失效時間(MTTF),F表示失效等級。因為測試是針對使用的,所以發生幾率高的測試用例適應度高就不難理解了;而M——平均失效時間越長,該測試用例應該不容易發現軟件的錯誤,所以A越低;F則表示某些特殊情況發生使軟件嚴重失效(比如造成死機、損壞儀器等等),此時該測試用例以及其后代必須被重點關注,所以此時A越大。λ、μ是相應于各個具體的被測試軟件模塊而定的系數。在實際應用中,由于軟件失效的可能性不是特別大,所以遺傳結果往往是發生幾率高的測試用例后代較多。所以我們應該針對具體被測試軟件設計準確的發生概率產生算法。具體算法框架如圖1所示。


  對于該算法的說明如下:
  *1.每一個輸入參數往往有一個幾率(可以事先定義),可以簡單相加來求得該測試用例的概率。但是在輸入參數有較強相關性時,此方法并不能準確求得某個測試用例的發生概率,一個解決辦法是設置輸入參數的相關耦合度。在遺傳算法的交叉、變異時其同時進行的幾率與相關耦合度成正比,即對于相關耦合度高的輸入參數,它們同時進行交叉、變異的幾率高,反之則低。
  *2.檢驗是否滿足測試要求時,需要先設置一個計數器。每運行一個新的測試用例,測試計數器加一。當發現第一次失效或故障時,計數器加二。若產生的遺傳后代又使軟件發生失效,則計數器加22。同理遞推,當遺傳算法產生的測試用例連續n次使軟件失效,則計數器加2n。同時,記錄所有的測試情況(此工作由外圍的測試環境完成,比如北大的青鳥黑盒測試環境)。如果出現嚴重錯誤則終止測試,進行對程序的檢查。如果連續k代測試用例的遺傳后代都運行良好,計數器的值加2k。k的值由具體被測試軟件的等價類數量、輸入參數個數等決定。當測試計數器的值達到所有黑盒測試用例等價類的數值時(對于我們上面所舉的例子,該值為55=3125),結束測試。當生成的孫子代、子代與父母代三代完全相同時,算法也必須結束,因為此時測試不會有新的結果。所以我們還要設置一個結束條件。而且該條件強于計數器條件。
  *3.每一組測試用例可以生成多個測試用例,根據適應度函數大小決定留下哪些測試用例組成新的測試用例組。
  從上面的算法框圖和說明可以看出,如果某測試用例使軟件的運行發生了問題(即某個軟件錯誤發作),它的后代也同樣受困于該軟件錯誤,算法很快能發現這些最佳測試用例并給出結果。測試人員就可以將它們交給開發人員解決這些問題。若軟件本身確實質量優良,這些測試用例及其不同的后代無法發現失效,算法也能盡快結束,而不是完成所有測試用例(雖然從理論上,我們希望測試盡可能運行所有測試用例)。
2 效果
  上節的算法,相對于運行所有測試用例,并沒有比較明顯的優點。尤其對于測試來說,算法并沒有加速運行測試用例,好象還降低了運行速度。其實算法本身的確不是用來加速運行測試用例的,其目的是找到一組最佳測試用例。因為實際上對于很多模塊運行所有測試用例或哪怕是所有等價類都是幾乎不可能的。
  以上一節舉的例子做說明,其輸入等價類大致有55=3125。如果一個模塊有10個輸入、每個輸入有10種等價類,那么輸入等價類為1010。按運行一個等價類需要1分鐘計算(很多循環運行模塊可能不止1分鐘),需要幾個月才能運行一遍所有等價類。這時,運用遺傳算法的優勢就體現出來了。
  綜上所述,本文提出了一種利用遺傳算法尋求最佳測試用例的測試方法原理。它能在較短時間內完成軟件模塊的黑盒測試并給出測試結果和好的測試用例。利用該算法原理,可以在測試集成環境中做一些設置或修改測試集成環境,這樣可以大大提高測試工作的效率。
參考文獻
1 張鴻賓,郭建軍.遺傳算法在曲線多邊形近似中的應用.計算機學報,1999;10:1100~1104
2 方菲等.基于測試執行的失效數據建模研究.軟件學報,1999;12:1233~1237
3 鄭人杰.計算機軟件測試技術.北京:清華大學出版社,1992
4 Roger S. Pressman.軟件工程——實踐者的研究方法.北京:機械工業出版社,1999

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 日本婷婷久久久久久久久一区二区 | 久久天天躁夜夜躁狠狠躁2022 | 欧美在线不卡区| 国产精品∨欧美精品v日韩精品| 久久久久久久国产精品视频| 国产精品91久久| 天天人人精品| 日韩在线小视频| 日韩经典在线视频| 国内精品伊人久久| 好吊色欧美一区二区三区视频| 久久久国产精品视频| 日韩视频精品在线| 国产欧美日韩综合精品| 国产美女精品久久久v| 久久国产精品久久国产精品| 国产福利精品在线| 国产精品aaaa| 久久久久欧美| 日韩一级在线免费观看| 国产九九精品视频| 中文字幕99| 奇米影视亚洲狠狠色| 国产欧美日韩最新| 手机在线观看国产精品| 亚洲一区不卡在线| 国产精品一区二区在线观看| 久久久天堂国产精品女人| 欧美久久久久久久| 欧美在线观看黄| 精品人妻一区二区三区四区在线 | 日韩欧美不卡在线| 一区二区免费在线视频| 欧美一区二区中文字幕| 久久五月天综合| 久久精品国亚洲| 久久综合给合久久狠狠色| 天天干天天色天天爽| 欧美综合在线第二页| 欧美乱妇高清无乱码| 日韩中文av在线|