日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

基于多樣性的 Web 測試生成

 

摘要

現(xiàn)有的 Web 測試生成器從 Web 應(yīng)用程序的導(dǎo)航模型中得出測試路徑,通過手動(dòng)或隨機(jī)生成的輸入值來完成。但是,手動(dòng)測試數(shù)據(jù)選擇的成本較高,而在不可行的輸入序列中往往會(huì)產(chǎn)生隨機(jī)生成的結(jié)果,但被測試中的應(yīng)用程序拒絕了。只有在嘗試執(zhí)行大量測試執(zhí)行后,隨機(jī)和基于搜索的生成才能達(dá)到所需的模型覆蓋級(jí)別,并且在執(zhí)行過程中,需要與瀏覽器進(jìn)行交互才能降低所需的覆蓋率。在這項(xiàng)工作中,我們提出了一種新穎的 Web 測試生成算法,該算法根據(jù)之前的測試從多樣性中預(yù)先選擇了最有希望的候選測試案例。

1 簡介

當(dāng)今可用的現(xiàn)代 Web 應(yīng)用程序提供了與本地桌面應(yīng)用程序相同的高級(jí)用戶交互功能,同時(shí)消除了站點(diǎn)部署,安裝和更新所需的實(shí)例。例如,單頁 Web 應(yīng)用程序(SPA)通過動(dòng)態(tài)更新文檔對象模型(DOM)來實(shí)現(xiàn)動(dòng)態(tài)響應(yīng),并通過 JAVAScript 功能來實(shí)現(xiàn)用戶友好性。

為了測試這種復(fù)雜的軟件系統(tǒng),工程師通常采用諸如 Selenium 之類的測試自動(dòng)化框架。在這種情況下,測試人員使用測試腳本來驗(yàn)證被測應(yīng)用程序(AUT)的正確功能,該腳本可自動(dòng)執(zhí)行最終用戶將在 Web 應(yīng)用程序的圖形用戶界面(GUI)上執(zhí)行的手動(dòng)操作的集合,例如,通過單擊來完成的交付活動(dòng)。測試人員使用此類測試腳本以及必要的輸入數(shù)據(jù)實(shí)施針對業(yè)務(wù)的測試場景。因此,每個(gè)測試案例都應(yīng)沿著網(wǎng)絡(luò)應(yīng)用程序的導(dǎo)航圖執(zhí)行特定的測試路徑。

盡管在自動(dòng)測試生成方面已有研究進(jìn)展,但在網(wǎng)絡(luò)領(lǐng)域中僅提出了一些工具,遺憾的是,其仍然適用于當(dāng)今可用的復(fù)雜系統(tǒng) 相當(dāng)有限。 因此,迄今為止,諸如硒等系統(tǒng)級(jí)測試用例的開發(fā)仍大部分是手動(dòng)執(zhí)行的。

由于事件和相關(guān)數(shù)據(jù)的特定順序,必須生成 Web 測試用例以確保啟動(dòng),因此自動(dòng)生成 Web 測試用例四倍速度超長。存在動(dòng)態(tài)網(wǎng)頁和事件基力的常用格式他們之間的皮疹。那么是 啊。測試路徑(也稱為抽象測試用例)是從模型中派生出來的,以確保能夠覆蓋航空圖形,例如,第一次訪問或語義交互事件。要生成可執(zhí)行測試,測試路徑需要指定適當(dāng)?shù)妮斎霐?shù)據(jù),這些數(shù)據(jù)可以手動(dòng)或隨機(jī)生成。

但是,這些方法有一些缺點(diǎn),限制了它們在實(shí)踐中的適用性。首先,隨機(jī)輸入生成使現(xiàn)有方法非常無效,因?yàn)樗鼈兛赡埽?)反復(fù)行使 AUT 的相同部分,而沒有探索可能暴露出先前未知故障的新行為,或者(2) 產(chǎn)生不可行的測試,這會(huì)違反約束和對 AUT 的先決條件。在充分發(fā)現(xiàn)導(dǎo)航圖之前,需要生成大量隨機(jī)測試用例的缺點(diǎn),這是非常低效的。此外,由于與瀏覽器的交互作用,Web 測試的執(zhí)行時(shí)間很短,這在限制時(shí)序限制的情況下進(jìn)一步支持了現(xiàn)有測試生成技術(shù)的適用性。 這樣,所提到的技術(shù)主要依靠手動(dòng)輸入生成,這顯示了昂貴的成本,并且受限于測試人員可用的測試資源(例如時(shí)間)。

基于多樣性的 Web 測試生成

 

圖 1 PetClinic Web 應(yīng)用程序的簡化導(dǎo)航模型。 狀態(tài)之間的轉(zhuǎn)換用相應(yīng)的動(dòng)作標(biāo)記,可以對其進(jìn)行參數(shù)化。 粗體顯示的路徑表示覆蓋率最大化的測試路徑的實(shí)例,該測試路徑是基于多樣性的技術(shù)生成的。

在本文中,我們提出了生成系統(tǒng)級(jí) web 測試用例的新的解決方案。我們的方法的目標(biāo)是生成一組測試用例,使航空圖的覆蓋范圍和輸入數(shù)據(jù)的使用多樣化,以應(yīng)對在實(shí)踐中不可執(zhí)行或不產(chǎn)生任何覆蓋改進(jìn)的不可行情況。

評(píng)估新產(chǎn)生的測試案例的質(zhì)量時(shí),評(píng)估新產(chǎn)生的測試案例的質(zhì)量時(shí),關(guān)鍵的觀點(diǎn)是評(píng)估新產(chǎn)生的測試案例的質(zhì)量,只需評(píng)估其與先前執(zhí)行的候選人之間的差異。基于多樣性的測試生成降低了輸入空間的局部最優(yōu)區(qū)域的容量,其中相似的測試用例幾乎覆蓋了相同的環(huán)境和導(dǎo)航,并且在瀏覽器執(zhí)行中只選擇了其中的幾個(gè)不同的場景和日期。

我們實(shí)現(xiàn)了名為 DIG(基于多樣性的生成器)的工具,它會(huì)自動(dòng)提取一個(gè) Web 應(yīng)用程序的通用模型,按照頁面對象設(shè)計(jì)模式對每個(gè)網(wǎng)頁中可能執(zhí)行的操作進(jìn)行基于代碼的抽象。然后,選擇測試用例(即。,可能) 的路徑和輸入)是基于神經(jīng)系統(tǒng)的多樣而產(chǎn)生的,完全有效地覆蓋了血液。

我們的工作做出了以下主要貢獻(xiàn):

  • 基于創(chuàng)新的 Web 應(yīng)用程序的系統(tǒng)級(jí)測試用例生成器。
  • 用于識(shí)別覆蓋率和輸入最大化的候選測試用例的算法。測試用例之間的聽覺距離算法可以最大限度地減少瀏覽器執(zhí)行所需的聽覺距離。
  • 我們的方法在稱為 DIG 的工具中的實(shí)現(xiàn),該工具自動(dòng)提取由頁面對象抽象組成的導(dǎo)航模型,并生成最大化導(dǎo)航序列和輸入數(shù)據(jù)多樣性的測試用例。
  • 對六個(gè)開源 Web 應(yīng)用程序進(jìn)行 DIG 測試的經(jīng)驗(yàn)評(píng)估。DIG 生成的具有較高覆蓋率和故障檢測率的測試套件的速度明顯高于基于搜尋和基于搜索的測試生成器。

2 背景

我們提供了可以理解本文其余部分的網(wǎng)絡(luò)測試概念。我們提供了有關(guān) Web 應(yīng)用程序,其特性和屬性的通用模型的背景信息,并探討了如何使用該信息來實(shí)現(xiàn)自動(dòng)測試用例的生成。

2.1 導(dǎo)航模型

Web 應(yīng)用程序的導(dǎo)航模型可以表示為狀態(tài)流圖(SFG),其中節(jié)點(diǎn)是網(wǎng)頁的動(dòng)態(tài) DOM 狀態(tài),并且邊緣之間是基于事件的轉(zhuǎn)換。

定義 1(狀態(tài)流圖)。 Web 應(yīng)用程序 W 的狀態(tài)流圖 SFG 是帶標(biāo)簽的有向圖,用 4 元組表示,其中:

(1)r 是表示 W 已完全加載到瀏覽器中時(shí)初始 DOM 狀態(tài)的根節(jié)點(diǎn)(稱為索引)。

(2)V 是表示節(jié)點(diǎn)的一組頂點(diǎn)。每個(gè) v∈V 代表 W 的抽象 DOM 狀態(tài)。

(3)E 是頂點(diǎn)之間的一組有向邊,我們稱其為動(dòng)作。每個(gè)(v1,v2)|g|a∈E 表示當(dāng)且僅當(dāng)通過執(zhí)行節(jié)點(diǎn) v1 中的動(dòng)作 a 達(dá)到了節(jié)點(diǎn) v2 并且滿足守護(hù) g,才可能在兩個(gè)節(jié)點(diǎn) v1,v2 之間進(jìn)行轉(zhuǎn)換。

