本發(fā)明涉及軟件預(yù)測,更具體的說是涉及一種軟件測試預(yù)言智能化生成方法。
背景技術(shù):
1、測試預(yù)言(test?oracle)是一種判斷待測程序在給定測試輸入下的執(zhí)行結(jié)果是否符合預(yù)期的機制和方法。在軟件測試中,測試預(yù)言的作用至關(guān)重要,測試預(yù)言的質(zhì)量直接影響測試活動有效性和軟件質(zhì)量。
2、現(xiàn)有測試預(yù)言生成方法主要分為基于軟件形式化規(guī)格說明或形式化模型(例如狀態(tài)機或時序邏輯規(guī)范等)的測試預(yù)言生成方法、基于各種軟件制品(例如軟件需求和設(shè)計文檔、軟件執(zhí)行屬性信息等)的測試預(yù)言生成方法、基于常識或隱含的知識生成測試預(yù)言這三類方法。第一類方法需要軟件開發(fā)人員或測試人員給出軟件的形式化規(guī)格說明,人工參與工作量較大,形式化規(guī)格說明缺乏以及程序行為描述不全面是該類方法面臨的嚴(yán)重挑戰(zhàn)。第二類研究克服了第一類研究面臨的挑戰(zhàn),正在成為一個活躍的研究方向,主要研究包括基于規(guī)格說明或編程接口挖掘的方法、基于程序文檔的挖掘方法、蛻變測試、基于源碼的靜態(tài)和動態(tài)分析方法以及基于機器學(xué)習(xí)的方法等,該類測試預(yù)言的生成方法包括全自動的方法或人工輔助的半自動化方法,其中半自動化方法較多。第三類應(yīng)用領(lǐng)域較窄,僅針對特種類型或特定的應(yīng)用范圍的軟件。
3、目前雖然研究人員已提出了各種自動化測試輸入生成技術(shù),但還存在智能化程度低、難以自動驗證測試結(jié)果等問題。
4、因此,如何提供一種智能化程度高、可以自動驗證測試結(jié)果的測試預(yù)言智能化生成方法是本領(lǐng)域技術(shù)人員亟需解決的問題。
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明提供了一種軟件測試預(yù)言智能化生成方法,智能化程度高、可以自動驗證測試結(jié)果。
2、為了實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
3、一種軟件測試預(yù)言智能化生成方法,包括:
4、s1:基于lstm網(wǎng)絡(luò)和自注意力機制構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)模型;
5、s2:基于被測軟件測試用例數(shù)據(jù)訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)模型;
6、s3:將待測軟件測試用例數(shù)據(jù)輸入至訓(xùn)練后的循環(huán)神經(jīng)網(wǎng)絡(luò)模型中,輸出預(yù)言信息。
7、優(yōu)選的,基于lstm網(wǎng)絡(luò)和自注意力機制構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)模型,具體包括:
8、1)輸入層:將被測軟件測試用例數(shù)據(jù),通過多元回歸分析進行指標(biāo)篩選,再將數(shù)據(jù)通過輸入層輸入到模型中,設(shè)輸入數(shù)據(jù)長度為i,輸入向量x=[x1,x2,x3,…,xi]t;
9、2)lstm網(wǎng)絡(luò)層:經(jīng)過多元回歸分析篩選指標(biāo)后的數(shù)據(jù)輸入至lstm網(wǎng)絡(luò)層,經(jīng)過內(nèi)部激活函數(shù)進行非線性變換從而學(xué)習(xí)不同指標(biāo)間關(guān)系,采用兩層lstm網(wǎng)絡(luò)結(jié)構(gòu),輸出向量為a=[a1,a2,a3,…,ai]t;
10、3)自注意力機制層:自注意力機制層的輸入為lstm網(wǎng)絡(luò)層的輸出向量a,基于輸出向量a計算query值、key值和value值,并求和得到自注意力層的輸出向量b:
11、qi=wqai
12、ki=wkai
13、vi=wvai
14、
15、其中,wq、wk、wv是可學(xué)習(xí)的參數(shù),dk為輸入特征維度,a1,a2,a3,…,ai是輸入的特征值;
16、4)輸出層:將自注意力層的輸出向量b作為輸出層的輸入向量,輸出層通過全連接層得到預(yù)測值y=[y1,y2,y3,…,yi]t。
17、優(yōu)選的,基于被測軟件測試用例數(shù)據(jù)訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)模型,具體包括:
18、步驟2.1:將被測軟件歷史測試用例庫里的測試用例數(shù)據(jù)作為訓(xùn)練樣本,對循環(huán)神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練;
19、步驟2.2:lstm網(wǎng)絡(luò)訓(xùn)練算法采用反向傳播算法,前向計算每個神經(jīng)元的輸出值;
20、步驟2.3:反向計算每個神經(jīng)元的誤差項值,lstm誤差項的反向傳播包括兩個方向,即沿時間的反向傳播,從當(dāng)前t時刻開始,計算每個時刻的誤差項,另一個是將誤差項向上一層傳播;
21、步驟2.4:根據(jù)相應(yīng)的誤差項計算每個權(quán)重的梯度;
22、步驟2.5:若達到設(shè)定的訓(xùn)練目標(biāo),包括迭代次數(shù)和誤差精度,結(jié)束訓(xùn)練,否則,繼續(xù)訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)。
23、優(yōu)選的,還包括:
24、s4:將輸出的預(yù)言信息與實際預(yù)期值進行比較,若誤差小于設(shè)定的誤差精度,則判定當(dāng)前測試軟件通過,否則判定當(dāng)前測試軟件失敗。
25、優(yōu)選的,在數(shù)據(jù)輸入至循環(huán)神經(jīng)網(wǎng)絡(luò)模型前進行預(yù)處理,具體包括:
26、將待測軟件中非數(shù)值型數(shù)據(jù)轉(zhuǎn)換為數(shù)值型數(shù)據(jù)。
27、經(jīng)由上述的技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本發(fā)明公開提供了一種軟件測試預(yù)言智能化生成方法,采用深度學(xué)習(xí)方法進一步提高測試預(yù)言生成的準(zhǔn)確性,提升軟件測試效率和智能化水平,解決了現(xiàn)有測試技術(shù)難以自動驗證測試結(jié)果的問題,實現(xiàn)軟件智能化測試驗證。
1.一種軟件測試預(yù)言智能化生成方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的一種軟件測試預(yù)言智能化生成方法,其特征在于,基于lstm網(wǎng)絡(luò)和自注意力機制構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)模型,具體包括:
3.根據(jù)權(quán)利要求1所述的一種軟件測試預(yù)言智能化生成方法,其特征在于,基于被測軟件測試用例數(shù)據(jù)訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)模型,具體包括:
4.根據(jù)權(quán)利要求1所述的一種軟件測試預(yù)言智能化生成方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1所述的一種軟件測試預(yù)言智能化生成方法,其特征在于,在數(shù)據(jù)輸入至循環(huán)神經(jīng)網(wǎng)絡(luò)模型前進行預(yù)處理,具體包括: