一種面向軟件升級(jí)的軟件測試方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明提供一種面向軟件升級(jí)的基于等式描述的蛻變關(guān)系自動(dòng)構(gòu)造的軟件測試 方法,該方法可以輔助蛻變測試的進(jìn)行,屬于軟件測試領(lǐng)域。
【背景技術(shù)】
[0002] 在軟件測試領(lǐng)域,測試人員通常憑借測試預(yù)言(test oracle)判斷待測程序是否 通過。但對(duì)很多程序而言(如科學(xué)計(jì)算程序),測試預(yù)言的獲取極其困難,測試人員往往無法 判斷特定輸入下的輸出結(jié)果的正確性。蛻變測試技術(shù)是一種新型的軟件測試技術(shù),該方法 通過檢測程序多次輸出結(jié)果之間的蛻變關(guān)系來測試程序,不需要構(gòu)造程序單次執(zhí)行的預(yù)期 輸出。
[0003] 蛻變關(guān)系是蛻變測試的核心。簡單說來,蛻變關(guān)系表明了程序多次執(zhí)行過程中輸 入的改變對(duì)輸出結(jié)果的影響。以三角函數(shù)sin為例,sin(X+31 )=-sin(X)是一個(gè)簡單的脫 變關(guān)系(輸入由X變?yōu)閄+η,則輸出結(jié)果互為相反數(shù)),當(dāng)測試計(jì)算sin函數(shù)的程序P時(shí),若 測試用例為x=39°,測試人員很難得知sin(39° )的準(zhǔn)確預(yù)期結(jié)果,卻能夠比較容易的判 斷sin(39° +π)和-Sin(39° )是否相等。若不相等,則程序P存在錯(cuò)誤。
[0004] 當(dāng)前蛻變測試相關(guān)研究主要包括:蛻變測試過程的優(yōu)化、蛻變關(guān)系的篩選、蛻變測 試與其他驗(yàn)證或測試技術(shù)的結(jié)合、蛻變測試技術(shù)在特定領(lǐng)域中的應(yīng)用等等?,F(xiàn)有研究雖然 可以有效彌補(bǔ)傳統(tǒng)測試方法的不足,但是缺少實(shí)用的蛻變關(guān)系構(gòu)造方法,且到目前為止沒 有方法能夠?qū)崿F(xiàn)自動(dòng)構(gòu)造蛻變關(guān)系。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提供了一種面向軟件升級(jí)的基于等式描述的蛻 變關(guān)系自動(dòng)構(gòu)造的軟件測試方法,可應(yīng)用于軟件版本升級(jí)過程中的缺少測試預(yù)言(test oracle)程序的檢錯(cuò)。
[0006] 本發(fā)明提供的技術(shù)方案如下:
[0007] -種面向軟件升級(jí)的軟件測試方法,其特征是,
[0008] A.在軟件升級(jí)前,測試人員針對(duì)現(xiàn)有軟件,構(gòu)造每個(gè)程序的蛻變關(guān)系;所述程序 指的是實(shí)現(xiàn)特定函數(shù)計(jì)算功能的程序代碼;
[0009] B.在軟件升級(jí)后,針對(duì)修改后的程序,測試人員產(chǎn)生η (該值可由用戶指定,例如, 可以設(shè)置η=100或200等)個(gè)一定范圍內(nèi)(如-5~5)的隨機(jī)數(shù)作為測試用例,然后將每個(gè) 測試用例和其在修改后程序中相應(yīng)的輸出代入修改之前程序構(gòu)造出的蛻變關(guān)系式中,查看 蛻變關(guān)系式是否成立,若修改后的程序不符合之前所構(gòu)造出來的蛻變關(guān)系,則說明軟件在 升級(jí)過程中存在錯(cuò)誤。
[0010] 其中,步驟A中,構(gòu)造程序蛻變關(guān)系的步驟如下:
[0011] 1)蛻變關(guān)系形式化:所有程序中的蛻變關(guān)系用如下公式表示:
[0012] /<.(/,,/2)^>/?μ(Ο ρα) (1)
[0013] 其中,I1為程序原有輸入,I2為改變后的輸入A 1為和I1相對(duì)應(yīng)的輸出,O2為和I2 相對(duì)應(yīng)的輸出,Ri代表11和I2之間的關(guān)系,Rtl代表O 1和O2之間的關(guān)系;
[0014] 2)蛻變關(guān)系參數(shù)化:為了構(gòu)造蛻變關(guān)系,將Ri和Rtl限制在等式范圍內(nèi),當(dāng)R i為線 性等式時(shí),包括如下情形:
[0015] 情形A :R。為線性等式;
[0016] 情形B :R。為二次等式;
[0017] 情形C :R。為三次等式;
[0018] 假設(shè)I1和I2各有η組參數(shù)值,分別表示為(X1, X2,…,xn>和〈y。y2,…,yn>,由于 以上三種情形中R i均為線性等式,I2的每個(gè)元素可看成I1所有元素的線性組合,即可表示 為:
【主權(quán)項(xiàng)】
1. 一種面向軟件升級(jí)的軟件測試方法,其特征是, A. 在軟件升級(jí)前,測試人員針對(duì)現(xiàn)有軟件,構(gòu)造每個(gè)程序的蛻變關(guān)系;所述程序指的 是實(shí)現(xiàn)特定函數(shù)計(jì)算功能的程序代碼; B. 在軟件升級(jí)后,針對(duì)修改后的程序,測試人員產(chǎn)生n個(gè)一定范圍內(nèi)的隨機(jī)數(shù)作為測 試用例,然后將每個(gè)測試用例和其在修改后程序中相應(yīng)的輸出代入修改之前程序構(gòu)造出的 蛻變關(guān)系式中,查看蛻變關(guān)系式是否成立,若修改后的程序不符合之前所構(gòu)造出來的蛻變 關(guān)系,則說明軟件在升級(jí)過程中存在錯(cuò)誤。
2. 如權(quán)利要求1所述的軟件測試方法,其特征是,步驟A中,構(gòu)造程序蛻變關(guān)系的步驟 如下: 1) 蛻變關(guān)系形式化:所有程序中的蛻變關(guān)系用如下公式表示: (1) 其中,Ii為程序原有輸入,12為改變后的輸入;〇:為和L相對(duì)應(yīng)的輸出,〇2為和12相對(duì) 應(yīng)的輸出,氏代表L和12之間的關(guān)系,R〇代表h和〇2之間的關(guān)系; 2) 蛻變關(guān)系參數(shù)化:為了構(gòu)造蛻變關(guān)系,將氏和&限制在等式范圍內(nèi),當(dāng)氏為線性等 式時(shí),包括如下情形: 情形A:R。為線性等式; 情形B:R。為二次等式; 情形C:R。為三次等式; 假設(shè)L和L各有n組參數(shù)值,分別表示為〈XpX2,…,xn>和〈ypy2,…,yn>,由于以上 三種情形中氏均為線性等式,12的每個(gè)元素可看成L所有元素的線性組合,即可表示為: 為=2^=1叫;?勺+ 4,其中%和1^為線性參數(shù);設(shè)a代表由%組成的數(shù)組a[i,j],@代 表向量〈buh,…,bn>,則IfaIi+旦; 2.1)對(duì)于情形A:假設(shè)被測程序?yàn)镕,則可用P(Ii)表示,02可用P(I2)表示;由于R〇也為線性等式,因此R〇可表示為: c1P(I1)+c2P(aI1+3 )+d=0 (2) 其中,Cl,c2,d以及a和0中的每個(gè)參數(shù)均為蛻變參數(shù); 2. 2)對(duì)于情形B:RQ可表不為: ClP2 (Ii) +c2P2 (al^ ^ ) +c3P(Ii)P(al^ ^ ) +(1^di) +d2P(ali+ ^ ) +e=〇 (3) 其中,Cl,c2,a,P,c3,屯,d2,e均為蛻變參數(shù); 2. 3)對(duì)于情形C:%可表示為: CjP3 (Ij) +c2P3 (alj+ ) +c3P2 (Ij)P(alj+ ) +c4P(Ij)P2 (alj+ ) +c5P2 (Ij) +c6P2 (alj+ ) +c7 P(Ii)P(al^ ^ ) +(1^di) +d2P(ali+ ^ ) +e=〇 (4) 其中,a,0,(^(1=1..7),4(」=1..2),6均為蛻變參數(shù); 三次以上的情形據(jù)此類推; 3) 蛻變關(guān)系構(gòu)造:定義了蛻變參數(shù)之后,使用進(jìn)化算法尋找盡可能多的符合條件的參 數(shù)組合,進(jìn)化算法每次執(zhí)行會(huì)給出一組最優(yōu)解,讓進(jìn)化算法重復(fù)運(yùn)行多次,得到多組最優(yōu) 解,每組最優(yōu)解即為一組蛻變參數(shù)值,將蛻變參數(shù)值帶入公式(2)、(3)或(4)中即可得到蛻 變關(guān)系式。
3. 如權(quán)利要求2所述的軟件測試方法,其特征是,步驟3)中,使用聚類算法,將多個(gè)相 似的最優(yōu)解合并為一個(gè)解。
4. 如權(quán)利要求2所述的軟件測試方法,其特征是,當(dāng)超過指定閾值的蛻變關(guān)系被違反 時(shí),即可判斷出程序中存在錯(cuò)誤。
5. 如權(quán)利要求4所述的軟件測試方法,其特征是,所述閾值為5%。
6. 如權(quán)利要求2所述的軟件測試方法,其特征是,步驟3)中使用的進(jìn)化算法為粒子群 算法:在粒子群算法中,每一個(gè)候選解都被稱作一個(gè)粒子,考慮在一個(gè)D維空間里搜索N個(gè) 粒子,用<=<?,*",4>和4=</纟,/;2,"%/; 0,>來分別代表第1(1彡1:^)個(gè)粒子在時(shí) 間t(t=l,2,…)的速度和位置;粒子根據(jù)下式更新速度:
在上式中,t4+1表示粒子i在d維上t+1時(shí)刻的速度;w是慣性權(quán)重;Cl和c2是學(xué)習(xí)因 子;^和r2是[0,1]之間的隨機(jī)數(shù),用以保持群體的多樣性;尤是粒子i在d維上到時(shí)刻 t為止搜索到的最優(yōu)位置;是整個(gè)粒子群迄今為止搜索到的最優(yōu)位置;/【是粒子i的d 維位置矢量,且粒子根據(jù)如下公式更新自己的位置: l,J1=l,u!+v,idl (h) 起始時(shí)刻,t=l,N個(gè)粒子的初速度和起始位置均為隨機(jī)生成,在到達(dá)終止時(shí)刻T之前, 每個(gè)粒子的速度和位置根據(jù)公式(a)和公式(b)更新。
7. 如權(quán)利要求6所述的軟件測試方法,其特征是,將學(xué)習(xí)因子Cl和c2均設(shè)為1. 49445, 粒子數(shù)目N定位20,總的迭代次數(shù)定為350,t時(shí)刻的慣性權(quán)重一=0. 9-0. 5* (t/T)2。
【專利摘要】一種面向軟件升級(jí)的軟件測試方法,所述方法基于等式描述的蛻變關(guān)系自動(dòng)構(gòu)造。在軟件升級(jí)前,測試人員針對(duì)現(xiàn)有軟件,構(gòu)造每個(gè)程序的蛻變關(guān)系;所述程序指的是實(shí)現(xiàn)特定函數(shù)計(jì)算功能的程序代碼;在軟件升級(jí)后,針對(duì)修改后的程序,測試人員產(chǎn)生n個(gè)一定范圍內(nèi)的隨機(jī)數(shù)作為測試用例,然后將每個(gè)測試用例和其在修改后程序中相應(yīng)的輸出代入修改之前程序構(gòu)造出的蛻變關(guān)系式中,查看蛻變關(guān)系式是否成立,若修改后的程序不符合之前所構(gòu)造出來的蛻變關(guān)系,則說明軟件在升級(jí)過程中存在錯(cuò)誤。通過本發(fā)明,測試人員可以將構(gòu)造出的蛻變關(guān)系應(yīng)用到蛻變測試中,從而驗(yàn)證軟件版本升級(jí)過程中程序的正確性。
【IPC分類】G06F11-36, G06F9-445
【公開號(hào)】CN104699595
【申請(qǐng)?zhí)枴緾N201310655851
【發(fā)明人】張潔, 陳俊潔, 郝丹, 熊英飛, 謝冰, 梅宏
【申請(qǐng)人】北京大學(xué)
【公開日】2015年6月10日
【申請(qǐng)日】2013年12月6日