(4)在邊(v1,v2)|g|a∈E 上給出一組保護(hù)。

(5)SFG 可以具有多邊并且是循環(huán)的。

2.2 航空模型示例

圖 1 顯示了 PetClinic 的簡化導(dǎo)航模型,這是一個(gè)允許獸醫(yī)管理關(guān)于其客戶和 pet 中心的信息的 web 應(yīng)用程序,該應(yīng)用程序與實(shí)驗(yàn)相同根據(jù)我們的評(píng)估。圖中顯示了八個(gè)表各州,每個(gè)州之間都有幾個(gè)可能發(fā)生的轉(zhuǎn)移。

其次,根據(jù)可行性的定義現(xiàn)象,分析了影響自動(dòng)測試用例生成的新實(shí)例。

2.3 可行性

在給定的摘要 DOM 狀態(tài)下,可能采取的行動(dòng) E 可能受到一個(gè)或多個(gè)保安人員的限制(又稱前提條件)。

定義 2(守衛(wèi))。 在特定應(yīng)用狀態(tài)下,guardд(s,a,i)是布爾值,作用于動(dòng)作 a 的可能輸入值 i∈I。

為了使?fàn)顟B(tài) n 和動(dòng)作的目標(biāo)狀態(tài)(通常是另一個(gè)狀態(tài) n'或 n 本身)之間的轉(zhuǎn)換,需要使防護(hù)人員滿意。 應(yīng)用程序狀態(tài) s 包括全局變量值,DOM 和跨用戶交互保持可用的任何持久性數(shù)據(jù)。

因此,防護(hù)依賴項(xiàng)的可滿足性是:(1)為給定操作 a,as 生成的輸入值 i∈(2)由先前用戶交互序列產(chǎn)生的應(yīng)用程序的內(nèi)部業(yè)務(wù)狀態(tài)。

例如,在圖 1 的所有者狀態(tài)中,操作顯示所有者允許向所有者信息狀態(tài)導(dǎo)航。作為對此措施的保護(hù),建議在執(zhí)行操作之前,應(yīng)用程序中必須存在由輸入所有者名稱標(biāo)識(shí)的所有者。 (出于可讀性考慮,在圖中省略了防護(hù)罩。)因此,防護(hù)罩不僅取決于分配給顯示所有者操作的輸入所有者名稱的特定值,而且還取決于應(yīng)用程序的內(nèi)部業(yè)務(wù)邏輯狀態(tài)。實(shí)際上,必須由先前執(zhí)行的操作(例如,由所有者執(zhí)行)將顯示的所有者事先插入到應(yīng)用程序中。

回顧一下,如果在給定的應(yīng)用程序狀態(tài)下警戒輸入值失真,那么我們認(rèn)為這種過渡是可行的;否則是不可行的。

2.4 測試生成問題

給定 Web 應(yīng)用程序的導(dǎo)航模型,Web 測試生成器的目標(biāo)是自動(dòng)提取動(dòng)作序列并生成適當(dāng)?shù)妮斎耄匀嫘惺箲?yīng)用程序的行為,從而潛在地覆蓋導(dǎo)航模型中的所有轉(zhuǎn)換。

定義 3(測試路徑)。 測試路徑是一系列測試狀態(tài),這些狀態(tài)與未指定輸入值的相應(yīng)動(dòng)作序列配對。

然后,可以通過使用測試路徑實(shí)例化具體的輸入值來定義最新情況。

定義 4(測試用例)。 測試用例是特定測試路徑中相應(yīng)動(dòng)作序列的具體值序列。

例如,在 PetClinic 中,作為一個(gè)簡單的測試路徑,該路徑可為 pet 添加新的訪問路徑,該路徑包括測試狀態(tài)序列⟨Index, Find, AddOwner, Owners, OwnerInfo, NewVisit⟩。相關(guān)的執(zhí)行順序是由⟨goToFind, addNewOwner, add, displayOwner, addNewVisit⟩提供的。

在此操作序列中,需要指定三個(gè)輸入值:(1)info,所有者的數(shù)據(jù)要插入,由狀態(tài) AddOwner 的操作添加,(2)ownerName,所有者的名稱,由狀態(tài)所有者的操作顯示所有者要求,以及(3)pet,要訪問的 Pet 的數(shù)據(jù)狀態(tài),由操作 addNewVisist 要求。 動(dòng)作 addNewVisit 有一個(gè)前提條件保護(hù),該前提條件是由寵物標(biāo)識(shí)的寵物必須在執(zhí)行該動(dòng)作之前存在。由于考慮的紅色測試路徑否是在執(zhí)行 addNewVisit 之前通過任何動(dòng)作添加的,因此對于輸入寵物的任何可能值,均不能采用選擇的測試路徑。 因此,我們說這樣的路徑是不可行的。

