国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于神經(jīng)網(wǎng)絡(luò)的回歸測試用例優(yōu)化研究

2015-10-22 21:08:22黃偉楊金鳳
現(xiàn)代電子技術(shù) 2015年19期
關(guān)鍵詞:測試用例神經(jīng)網(wǎng)絡(luò)

黃偉 楊金鳳

摘 要: 回歸測試是指修改了源代碼后,重新進(jìn)行測試以確認(rèn)已發(fā)現(xiàn)的缺陷是否修復(fù)和檢測修改是否引入了新的錯誤或?qū)е缕渌a產(chǎn)生錯誤,在測試過程中占有很大的工作量比重。通過分析神經(jīng)網(wǎng)絡(luò)的基本原理,并將BP算法的思想引入到回歸測試的用例集選取中,介紹了回歸測試用例包選取的算法,通過樣本訓(xùn)練,篩選出代碼改動后可能影響到的功能,從而可以篩選出優(yōu)先級別較高的用例。最后,通過測試實(shí)踐的積累,總結(jié)了一套高效易行的回歸測試策略。

關(guān)鍵詞: 回歸測試; 測試用例; 神經(jīng)網(wǎng)絡(luò); BP網(wǎng)絡(luò)

中圖分類號: TN711?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)19?0114?03

Abstract: Regression testing means after modifying the source code, re?testing to confirm whether the discovered defect is repaired, and whether detection and modification have brought in a new bug or caused the errors in other codes which possesses a large proportion of the workload during testing procedure. The fundamental principle of neural network is analyzed, and the thought of BP algorithm is introduced into the case set selection of regression testing. The algorithm to select regression testing case package is presented. The functions which may be influenced by code modification are screened out by samples training, and the higher priority use case can be screened out. A set of regression testing strategy with high efficient and easy operation was summed up through the accumulation of testing practice.

Keywords: regression testing; testing case; neural network; BP network

0 引 言

軟件分析,設(shè)計(jì)過程中難免有各種各樣的錯誤,需要通過測試查找錯誤,以保證軟件的質(zhì)量。軟件測試是由人工或計(jì)算機(jī)來執(zhí)行或評價軟件的過程,驗(yàn)證軟件是否滿足規(guī)定的需求或識別期望的結(jié)果和實(shí)際結(jié)果之間有無差別。大量統(tǒng)計(jì)資料表明,軟件測試工作量往往占軟件開發(fā)總量的40%以上。而回歸測試作為軟件生命周期的一個組成部分,在整個軟件測試過程中占有很大的工作量比重,軟件開發(fā)的各個階段都會進(jìn)行多次回歸測試。在漸進(jìn)和快速迭代開發(fā)中,新版本的連續(xù)發(fā)布使回歸測試變得更加頻繁,而在極端編程方法中,更是要求每天都進(jìn)行若干次回歸測試。因此,研究回歸測試方法,盡可能地將軟件存在的問題找出來,對保證軟件質(zhì)量和提升測試工作效率都是非常有意義的。

1 相關(guān)工作

1.1 回歸測試

回歸測試是指修改了舊代碼后,重新進(jìn)行測試以確認(rèn)修改沒有引入新的錯誤或?qū)е缕渌a產(chǎn)生錯誤。對于一個軟件開發(fā)項(xiàng)目來說,項(xiàng)目的測試組在實(shí)施測試的過程中會將所開發(fā)的測試用例保存到“測試用例庫”中,并對其進(jìn)行維護(hù)和管理。當(dāng)?shù)玫揭粋€軟件的基線版本時,用于基線版本測試的所有測試用例就形成了基線測試用例庫。在需要進(jìn)行回歸測試時,就可以根據(jù)所選擇的回歸測試策略,從基線測試用例庫中提取合適的測試用例組成回歸測試包,通過運(yùn)行回歸測試包實(shí)現(xiàn)回歸測試。

在軟件生命周期中,即使一個得到良好維護(hù)的測試用例庫也可能變得相當(dāng)大,這使每次回歸測試都重新運(yùn)行完整的測試包變得不切實(shí)際。一個完全的回歸測試包括每個基線測試用例,時間和成本約束可能阻礙運(yùn)行這樣一個測試,有時測試工作不得不選擇一個縮減的回歸測試包來完成回歸測試。

1.2 相關(guān)技術(shù)的研究

測試用例的優(yōu)化技術(shù)旨在以小的運(yùn)行代價盡可能多地發(fā)現(xiàn)系統(tǒng)Bug。假設(shè)測試用例是能發(fā)現(xiàn)缺陷的;測試用例的運(yùn)行效率是一樣的。測試用例的集合的選取不僅是減少用例的數(shù)目,降低用例的執(zhí)行代價,也需要考慮測試覆蓋能力,即缺陷發(fā)現(xiàn)能力。在測試用例選擇優(yōu)化的問題上,已有很多文獻(xiàn)對此進(jìn)行了研究,如配對測試法[1]、關(guān)系樹模型[2]、蟻群模擬退火算法[3]及一些其他新的理論和方法[4?7]。

2 回歸測試用例集生成方法

2.1 基本原理

神經(jīng)網(wǎng)絡(luò)是通過對人腦的基本單元——神經(jīng)元的建模和聯(lián)接,探索模擬人腦神經(jīng)系統(tǒng)功能的模型,并研制一種具有學(xué)習(xí)、聯(lián)想、記憶和模式識別等智能信息處理功能的人工系統(tǒng)。

神經(jīng)網(wǎng)絡(luò)的一個重要特性是它能夠從環(huán)境中學(xué)習(xí),并把學(xué)習(xí)的結(jié)果分布存儲于網(wǎng)絡(luò)的突觸連接中。神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)是一個過程,在其所處環(huán)境的激勵下,相繼給網(wǎng)絡(luò)輸入一些樣本模式,并按照一定的規(guī)則(學(xué)習(xí)算法)調(diào)整網(wǎng)絡(luò)各層的權(quán)值矩陣,待網(wǎng)絡(luò)各層權(quán)值都收斂到一定值,學(xué)習(xí)過程結(jié)束,從而以新的方式響應(yīng)環(huán)境。

2.2 BP神經(jīng)網(wǎng)絡(luò)

Back?Propagation Network,由于其權(quán)值的調(diào)整采用反向傳播(Back Propagation)的學(xué)習(xí)算法,因此被稱為BP網(wǎng)絡(luò)。網(wǎng)絡(luò)中心思想是梯度下降法,通過梯度搜索技術(shù),使網(wǎng)絡(luò)實(shí)際輸出值與期望輸出值的誤差均方值最小。網(wǎng)絡(luò)的學(xué)習(xí)過程是一種誤差邊向后傳播邊修正權(quán)系數(shù)的過程。一般分三層:輸入層(Input Layer),隱層(Hide Layer),輸出層(Out Layer),也可以有2層或更多個隱層。層與層之間采用全互聯(lián)方式,同一層單元之間不存在相互連接,如圖1所示。endprint

由于神經(jīng)網(wǎng)絡(luò)具有自學(xué)習(xí)、自組織和并行處理等特征,并具有很強(qiáng)的容錯能力和聯(lián)想能力,因此,神經(jīng)網(wǎng)絡(luò)具有模式識別能力。在神經(jīng)網(wǎng)絡(luò)識別中,根據(jù)標(biāo)準(zhǔn)的輸入輸出模式對,采用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法,以標(biāo)準(zhǔn)的模式作為學(xué)習(xí)樣本進(jìn)行訓(xùn)練,通過學(xué)習(xí)調(diào)整神經(jīng)網(wǎng)絡(luò)的連接權(quán)值。當(dāng)訓(xùn)練滿足要求后,得到知識庫,如圖2所示。

BP算法的具體步驟如下:

(1) 用小的隨機(jī)數(shù)對每一層的權(quán)值[W]初始化,以保證網(wǎng)絡(luò)不被大的加權(quán)輸入飽和;

(2) 計(jì)算網(wǎng)絡(luò)各層輸出矢量以及網(wǎng)絡(luò)誤差[E;]

(3) 計(jì)算各層反傳的誤差變化并計(jì)算各層權(quán)值的修正值以及新權(quán)值;

(4) 再次計(jì)算權(quán)值修正后誤差的平方和;

(5) 檢查誤差是否小于給定誤差,若是,訓(xùn)練結(jié)束;否則繼續(xù)。

