韓育珍,陳軍華,高建華
(上海師范大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,上海 200234)
條件篩選搜索系統(tǒng)包含大量數(shù)據(jù)信息,用戶可以定制條件,以篩選并顯示滿足條件的數(shù)據(jù)信息,它需要承受大量用戶的服務(wù)請(qǐng)求,必須適應(yīng)長(zhǎng)期和高頻的訪問(wèn)操作[1],帶來(lái)保障服務(wù)可靠性的挑戰(zhàn)。傳統(tǒng)軟件測(cè)試技術(shù)可以有效檢測(cè)并糾正軟件中存在的故障和缺陷以應(yīng)對(duì)這一挑戰(zhàn),但它存在著兩大問(wèn)題,即測(cè)試用例集的可靠性問(wèn)題[2]和 Oracle 問(wèn)題。其中,Oracle問(wèn)題表示待測(cè)軟件的執(zhí)行輸出結(jié)果復(fù)雜或者無(wú)法預(yù)知的情況[3]。蛻變測(cè)試(metamorphic testing)是一種有效緩解復(fù)雜系統(tǒng)Oracle問(wèn)題的軟件測(cè)試方法[3,4],其測(cè)試方法是檢查執(zhí)行程序的多次輸入輸出是否滿足預(yù)期的蛻變關(guān)系(metamorphic relationship)。
學(xué)者們已使用蛻變測(cè)試對(duì)Oracle問(wèn)題的緩解進(jìn)行了初步探索,發(fā)現(xiàn)構(gòu)建有效的蛻變關(guān)系可以幫助緩解Oracle問(wèn)題[5,6]。Zhou等[6]提出通過(guò)檢查程序多次輸出之間的關(guān)系代替檢查程序的單次輸出執(zhí)行測(cè)試。Segura等[3]提出了定義了等價(jià)性、等效性、子集、非交集、并集、差集6種蛻變關(guān)系輸出模式(metamorphic relationship output pattern)。Zhou等[7,8]提出了基于對(duì)稱(symmetry)的蛻變關(guān)系輸出模式。Sun等[9]提出了蛻變關(guān)系輸入模式的概念。Segura等[1]提出了輸入等價(jià)、洗牌、合并條件、析取條件、不相交的分區(qū)、完整分區(qū)和分區(qū)差異7種蛻變關(guān)系模式。
研究發(fā)現(xiàn),條件篩選搜索系統(tǒng)降低了信息的認(rèn)知負(fù)載,增加了多樣化的搜索模式。通過(guò)分析現(xiàn)有的蛻變關(guān)系模式在條件篩選搜索系統(tǒng)執(zhí)行測(cè)試時(shí)檢測(cè)到的軟件設(shè)計(jì)故障及檢測(cè)效率,提出了兩種蛻變關(guān)系模式,有效提高了軟件設(shè)計(jì)的故障檢測(cè)效率。
本文的主要貢獻(xiàn)如下:
(1)在“合并條件”和“析取條件”兩種蛻變關(guān)系模式的基礎(chǔ)上提出了檢測(cè)效率更高的“IO組對(duì)稱相等”蛻變關(guān)系模式;
(2)根據(jù)條件篩選搜索系統(tǒng)中的多項(xiàng)選擇條件,提出了“交集等價(jià)”模式的概念;
(3)通過(guò)實(shí)驗(yàn)驗(yàn)證提出的兩種蛻變關(guān)系模式具有可操作性和適用性。
當(dāng)傳統(tǒng)軟件測(cè)試在遇到復(fù)雜系統(tǒng)Oracle問(wèn)題而無(wú)法預(yù)估程序輸出結(jié)果或者程序輸出結(jié)果復(fù)雜時(shí),測(cè)試人員難以判斷程序的輸出結(jié)果與預(yù)期結(jié)果是否一致,于是通過(guò)檢查程序多次輸入輸出之間的關(guān)系是否滿足預(yù)期構(gòu)建的蛻變關(guān)系,從而驗(yàn)證程序軟件設(shè)計(jì)的正確性,這種測(cè)試方法被稱為蛻變測(cè)試[10,11]。蛻變關(guān)系是源測(cè)試用例生成后續(xù)測(cè)試用例的前提,以便執(zhí)行源和后續(xù)測(cè)試用例并檢查其輸出。因此,蛻變測(cè)試也被認(rèn)為是一種有效的測(cè)試用例生成技術(shù)[2]。
自Chen等[12]提出檢查程序多次輸出之間的關(guān)系來(lái)執(zhí)行蛻變測(cè)試以來(lái),關(guān)于蛻變測(cè)試的應(yīng)用研究不僅僅體現(xiàn)在搜索引擎方面[1,3,9],而且也應(yīng)用在生物信息學(xué)[13]、醫(yī)療系統(tǒng)[14]和機(jī)器學(xué)習(xí)[15]等領(lǐng)域。
蛻變測(cè)試過(guò)程如圖1所示。
圖1 蛻變測(cè)試
其中,SUT表示有a+1個(gè)輸入?yún)?shù),b+1個(gè)輸出結(jié)果的待測(cè)軟件,I0表示使用傳統(tǒng)測(cè)試用例生成技術(shù)生成的源測(cè)試用例,Ii,i=[1,n] 是源測(cè)試用例根據(jù)蛻變關(guān)系修改輸入?yún)?shù)作為后續(xù)測(cè)試用例,Ij1,Ij2,…,Ija,j=[1,n] 表示源測(cè)試用例和后續(xù)測(cè)試用例的a+1個(gè)待輸入?yún)?shù),O(I0) 和O(Ii) 為源測(cè)試用例和后續(xù)測(cè)試用例對(duì)應(yīng)的n+1次輸出,Oj1,Oj2,…,Ojb表示O(Ij) 的b+1個(gè)輸出結(jié)果。蛻變測(cè)試是通過(guò)比較O(I0) 和O(Ii) 多個(gè)輸出結(jié)果之間的關(guān)系是否滿足構(gòu)建的蛻變關(guān)系來(lái)驗(yàn)證SUT的正確性。
一般地,函數(shù)f的蛻變關(guān)系表示為一系列函數(shù)輸入之間的關(guān)系I0,I1,…,In(n≥1) 及其對(duì)應(yīng)的輸出值f(I0),f(I1),…,f(In) 之間的關(guān)系[16],即蛻變關(guān)系
R={(I0,I1,…,In),(f(I0),f(I1),…,f(In))|n≥1}
其中,I0為源輸入,f(I0) 為源輸出,I1,I2,…,In為后續(xù)輸入,f(I1),f(I2),…,f(In) 成為后續(xù)輸出。
蛻變測(cè)試中蛻變關(guān)系的構(gòu)建和識(shí)別依賴于測(cè)試人員對(duì)程序的熟悉和了解,常規(guī)方法是檢查程序規(guī)范或者用戶文檔,并考慮如何修改程序輸入,進(jìn)而在輸出中產(chǎn)生預(yù)期的變化[2]。但這個(gè)過(guò)程是一項(xiàng)手動(dòng)操作過(guò)程,必須根據(jù)每個(gè)被測(cè)程序的預(yù)期功能從頭開(kāi)始檢測(cè)和識(shí)別。為了減輕構(gòu)建和識(shí)別蛻變關(guān)系的負(fù)擔(dān),S. Segura等[1,3]提出了7種適用于傳統(tǒng)搜索引擎的蛻變關(guān)系模式:
等效性(shuffling):表示源輸入和后續(xù)輸入相等,源輸出和后續(xù)輸出相同但是順序相等或不相等的關(guān)系。
等價(jià)性(input equivalence):指的是源輸入和后續(xù)輸入等價(jià),源輸出和后續(xù)輸出相同且順序也相等的關(guān)系。該關(guān)系模式是上一個(gè)關(guān)系模式的子集。
合并條件(conjunctive conditions):表示在源輸入的基礎(chǔ)上,搜索條件不斷增加作為多次后續(xù)輸入,其對(duì)應(yīng)的輸出都是前一次輸出的子集。
析取條件(disjunctive conditions):表示在源輸入的基礎(chǔ)上,搜索條件不斷減少作為多次后續(xù)輸入,其相應(yīng)的輸出關(guān)系可以概括為前一次輸出是后一次輸出的子集。該關(guān)系模式是在上一個(gè)關(guān)系模式的基礎(chǔ)上對(duì)稱定義的。
不相交的分區(qū)(disjoint partitions):表示源輸入和后續(xù)輸入無(wú)交集,且對(duì)應(yīng)的源輸出和后續(xù)輸出交集為空集的關(guān)系。
完整分區(qū)(complete partitions):表示源輸入是所有后續(xù)輸入的并集,源輸出與所有后續(xù)輸出并集相等的關(guān)系。該關(guān)系模式與上一個(gè)關(guān)系模式的定義分別源自于關(guān)系代數(shù)中的交集與并集。
分區(qū)差異(partiton difference):表示后續(xù)輸出之間兩兩不相交,但是都屬于源輸出子集的關(guān)系,在創(chuàng)建和更新的任務(wù)列表中比較常見(jiàn)。
通過(guò)對(duì)條件篩選搜索系統(tǒng)的了解和熟悉,分析改進(jìn)了“合并條件”和“析取條件”模式,提出了“IO組對(duì)稱相等”模式,并且根據(jù)條件篩選搜索系統(tǒng)的多項(xiàng)選擇搜索模式在“等價(jià)性”和“完整分區(qū)”模式的基礎(chǔ)上提出了“交集等價(jià)”模式。接下來(lái),引入改進(jìn)提出的兩種蛻變關(guān)系模式,并使用數(shù)學(xué)關(guān)系表示,在下面的關(guān)系式中I0為源輸入,O為源輸出。Ii為后續(xù)輸入,Oi為后續(xù)輸出。
IO組對(duì)稱相等模式是在“合并條件”和“析取條件”模式的基礎(chǔ)上改進(jìn)的,將程序中的多次輸入作為一個(gè)源輸入組,將源輸入組中的多次輸入對(duì)稱得到一個(gè)后續(xù)輸入組,源輸出組和后續(xù)輸出組對(duì)稱等價(jià)。但源輸入組和源輸出組中的多次輸入輸出應(yīng)該滿足“合并條件”模式指定的關(guān)系,后續(xù)輸入組和后續(xù)輸出組中的多次輸入輸出應(yīng)滿足“析取條件”模式指定的關(guān)系。如式(1)所示,數(shù)學(xué)關(guān)系表示為
I0=I01、I02、…、I0n,I1=I11、I12、…、I1n,且I11=I0n,I12=I0(n-1),…,I1n=I01?
O0=O01、O02、…、O0n,
O1=O11、O12、…、O1n,n≥1
且O11=O0n,O12=O0(n-1),…,O1n=O01
(1)
同時(shí)應(yīng)滿足I01?I02?…?I0n,I11?I12?…?I1n,O01?O02?…?O0n,O11?O12?…?O1n。
例如:源輸入測(cè)試用例組中的3次輸入分別為I01=電腦、I02=筆記本電腦、I03=戴爾筆記本電腦,滿足I01?I02?I03, 對(duì)應(yīng)的源測(cè)試用例組輸出結(jié)果為O01、O02、O03, 且應(yīng)滿足O01?O02?O03, 后續(xù)輸入測(cè)試用例組的3次輸入分別為I11=戴爾筆記本電腦、I12=筆記本電腦、I13=電腦,滿足I11?I12?I13, 對(duì)應(yīng)的后續(xù)測(cè)試用例組輸出結(jié)果為O11、O12、O13, 且應(yīng)滿足O11?O12?O13, 同時(shí)源輸出組和后續(xù)輸出組之間的關(guān)系應(yīng)滿足O01=O13,O02=O12,O03=O11, 或滿足其中任意一種關(guān)系,表示測(cè)試成功,反之測(cè)試失敗。
交集等價(jià)模式的定義源自于關(guān)系代數(shù)中的交集運(yùn)算,是在“等價(jià)性”和“完整分區(qū)”模式的基礎(chǔ)上提出的一種適用于多項(xiàng)選擇搜索功能的蛻變關(guān)系模式,它表示源輸入與所有后續(xù)輸入交集等價(jià),且最后一次后續(xù)輸入是其它后續(xù)輸入的并集,源輸出等價(jià)于n-1次后續(xù)輸出之和減去第n次后續(xù)輸出的關(guān)系。如式(2)所示,數(shù)學(xué)關(guān)系表示為
I0=I1∩I2∩…∩In,In=I1∪I2∪…∪In-1?
O0=O1+O2+…+On-1-On,n≥1
(2)
例如:安居客搜索租房的相關(guān)房源信息,添加篩選條件“戶型”為“二室”作為I0,修改篩選條件為“一室&二室”生成I1、修改條件為“二室&三室”作為I2、修改條件為“一室&二室&三室”I3,滿足I3=I1∪I2。 判斷O0、O1、O2、O3之間的關(guān)系是否滿足O0=O1+O2-O3。
利用蛻變關(guān)系模式構(gòu)建的蛻變關(guān)系,簡(jiǎn)化了執(zhí)行蛻變測(cè)試過(guò)程中蛻變關(guān)系的識(shí)別。下面將從理論和具體測(cè)試步驟兩個(gè)角度說(shuō)明如何在條件篩選搜索系統(tǒng)中利用蛻變關(guān)系模式構(gòu)建和識(shí)別蛻變關(guān)系執(zhí)行蛻變測(cè)試,是一種面向最終用戶的軟件測(cè)試方法。蛻變關(guān)系模式表示源輸入輸出和后續(xù)輸入輸出之間的關(guān)系,是一種抽象模式;將抽象化的蛻變關(guān)系模式實(shí)例化即為構(gòu)建蛻變關(guān)系的過(guò)程,利用傳統(tǒng)軟件測(cè)試方法生成源測(cè)試用例輸入,根據(jù)構(gòu)建的蛻變關(guān)系修改源測(cè)試用例的輸入?yún)?shù)生成后續(xù)測(cè)試用例輸入,是抽象模式具體化的過(guò)程;執(zhí)行源和后續(xù)測(cè)試用例輸入,并比較源測(cè)試用例輸出和后續(xù)測(cè)試用例輸出結(jié)果之間的關(guān)系是否違反了蛻變關(guān)系,是識(shí)別蛻變關(guān)系的過(guò)程。如果符合蛻變關(guān)系則測(cè)試通過(guò),反之,測(cè)試不通過(guò)。如圖2所示。
圖2 蛻變關(guān)系模式構(gòu)建和識(shí)別蛻變關(guān)系執(zhí)行蛻變測(cè)試的過(guò)程
基于條件篩選搜索系統(tǒng)的具體蛻變測(cè)試步驟如下:
蛻變測(cè)試:識(shí)別條件篩選搜索系統(tǒng)多次輸出結(jié)果之間的蛻變關(guān)系
輸入:用戶根據(jù)需求自定義的搜索條件I,I={I0,I1,…,In|(n≥1)}
輸出:滿足搜索條件I的輸出數(shù)據(jù)集O,O={O0,O1,…,On|(n≥1)}
步驟1 在輸入框中Input并添加Select作為源測(cè)試用例輸入I0, 執(zhí)行搜索得到的結(jié)果為源測(cè)試用例輸出O0。
步驟2 為待測(cè)搜索程序功能選擇合適的蛻變關(guān)系模式(MRP)。
步驟3 修改源測(cè)試用例的Input或者Select作為后續(xù)測(cè)試用例輸入Ii,i=1,2,…,n; 修改后的Ii與I0應(yīng)該滿足MRP指定的輸入之間的關(guān)系。
步驟4 對(duì)后續(xù)測(cè)試用例輸入Ii,i=1,2,…,n執(zhí)行搜索,得到的后續(xù)測(cè)試用例輸出結(jié)果分別為O1,…,On。
步驟5 比較源測(cè)試用例輸出O0和后續(xù)測(cè)試用例輸出O1,…,On是否滿足蛻變關(guān)系指定的輸出之間的關(guān)系,若滿足,表示測(cè)試通過(guò);反之測(cè)試不通過(guò),基于條件篩選的搜索系統(tǒng)存在軟件故障。
首先,確定待測(cè)條件篩選搜索系統(tǒng)的功能,并利用傳統(tǒng)軟件測(cè)試方式測(cè)試程序能否正確執(zhí)行。若程序可以正確執(zhí)行,則對(duì)程序進(jìn)行蛻變測(cè)試。
其次,用戶根據(jù)待測(cè)條件篩選搜索系統(tǒng)的功能,利用傳統(tǒng)軟件測(cè)試方法自定義搜索條件和篩選條件生成源測(cè)試用例,選擇合適的蛻變關(guān)系模式,并且根據(jù)蛻變關(guān)系模式源輸入和后續(xù)輸入之間的關(guān)系修改源測(cè)試用例的輸入?yún)?shù)生成后續(xù)測(cè)試用例輸入。
最后,執(zhí)行程序并記錄程序的源測(cè)試用例輸出與后續(xù)測(cè)試用例輸出結(jié)果,比較多次輸出結(jié)果之間的關(guān)系是否符合構(gòu)建的蛻變關(guān)系。如果不違反蛻變關(guān)系,表示蛻變測(cè)試通過(guò),若違反蛻變關(guān)系則表示測(cè)試不通過(guò),意味著條件篩選搜索系統(tǒng)存在軟件設(shè)計(jì)故障。
實(shí)驗(yàn)以京東商城和安居客兩大網(wǎng)站的條件篩選搜索系統(tǒng)作為基礎(chǔ)實(shí)驗(yàn)環(huán)境,兩者在中國(guó)擁有眾多的用戶,數(shù)據(jù)源類型和數(shù)量豐富,樣本數(shù)據(jù)真實(shí)可靠。研究顯示[17],蛻變測(cè)試只需要平均3-6種不同的蛻變關(guān)系就可以揭示至少90%的Oracle能夠檢測(cè)到的故障。因此,實(shí)驗(yàn)根據(jù)網(wǎng)站的搜索功能設(shè)計(jì)首先選用了現(xiàn)有方法中的等價(jià)性、等效性、合并條件、析取條件、不相交的分區(qū)、完整分區(qū)6種蛻變關(guān)系模式構(gòu)建和識(shí)別蛻變關(guān)系執(zhí)行蛻變測(cè)試,并記錄檢測(cè)結(jié)果。然后沿用了等價(jià)性、等效性、不相交的分區(qū)、完整分區(qū)4種蛻變關(guān)系模式并加入改進(jìn)提出的交集等價(jià)和IO組對(duì)稱相等兩種蛻變關(guān)系模式共6種蛻變關(guān)系模式作為改進(jìn)的方法構(gòu)建蛻變關(guān)系執(zhí)行蛻變測(cè)試作比較。最終指出兩個(gè)網(wǎng)站中存在的軟件設(shè)計(jì)問(wèn)題以改進(jìn)網(wǎng)站的設(shè)計(jì)質(zhì)量。
實(shí)驗(yàn)欲回答3個(gè)問(wèn)題:
Q1:改進(jìn)提出的兩種蛻變關(guān)系模式是否能夠幫助簡(jiǎn)化蛻變測(cè)試,并提高檢測(cè)效率?
Q2:實(shí)驗(yàn)過(guò)程中存在哪些潛在的有效性威脅?
Q3:改進(jìn)方法中的6種蛻變關(guān)系模式在多大程度上優(yōu)于現(xiàn)有方法中的6種蛻變關(guān)系模式?
鑒于Web網(wǎng)站中龐大的數(shù)據(jù)量,實(shí)驗(yàn)選用了京東商城中圖書(shū)、美妝、運(yùn)動(dòng)、電腦和安居客中新房、二手房、租房、寫(xiě)字樓8個(gè)具有代表性網(wǎng)頁(yè)的條件篩選搜索結(jié)果作為實(shí)驗(yàn)數(shù)據(jù),在對(duì)條件篩選搜索功能測(cè)試的過(guò)程中生成源測(cè)試用例,并通過(guò)蛻變關(guān)系模式實(shí)例化的蛻變關(guān)系,構(gòu)建后續(xù)測(cè)試用例,執(zhí)行蛻變測(cè)試。
利用現(xiàn)有方法中等價(jià)性、等效性、合并條件、析取條件、不相交的分區(qū)、完整分區(qū)6種蛻變關(guān)系模式構(gòu)建的蛻變關(guān)系和測(cè)試次數(shù)數(shù)據(jù)見(jiàn)表1。
表1 前6種MRPS構(gòu)建的蛻變關(guān)系與測(cè)試次數(shù)
采用等價(jià)性、等效性、IO組對(duì)稱相等、交集等價(jià)、不相交的分區(qū)和完整分區(qū)6種蛻變關(guān)系模式作為改進(jìn)方法構(gòu)建的蛻變關(guān)系和測(cè)試次數(shù)數(shù)據(jù)見(jiàn)表2。
表1和表2第一列表示兩個(gè)網(wǎng)站中的8個(gè)網(wǎng)頁(yè),其余列分別是針對(duì)數(shù)據(jù)集的8個(gè)網(wǎng)頁(yè)利用蛻變關(guān)系模式生成的蛻變關(guān)系(MR)數(shù)量、執(zhí)行蛻變測(cè)試的次數(shù)(Count)。網(wǎng)站中不同類型的搜索功能具有不同的篩選條件,因此根據(jù)不同的篩選條件為每種模式構(gòu)建了2個(gè)-8個(gè)蛻變關(guān)系,總計(jì)473個(gè)蛻變關(guān)系,并利用這些關(guān)系執(zhí)行至少兩次蛻變測(cè)試,以保證檢測(cè)的真實(shí)有效性。
表2 后6種MRPS構(gòu)建的蛻變關(guān)系與測(cè)試次數(shù)
實(shí)驗(yàn)采用了精確率(Precision)和召回率(Recall)衡量檢測(cè)效果。精確率如式(3)所示,可以反應(yīng)算法的查準(zhǔn)率;召回率如式(4)所示,可以反應(yīng)算法的查全率
(3)
(4)
其中,P表示精確率,R表示召回率,TP表示檢測(cè)到故障的相關(guān)數(shù)據(jù)量,F(xiàn)P表示未檢測(cè)到故障的相關(guān)數(shù)據(jù),F(xiàn)N表示未檢測(cè)到故障的不相關(guān)信息量。實(shí)驗(yàn)分析了現(xiàn)有方法中的等價(jià)性、等效性、合并條件、析取條件、不相交的分區(qū)、完整分區(qū)6種蛻變關(guān)系模式和結(jié)合本文改進(jìn)提出的兩種蛻變關(guān)系模式組成的等價(jià)性、等效性、IO組對(duì)稱相等、交集等價(jià)、不相交的分區(qū)、完整分區(qū)6種蛻變關(guān)系模式下對(duì)京東商城和安居客兩個(gè)網(wǎng)站共8個(gè)網(wǎng)頁(yè)執(zhí)行蛻變測(cè)試的檢測(cè)效果,根據(jù)式(3)和式(4)計(jì)算得出每個(gè)網(wǎng)頁(yè)基于改進(jìn)前和改進(jìn)后的6種蛻變關(guān)系模式執(zhí)行蛻變測(cè)試的精確率和召回率(見(jiàn)表3)。
表3 不同關(guān)系模式下的精確率和召回率
根據(jù)實(shí)驗(yàn)結(jié)果,可以回答實(shí)驗(yàn)部分提出的3個(gè)問(wèn)題。
針對(duì)Q1:改進(jìn)提出的蛻變關(guān)系模式能夠幫助簡(jiǎn)化蛻變測(cè)試。傳統(tǒng)的蛻變測(cè)試完全依賴于測(cè)試人員對(duì)于待測(cè)軟件各個(gè)功能的熟悉程度,識(shí)別每個(gè)蛻變關(guān)系都必須根據(jù)每個(gè)被測(cè)程序的預(yù)期功能從頭開(kāi)始檢測(cè)和識(shí)別,降低了蛻變測(cè)試的可靠性。改進(jìn)提出的蛻變關(guān)系模式將程序輸入輸出之間的關(guān)系抽象化,使用這種關(guān)系模式和測(cè)試步驟,將蛻變關(guān)系的識(shí)別變成一個(gè)程序化問(wèn)題:只需要根據(jù)蛻變關(guān)系模式,為每個(gè)搜索功能添加符合關(guān)系模式指定源輸入和后續(xù)輸入之間關(guān)系的輸入條件,將其實(shí)例化即可。按照這個(gè)步驟,測(cè)試人員可以很容易地構(gòu)建蛻變關(guān)系,檢查源測(cè)輸出和后續(xù)輸出之間的關(guān)系是否符合關(guān)系模式指定的輸出之間的關(guān)系可以很容易地識(shí)別蛻變關(guān)系。如第3章所述,每種模式定義了條件篩選搜索系統(tǒng)中輸入輸出類型之間的關(guān)系,包含了基于篩選條件搜索網(wǎng)站中的兩種篩選條件類型(單選和多選)。實(shí)驗(yàn)部分利用蛻變關(guān)系模式對(duì)京東商城和安居客兩個(gè)網(wǎng)站分別構(gòu)建蛻變關(guān)系(見(jiàn)表1和表2),簡(jiǎn)化了構(gòu)建蛻變關(guān)系的過(guò)程。
針對(duì)Q2:實(shí)驗(yàn)中存在的有效性威脅主要包括:①能否有效構(gòu)建蛻變關(guān)系;②能否正確檢測(cè)軟件故障。
對(duì)于①,構(gòu)建的蛻變關(guān)系的有效性取決于蛻變關(guān)系模式定義的質(zhì)量好壞。因此,通過(guò)記錄兩個(gè)網(wǎng)站執(zhí)行蛻變測(cè)試構(gòu)建的蛻變關(guān)系及測(cè)試次數(shù)(見(jiàn)表1和表2),結(jié)合表4記錄的基于改進(jìn)前的6種蛻變關(guān)系模式和改進(jìn)后的6種蛻變關(guān)系模式執(zhí)行蛻變測(cè)試檢測(cè)到故障的數(shù)量,并且對(duì)比表3記錄的改進(jìn)前方法和改進(jìn)后方法的精確率和召回率,驗(yàn)證了改進(jìn)提出的兩種新型蛻變關(guān)系模式能夠幫助構(gòu)建有效的蛻變關(guān)系。
表4 前6種MRPS和后6種MRPS執(zhí)行蛻變測(cè)試檢測(cè)到的故障數(shù)量
對(duì)于②,研究顯示[17],蛻變測(cè)試只需要平均3到6種不同的蛻變關(guān)系就可以揭示至少90%的Oracle能夠檢測(cè)到的故障。因此,首先在對(duì)兩個(gè)網(wǎng)站的前后兩次測(cè)試中都選用了6種不同類型的蛻變關(guān)系模式,幫助構(gòu)建6種不同類型的蛻變關(guān)系,并且根據(jù)每個(gè)蛻變關(guān)系分別進(jìn)行了至少兩次測(cè)試,然后分析了被違反的蛻變關(guān)系,直到故障能夠被重現(xiàn),然后檢查故障是否被記錄,如果沒(méi)有記錄則在記錄中添加檢測(cè)到的問(wèn)題以及該問(wèn)題如何被人為重現(xiàn)。最后,指出用戶執(zhí)行搜索的過(guò)程中可能出現(xiàn)的意外情況,保證記錄故障文檔的嚴(yán)謹(jǐn)有效以及軟件檢測(cè)的高質(zhì)量。
針對(duì)Q3:通過(guò)表3,可見(jiàn)改進(jìn)的方法在精確率和召回率方面均顯著優(yōu)于改進(jìn)前的方法。結(jié)合表4,易見(jiàn)性能提升的原因是改進(jìn)的模式“IO組對(duì)稱相等”優(yōu)于模式“合并條件”和“析取條件”,在“等價(jià)性”和“完整性”模式的基礎(chǔ)上提出的“交集等價(jià)”模式也更直接提高了蛻變測(cè)試的精確率。因此,在利用蛻變關(guān)系模式簡(jiǎn)化蛻變測(cè)試執(zhí)行的過(guò)程中,本文改進(jìn)提出的兩種蛻變關(guān)系模式能夠有效地檢測(cè)出更多的軟件設(shè)計(jì)故障,提高蛻變測(cè)試的檢測(cè)效率,更全面地指導(dǎo)軟件設(shè)計(jì)問(wèn)題以改進(jìn)網(wǎng)站的設(shè)計(jì)質(zhì)量。
通過(guò)分析現(xiàn)有蛻變關(guān)系模式中的“合并條件”和“析取條件”模式,提出了“IO組對(duì)稱相等”模式,并在“等價(jià)性”和“完整性”模式的基礎(chǔ)上提出了基于多項(xiàng)選擇篩選條件的蛻變關(guān)系模式,即“交集等價(jià)”模式??偨Y(jié)現(xiàn)有的蛻變關(guān)系模式和改進(jìn)提出的蛻變關(guān)系模式,并以此構(gòu)建的蛻變關(guān)系,在簡(jiǎn)化蛻變關(guān)系識(shí)別過(guò)程的同時(shí)可以顯著提高蛻變測(cè)試的故障檢測(cè)質(zhì)量。
實(shí)驗(yàn)部分以京東商城、安居客兩個(gè)網(wǎng)站中共8個(gè)網(wǎng)頁(yè)為對(duì)象,分別選擇改進(jìn)前和改進(jìn)后的6種蛻變關(guān)系模式構(gòu)建蛻變關(guān)系,幫助生成測(cè)試用例,進(jìn)而對(duì)網(wǎng)站中基于條件篩選搜索的功能執(zhí)行測(cè)試。通過(guò)分析蛻變測(cè)試的精確率與召回率,驗(yàn)證了改進(jìn)提出的蛻變關(guān)系模式對(duì)條件篩選搜索系統(tǒng)執(zhí)行蛻變測(cè)試的有效性。
未來(lái)的工作主要包括:識(shí)別更多新的并且有效的蛻變關(guān)系模式;將蛻變關(guān)系模式應(yīng)用于更廣泛的科學(xué)領(lǐng)域中;識(shí)別和推斷蛻變關(guān)系以及創(chuàng)建有效的測(cè)試用例集。