定義 5(測試路徑可行性)。 如果存在一個(gè)滿足所有與測試路徑中的動(dòng)作有關(guān)的防護(hù)措施的輸入?yún)?shù)-值分配,則有一條測試路徑是可行的; 否則是不可行的。

2.5 現(xiàn)有的測試生成方法

將采用不同的策略來從導(dǎo)航模型中生成測試案例。在本節(jié)中,我們簡單討論了最顯著的現(xiàn)有解決方案以及其局限性,這些動(dòng)機(jī)促使人們需要更高效的方法。在第 3 節(jié)中,我們將著眼于我們基于新穎性的測試。

2.5.1 圖訪問方法。 廣度優(yōu)先和深度優(yōu)先圖訪問算法已應(yīng)用于 Web 應(yīng)用程序的導(dǎo)航模型以得出測試路徑(也稱為抽象測試用例,即狀態(tài)序列和動(dòng)作序列使具體的輸入數(shù)據(jù)無法執(zhí)行)。 在工具 ATUSA 中,建議隨機(jī)輸入數(shù)據(jù)生成以填補(bǔ)測試路徑和具體測試用例之間的差距。然而,隨機(jī)生成的輸入通常很少有機(jī)會(huì)生成可行的測試用例,因此,它們通常需要大量的輸入生成和相應(yīng)的測試執(zhí)行。此外,ATUSA 生成了 32 個(gè)測試集,因?yàn)榧词故呛唵蔚?5 抽象函數(shù)創(chuàng)建大量的測試狀態(tài),并相應(yīng)地產(chǎn)生大量的測試路徑。

2.5.2 基于語義的方法。或者,測試路徑可以限制在那些進(jìn)行語義相關(guān)的交互,即事件序列,其中事件的順序影響交互結(jié)束時(shí)達(dá)到的狀態(tài)。這種方法已經(jīng)成功地應(yīng)用于應(yīng)用程序,但它產(chǎn)生了一系列嚴(yán)格的測試用例(語義交互事件序列),這些測試用例需要對輸入數(shù)據(jù)進(jìn)行大量的指定才能使其可執(zhí)行。

2.5.3 基于搜索的方法。基于搜索的技術(shù)對輸入空間進(jìn)行迭代采樣,選擇最合適的候選測試用例,并選擇使用遺傳搜索運(yùn)算符創(chuàng)建新測試用例。由于這些測試有效地引導(dǎo)生成更多的輸入空間的測試用例,因此它們適用于系統(tǒng)級(jí)測試,一個(gè)有效的配合功能可以根據(jù)活動(dòng)模型中提供的近似信息來定義。研究人員已經(jīng)表明,這種方法可以引導(dǎo)搜索生成不受路徑不可行性問題影響的測試用例。然而,這種方法需要為每個(gè)操作手動(dòng)指定所有保護(hù),這項(xiàng)任務(wù)對于測試人員來說既耗時(shí)又費(fèi)力。事實(shí)上,這些信息依賴于 Web 應(yīng)用程序的業(yè)務(wù)邏輯和有內(nèi)涵的行為,而且 USCA 無法生成完全自動(dòng)。另外,對功能的評(píng)估通常是因?yàn)樵谥匦逻M(jìn)行相同的測試之前,需要在瀏覽器中生成和執(zhí)行大量候選測試。

2.5.4 摘要。雖然所有討論的方法都為所需的輸入值提供了漸近收斂的理論保證,但是當(dāng)應(yīng)用于 Web 應(yīng)用程序時(shí),它們的執(zhí)行時(shí)間性能較差,例如,標(biāo)準(zhǔn) Java 桌面應(yīng)用程序。有一種說法是,為什么人們總是需要花費(fèi)大量精力和精力來解決這個(gè)問題,這是因?yàn)樵谡麄€(gè)測試過程中,(2)都考慮到了局部因素的重要性。同樣不可行的),因此增加了測試代算法的運(yùn)行時(shí)間,卻沒有完全覆蓋整個(gè)系統(tǒng)。本節(jié)中討論的局限性(測試者的規(guī)模,計(jì)算成本高,需要正式的護(hù)衛(wèi)規(guī)范)證明了對替代算法的研究是合理的,可能更合理,并且算法更自動(dòng)化。