輸入信號[Xi]通過中間節(jié)點(diǎn)(隱藏層節(jié)點(diǎn))作用于輸出節(jié)點(diǎn),經(jīng)過非線性變換,產(chǎn)生輸出信號[Yk,]網(wǎng)絡(luò)訓(xùn)練的每個樣本包括輸入向量[X]和期望輸出量[t](類別),網(wǎng)絡(luò)輸出值[Y]和期望輸出值(真值)[t]之間的偏差,通過調(diào)整輸入節(jié)點(diǎn)與隱藏層節(jié)點(diǎn)的連接強(qiáng)度取值和隱藏層節(jié)點(diǎn)與輸出節(jié)點(diǎn)之間的連接強(qiáng)度以及閾值,使誤差沿梯度的方向下降,經(jīng)過反復(fù)學(xué)習(xí)訓(xùn)練,確定與最小誤差項(xiàng)對應(yīng)的網(wǎng)絡(luò)參數(shù)(權(quán)值和閾值),訓(xùn)練即告停止。學(xué)習(xí)樣本的數(shù)量和質(zhì)量影響學(xué)習(xí)效果和學(xué)習(xí)速度。

為了訓(xùn)練一個BP網(wǎng)絡(luò),需要計(jì)算網(wǎng)絡(luò)加權(quán)輸入矢量以及網(wǎng)絡(luò)輸出和誤差矢量,然后求得誤差平方和。當(dāng)所訓(xùn)練矢量的誤差平方和小于誤差目標(biāo),訓(xùn)練則停止;否則在輸出層計(jì)算誤差變化,且采用反向傳播學(xué)習(xí)規(guī)則調(diào)整權(quán)值,并重復(fù)此過程。當(dāng)網(wǎng)絡(luò)完成訓(xùn)練后,對網(wǎng)絡(luò)輸入一個不是訓(xùn)練集合中的矢量,網(wǎng)絡(luò)將給出輸出結(jié)果。

2.3 回歸測試用例包選取

基于全量的測試用例庫,回歸測試包的選擇策略可遵循下述基本算法進(jìn)行:

(1) 識別出軟件中被修改的部分。

(2) 從原基線測試用例庫[T]中,排除所有不再適用的測試用例,確定那些對新的軟件版本依然有效的測試用例,其結(jié)果是建立一個新的基線測試用例庫[T0。]

(3) 依據(jù)一定的策略從[T0]中選擇測試用例測試被修改的軟件。

(4) 如果必要,生成新的測試用例集[T1,]用于測試[T0]無法充分測試的軟件部分。

(5) 用[T1]執(zhí)行修改后的軟件。

在上述步驟中,第(2)和第(3)步測試驗(yàn)證修改是否破壞了現(xiàn)有的功能,第(4)和第(5)步測試驗(yàn)證修改工作本身。第(3)步中,將神經(jīng)網(wǎng)絡(luò)知識結(jié)合到測試領(lǐng)域,通過對樣本的學(xué)習(xí),確認(rèn)修改沒有引入新的錯誤或?qū)е缕渌a產(chǎn)生錯誤。

其主要思想為:對于[q]個輸入學(xué)習(xí)樣本:[P1,P2,…,Pq,]已知與其對應(yīng)的輸出樣本為:[T1,T2,…,Tq。]通過網(wǎng)絡(luò)的實(shí)際輸出[A1,A2,…,Aq]與目標(biāo)矢量[T1,T2,…,Tq]之間的誤差來修改其權(quán)值,使[Al (l=1,2,…,q)]與期望的[Tl]盡可能地接近,使網(wǎng)絡(luò)輸出層的誤差平方和達(dá)到最小。

3 回歸測試實(shí)踐的優(yōu)化

在項(xiàng)目測試過程中,不僅需要應(yīng)用高新的測試技術(shù),也要從宏觀上制定可行的測試策略,解決在有限的時間中使測試覆蓋率最優(yōu)化。本文從項(xiàng)目實(shí)踐角度出發(fā),提出以下的回歸測試策略:

(1) 對所有已修復(fù)Bug進(jìn)行驗(yàn)證;

(2) 對新增功能進(jìn)行全量重點(diǎn)測試;

(3) 對原有功能,按優(yōu)先級進(jìn)行測試?;谝欢ǖ娘L(fēng)險標(biāo)準(zhǔn)從基線測試用例庫中選擇回歸測試包。首先運(yùn)行最重要、關(guān)鍵和可疑的測試,而跳過那些非關(guān)鍵、優(yōu)先級別低或者高穩(wěn)定的測試用例,這些用例即便可能測試到缺陷,這些缺陷的嚴(yán)重性也較低,不影響系統(tǒng)的功能。一般而言,測試從主要特征到次要特征。