基于多樣性的 Web 測試生成

 

圖 2 系統(tǒng)級(jí) Web 測試生成方法

3 基于多樣性的最佳生成方式

在概念上,我們通過適當(dāng)?shù)臏y試模型推導(dǎo)了我們的方法的主要步驟。圖 2 描述了我們的方法的主要步驟。 面向?qū)ο蟮念悾鼈冊诰W(wǎng)頁上以可執(zhí)行的方式公開這些操作。 最后,我們的測試生成器使用測試動(dòng)作與輸入數(shù)據(jù)之間的新度量距離來生成可以完全執(zhí)行應(yīng)用的測試。我們的方法不需要在安全的模型上指定防護(hù)軟性動(dòng)作。

我們現(xiàn)在將詳細(xì)介紹方法的每一步,以及測試之間的距離的計(jì)算,這是在我們的運(yùn)行示例中得到的例證。

3.1 測試模型提取

第一步,獲取 Web 應(yīng)用程序的導(dǎo)航模型。這可以通過手動(dòng)探索 Web 應(yīng)用程序功能來手動(dòng)執(zhí)行,或手動(dòng)執(zhí)行。我們采用這種方法:我們使用 Web 爬蟲自動(dòng)探索 Web 應(yīng)用程序的狀態(tài)空間(請參閱第 3.5 節(jié),詳細(xì)說明此模型的狀態(tài),然后在此狀態(tài)下研究此模型的詳細(xì)說明)。

然后爬蟲檢索到的一種通用模型可以生成一種基于中間代碼的抽象,該抽象可以方便地支持基于多樣性的自動(dòng)測試用例的生成。我們使用頁面對象(以下稱為 POs)將其表示為 DOM,并按照其指示的方式將它們按照設(shè)計(jì)的方式按每種模型所指示的方式進(jìn)行了模擬。 例如,在運(yùn)行示例寵物診所時(shí),AddOwner 狀態(tài)將由其自己的類表示,包含三個(gè)方法(add,goToIndex 和 goToFind)。

選擇狀態(tài)代表 PO 的動(dòng)機(jī)是雙重的:(1)在 Web 測試自動(dòng)化中使用眾所周知的頁面對象并利用其模式,以增強(qiáng)測試用例的開發(fā)和可維護(hù)性,以及(2)它們可以從具有良好準(zhǔn)確性的導(dǎo)航模型自動(dòng)創(chuàng)建。

3.2 基于多樣性的路徑和輸入生成

受到自適應(yīng)隨機(jī)測試的啟發(fā),該假設(shè)使得可以假定連續(xù)的故障區(qū)域,網(wǎng)絡(luò)應(yīng)用程序也可能具有連續(xù)的不可行區(qū)域。 相應(yīng)地,在 Web 應(yīng)用程序的情況下,測試用例多樣性的主要優(yōu)勢是可以在整個(gè)范圍內(nèi)探索搜索空間,使導(dǎo)航序列采樣的區(qū)域多樣化。這預(yù)計(jì)將有助于逃脫本地解決方案,并避免產(chǎn)生可行的測試路徑,從而避免了對各種可能的研究(即,多樣的)的探索性的發(fā)現(xiàn)。 而來自連續(xù)區(qū)域的輸入可能會(huì)暴露相同的程序故障。

基于多樣性的測試案例生成的第二個(gè)優(yōu)勢是,相對于現(xiàn)有的隨機(jī)性和基于搜索的方法,其效率更高。實(shí)際上,通過評(píng)估在以前生成的測試案例中的多樣性并評(píng)估這種潛在的評(píng)估案例的質(zhì)量,并使用這種度量來評(píng)估其潛在的潛力,從而增加了對各種行為的探索。

有趣的是,如第 3.3 節(jié)所述,可以在沒有實(shí)際執(zhí)行候選測試用例的情況下進(jìn)行這種評(píng)估。算法 1 描述了基于多樣性的路徑和輸入生成的整個(gè)過程。測試生成從一組無條件的測試開始,因此首先生成了隨機(jī)的測試。該算法生成一組候選測試用例 C,實(shí)例化候選測試路徑并帶有具體的輸入向量(第 8-10 行)。為了選擇最有前途的候選者,將計(jì)算每個(gè)候選測試用例與當(dāng)前已執(zhí)行的測試用例集 Texec 之間的距離(第 11-15 行),并且僅執(zhí)行最遠(yuǎn)的測試用例(第 16 行)。將測試用例限制為可行的前綴,以防其包括一個(gè)差異(第 17-18 行)。每當(dāng)執(zhí)行該測試的路徑與實(shí)例之間的差異時(shí),就會(huì)發(fā)生差異。測試用例僅添加到最終測試套件中,以增加導(dǎo)航模型 M 的覆蓋率(第 19-20 行)。

算法 2 顯示了如何創(chuàng)建候選測試路徑。 在我們的表示中,V 表示 AST 序列,表示以 X 為輸入向量序列的方法序列。 V,A 和 X 在主循環(huán)(第 5-11 行)中通過根據(jù)導(dǎo)航模型 M 在狀態(tài) v 可用的概率中隨機(jī)選擇具有統(tǒng)一概率的邊沿⟩v,v'⟩a 來增量創(chuàng)建。

這些選擇受到實(shí)際上必須從 v'保持目標(biāo)方法的約束。最后,隨機(jī)選擇輸入值的向量作為參數(shù)(第 8 行)。

3.3 測試案例之間的距離

算法 1 需要一個(gè)距離度量來評(píng)估測試用例之間的差異。 與面向?qū)ο蟮幕驍?shù)字應(yīng)用程序測試不同,由于距離函數(shù) ρ 還必須考慮到構(gòu)成這種情況的作用序列,因此輸入設(shè)置不能僅取決于輸入值。因此,我們考慮到兩個(gè)情況之間的差異性,考慮到不同情況之間的差異,我們設(shè)計(jì)了兩個(gè)測試用例之間的旅行距離,并且, 通過使動(dòng)作序列多樣化,以及與之相關(guān)的輸入值,我們推測我們可以逃離可行的測試路徑區(qū)域,并且可以使應(yīng)用行為多樣化。

3.3.1 距離公式。 直觀地講,我們的距離公式包含兩個(gè)術(shù)語,第一是測量要比較的兩個(gè)測試用例中動(dòng)作序列之間的距離,第二是測量兩個(gè)序列中匹配動(dòng)作所使用的輸入值之間的距離。要計(jì)算第一項(xiàng),距離函數(shù) α 報(bào)告這兩個(gè)序列中不匹配動(dòng)作的數(shù)量。 根據(jù)每個(gè)匹配的動(dòng)作,我們計(jì)算其參數(shù)值之間的標(biāo)準(zhǔn)化距離 β。

給定兩個(gè)測試用例(ti,tj),其中 ti =⟨Vi,Ai,Xi⟩和 tj =⟨Vj,Aj,Xj⟩,距離 ρ(ti,tj)由公式(1),(2)給出:

基于多樣性的 Web 測試生成

 

在等式 1 中,符號(hào) Vx :: Ay 表示這兩個(gè)動(dòng)作序列都由其動(dòng)作 Ai,Aj 和適用的狀態(tài) Vi,Vj 標(biāo)識(shí)。 這有助于消除使用相同名稱表示不同動(dòng)作的情況下的歧義。

函數(shù) α 表示序列編輯距離,它確定兩個(gè)序列中不匹配元素的數(shù)量(例如,當(dāng)比較 a,b,b,c,to,e,b 時(shí),4 = |⟨a,b⟩| + |⟨e,f⟩| ,c,f⟩)。 當(dāng)比較⟨a,b,b,c⟩和⟨e,b 時(shí),LCS 是最長公共子序列中的匹配索引的集合(例如,{(2,2),(4,3)} ,c,f⟩)。函數(shù) β 計(jì)算兩個(gè)匹配動(dòng)作(分別在 Vi :: Ai 和 Vj :: Aj 中分別由 k1 和 k2 索引)的兩個(gè)參數(shù)值序列 Xi [k1],Xj [k2]之間的距離。最后,函數(shù) δ 計(jì)算兩個(gè)基本輸入值軟件類型之間的標(biāo)準(zhǔn)化距離(請參見表 1 )。

等式 1 的第二項(xiàng)與兩個(gè)序列中的動(dòng)作 Ai [k1],Aj [k2]相匹配。相應(yīng)地,兩個(gè)輸入向量 Xi [k1]和 Xj [k2]具有相同的基數(shù)。函數(shù) β 計(jì)算參數(shù)值 x 與兩個(gè)匹配動(dòng)作 y 的平均距離。 函數(shù) δ 的運(yùn)算根據(jù)操作中使用的參數(shù)類型而變化(請參見表 1)。輸入距離 δ 在 0 和 1 之間進(jìn)行歸一化。對于字符串或數(shù)字類型,使用 Arcuri 等人提出的函數(shù) η(x)= x/(x + 1)進(jìn)行歸一化。將值映射到范圍[0,1]。