(4) 對修復(fù)的Bug可能會引入新的Bug的功能模塊重點(diǎn)測試,可采用本文介紹的神經(jīng)網(wǎng)絡(luò)進(jìn)行樣本訓(xùn)練和用例篩選。將回歸測試局限于被改變的模塊和它的接口上。通常,一個回歸錯誤一定涉及一個新的、修改的或刪除的代碼段。在允許的條件下,回歸測試盡可能覆蓋受到影響的部分。

(5) 如果情況允許,測試全部用例的策略是最安全的策略。但已經(jīng)運(yùn)行過許多次的回歸測試不太可能揭示新的錯誤,而且很多時候,由于時間、人員、設(shè)備和經(jīng)費(fèi)的原因,不允許選擇再測試全部用例的回歸測試策略,此時,可以選擇適當(dāng)?shù)牟呗赃M(jìn)行縮減的回歸測試。

4 結(jié) 語

將神經(jīng)網(wǎng)絡(luò)知識引入到測試領(lǐng)域是一個比較新的研究,本文就此方向進(jìn)行了研究,并給出了實(shí)例說明。然而,BP神經(jīng)網(wǎng)絡(luò)需要大量的樣本數(shù)據(jù)用來訓(xùn)練和測試,當(dāng)樣本數(shù)量不夠時,預(yù)測的誤偏差可能會較大,回歸測試開始時,由于數(shù)據(jù)樣本不足,可能會存在預(yù)測的偏差,所以下一步的研究方向?qū)⑹侨绾慰朔@一問題。

參考文獻(xiàn)

[1] 廖劍鋒,蔡賢濤.組合測試中用例集的選擇策略[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(11):65?70.

[2] 鈕鑫濤,聶長海,CHAN Alvin.組合測試故障定位的關(guān)系樹模型[J].計(jì)算機(jī)學(xué)報,2014,37(12):2505?2518.

[3] 聶長海,徐寶文,史亮.一種基于組合測試的軟件故障診斷方法[J].東南大學(xué)學(xué)報:自然科學(xué)版,2003,33(6):681?684.

[4] 徐寶文,聶長海,史亮,等.一種基于組合測試的軟件故障調(diào)試方法[J].計(jì)算機(jī)學(xué)報,2006,29(1):132?138.

[5] YILMAZ C. Covering arrays for efficient fault characterization in complex configuration space [J]. IEEE Transaction on Software Engineering, 2006, 32(1): 20?34.

[6] 鄭燕妮,李志蜀,李奇.蟻群模擬退火算法在測試用例約簡中的應(yīng)用[J].計(jì)算機(jī)工程,2009,35(2):197?199.

[7] 于秀山,于洪敏.軟件測試新技術(shù)與實(shí)踐[M].北京:電子工業(yè)出版社,2006.endprint

猜你喜歡
測試用例神經(jīng)網(wǎng)絡(luò)
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
神經(jīng)網(wǎng)絡(luò)抑制無線通信干擾探究
電子制作(2019年19期)2019-11-23 08:42:00
基于MBD模型自動生成測試用例的軟件測試方法
基于混合遺傳算法的回歸測試用例集最小化研究
基于需求模型的航天軟件測試用例生成方法
基于神經(jīng)網(wǎng)絡(luò)的拉矯機(jī)控制模型建立
復(fù)數(shù)神經(jīng)網(wǎng)絡(luò)在基于WiFi的室內(nèi)LBS應(yīng)用
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
基于支持向量機(jī)回歸和RBF神經(jīng)網(wǎng)絡(luò)的PID整定
基于神經(jīng)網(wǎng)絡(luò)分?jǐn)?shù)階控制的逆變電源
陆河县| 墨竹工卡县| 云浮市| 太保市| 夏津县| 安福县| 阿荣旗| 玛沁县| 台前县| 牟定县| 香港 | 潼关县| 西贡区| 平顺县| 蓬溪县| 昌吉市| 西乡县| 花莲市| 左贡县| 栾城县| 孟村| 巴东县| 建始县| 松原市| 贵德县| 贺州市| 武城县| 墨竹工卡县| 吉首市| 化德县| 阳信县| 江川县| 望谟县| 辉南县| 翁源县| 马尔康县| 奉贤区| 牡丹江市| 亳州市| 寿阳县| 黔东|