公式 1 類似于分支覆蓋度的擬合函數(shù)的計(jì)算,通常在基于搜索的測試中采用。 在這種情況下,適應(yīng)度函數(shù)的兩個(gè)項(xiàng)分別是逼近水平和標(biāo)準(zhǔn)化分支距離。我們與該定義共享一個(gè)概念,即使第一項(xiàng)(動(dòng)作序列距離)占主導(dǎo)地位,而僅在第一項(xiàng)不具有判別力的情況下重新排列為第二項(xiàng)(輸入值距離)。實(shí)際上,α 的范圍為 N,而 β 的范圍為零,而零的范圍為零 這樣,每個(gè)動(dòng)作對的對 ρ 的貢獻(xiàn)就不會(huì)大于 1。直覺主義者認(rèn)為,對動(dòng)作的主要貢獻(xiàn)來自于動(dòng)作序列的距離,而每個(gè)匹配對的輸入值距離則幾乎是最小的非零動(dòng)作序列(即,1)的貢獻(xiàn)。

基于多樣性的 Web 測試生成

 

表 1 輸入距離計(jì)算

3.4 實(shí)現(xiàn)

我們實(shí)現(xiàn)了一種名為 DIG(基于多樣性的生成器)的 Java 工具,該工具公開可用。要檢索 PO 測試模型,DIG 依賴于 Apogen。最后,在基于 EvoSuite 的實(shí)例上實(shí)現(xiàn)基于多樣性的測試發(fā)生器,并在方法上進(jìn)行了擴(kuò)展,以評(píng)估 PO 模型。 最后,只有最多樣化的候選者才能通過 Selenium Web Driver 無頭執(zhí)行模式執(zhí)行。

4 經(jīng)驗(yàn)驗(yàn)證

4.1 研究問題

我們針對以下研究問題進(jìn)行了解答:

RQ1(效果):基于分集,搜索和爬網(wǎng)的隨機(jī)測試生成如何在狀態(tài)覆蓋率,代碼覆蓋率和故障檢測方面進(jìn)行比較?

RQ2(效率):基于多樣性和搜索的測試生成如何隨時(shí)間推移進(jìn)行效率比較?

RQ3(Distance Computation):基于多樣性的測試生成過程中的距離計(jì)算有什么意義?

RQ4(Manual POs):在基于多樣性和基于搜索的測試生成方法中使用手動(dòng)定義的 PO 有什么作用?

4.2 主題系統(tǒng)

表 2 總結(jié)了受試者的主要特征。

基于多樣性的 Web 測試生成

 

表 2 實(shí)驗(yàn)主題

4.3 過程和計(jì)量

過程和計(jì)量數(shù)據(jù)如表 3 所示。

基于多樣性的 Web 測試生成

 

表 3 所有對象和方法的 RQ1,RQ2 和 RQ3 的有效性,效率和距離計(jì)算結(jié)果(自動(dòng) POs)。 粗體字的值表示 DIG 與 SubWeb 之間的統(tǒng)計(jì)上顯著差異。 星號(hào)表示 DIGS + 1 和 DIGS 之間的統(tǒng)計(jì)顯著性差異。 NC 表示不可比較的值,因?yàn)闇y試生成在給定的預(yù)算之前終止。

RQ1:基于分集和搜索的方法比基于爬行的隨機(jī)方法實(shí)現(xiàn)了更高的狀態(tài)覆蓋、代碼覆蓋和故障檢測。盡管效果相當(dāng)好,但基于多樣性的應(yīng)用程序?qū)崿F(xiàn)了良好的效果,因?yàn)樗峭耆詣?dòng)化的。

RQ2:基于分集的方法比基于搜索的方法實(shí)現(xiàn)更高的覆蓋率和故障檢測率。

RQ3:距離計(jì)算帶來的開銷被效率和自動(dòng)化方面的好處所掩蓋。此外,所提出的距離度量的輸入分量可以被丟棄,而幾乎沒有相關(guān)的懲罰。

RQ4:通過使用手動(dòng)定義的 POs,基于多樣性的方法在生成的測試套件所達(dá)到的結(jié)構(gòu)覆蓋方面優(yōu)于基于搜索的方法。

4.4 對有效性的威脅

在我們的評(píng)估中使用有限數(shù)量的主題系統(tǒng),就結(jié)果的可概括性而言,構(gòu)成了外部有效性威脅。 我們試圖通過選擇六個(gè)使用現(xiàn)實(shí)世界的 JavaScript 框架開發(fā)的主題系統(tǒng)來緩解這種威脅,這些主題系統(tǒng)都包含不同的域,盡管為了更好地解決泛化威脅,我們還是選擇了其他主題系統(tǒng)。

內(nèi)部有效性的威脅可能來自實(shí)驗(yàn)的混雜因素。我們在現(xiàn)實(shí)世界的 Web 應(yīng)用程序上,以相同的參數(shù)設(shè)置(例如,時(shí)間預(yù)算間隔)比較了所有競爭算法。手動(dòng)的 PO 開發(fā)任務(wù)面臨對有效性的威脅,因此必須遵循嚴(yán)格的系統(tǒng)性過程來阻止這種有效性。

結(jié)論有效性與否定性和統(tǒng)計(jì)測試的正確使用有關(guān)。為了減輕設(shè)定值的耗損,每次實(shí)驗(yàn)都要進(jìn)行 15 次并使用非參數(shù)的 Mann-Whitney Utest 進(jìn)行統(tǒng)計(jì)測試。

考慮到結(jié)果的可重復(fù)性,可以在線獲取 DIG 和所有主題系統(tǒng)的源代碼,從而使評(píng)估可重復(fù)且結(jié)果可重復(fù)。

5 討論

5.1 有效性和自動(dòng)化

通過將 PO 與測試生成相結(jié)合,基于多樣性和搜索的方法比基于最新的基于爬網(wǎng)的 PO 不可知方法具有更高的狀態(tài)覆蓋率,代碼覆蓋率和故障檢測。

由于需要指定手動(dòng)前提條件,因此將 DIWebisally 自動(dòng)化,而 SubWebisonly 則半自動(dòng)化。 我們的結(jié)果表明,DIG 可以通過自動(dòng)生成 PO 和測試用例,從而為測試人員節(jié)省大量時(shí)間。必要時(shí),測試人員可以細(xì)化生成的 PO,使其沒有動(dòng)作或過渡,并重復(fù)測試的生成。

此外,由我們的方法生成的測試服務(wù)是基于頁面對象設(shè)計(jì)模式的,這在可維護(hù)性方面具有已知優(yōu)勢。

5.2 效率

我們的效率證明我們的方法是可取的,特別是在嚴(yán)格的測試時(shí)間或在開發(fā)過程中經(jīng)常執(zhí)行測試用例的情況下。實(shí)際上,基于多樣性的方法要比基于軟件的開發(fā)方法和軟件對 XP 的信任程度要高得多,這要比基于軟件的方法和方法對這種方法的信心大得多。

5.3 效益可行性

在連續(xù)可行區(qū)域的猜想下,促進(jìn)多樣性不僅有利于徹底探索應(yīng)用程序的行為,而且有利于自動(dòng)生成測試用例的可行性。相反,基于搜索的方法使用保護(hù)性模型作為通用模型,可以指導(dǎo)用戶進(jìn)行搜索以找到滿意的輸入。

5.4 與手動(dòng) PO 的比較

Apogen 自動(dòng)生成的 PO 通常要比手動(dòng)開發(fā)的 PO 簡單,因?yàn)橐M(jìn)行測試的操作的數(shù)量和復(fù)雜性。Apogen 根據(jù)從每個(gè)測試狀態(tài)靜態(tài)提取的操作創(chuàng)建方法。因此,在大多數(shù)情況下,這些方法可能會(huì)遺漏在 Web GUI 上可能會(huì)產(chǎn)生的復(fù)雜交互(對于策略 GUI 而言是不可能的)。 ,DIG 可以生成的可能的測試路徑/案例的數(shù)量會(huì)降低。

盡管存在這些局限性,自動(dòng)化 POs 在考慮的應(yīng)用程序子集下仍可與手動(dòng) POs 競爭。測試人員可以采用一種有趣的選擇,對自動(dòng)生成的 PO 進(jìn)行細(xì)化,從而以較低的開發(fā)成本實(shí)現(xiàn)與手動(dòng) PO 相同的性能。 總體而言,我們的經(jīng)驗(yàn)結(jié)果表明,當(dāng)可以使用高質(zhì)量的 PO 時(shí),基于多樣性的方法要比其他所有方法都更有效(狀態(tài)和分支覆蓋率)和效率(達(dá)到覆蓋率)。

致謝

本文由南京大學(xué)軟件學(xué)院 iSE 實(shí)驗(yàn)室 2020 級(jí)碩士生王旭翻譯轉(zhuǎn)述

分享到:
標(biāo)簽:測試 Web
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評(píng)定2018-06-03

通用課目體育訓(xùn)練成績評(píng)定