亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向測試生成的ASM模型約簡研究*

        2018-07-05 10:47:46何柳柳
        計算機(jī)工程與科學(xué) 2018年6期
        關(guān)鍵詞:用戶模型

        楊 羊,何柳柳,尚 穎,李 征

        (北京化工大學(xué)信息科學(xué)與技術(shù)學(xué)院,北京 100029)

        1 引言

        隨著互聯(lián)網(wǎng)的普及和快速發(fā)展,Web應(yīng)用程序已經(jīng)成為人們?nèi)粘I畹囊徊糠?,同時Web應(yīng)用程序的不穩(wěn)定性或不安全性也常常引發(fā)個人隱私泄漏甚至高額的經(jīng)濟(jì)損失。早在2000年Ravi等人[1]提到,Web應(yīng)用程序故障在媒體公司的損失為每小時15萬美金,在信用卡交易市場的損失為每小時240萬美金,在金融市場的損失為每小時650萬美金。測試是保障Web應(yīng)用程序質(zhì)量的有效手段,具有十分重要的意義。

        Web應(yīng)用程序具有交互性、動態(tài)性和低耦合性等,使得傳統(tǒng)軟件的測試方法不能對Web應(yīng)用程序進(jìn)行有效的測試,如Web應(yīng)用程序的控制流通過用戶的操作交互形成、Web應(yīng)用程序的部分頁面是動態(tài)生成的、前后端模塊分別開發(fā)的模式等?;谀P偷臏y試方法是目前Web應(yīng)用程序測試中比較普遍采用的方法[2],核心是通過Web應(yīng)用程序建模生成有效的測試用例來檢測程序中的錯誤或者漏洞。通常,研究者將傳統(tǒng)軟件測試領(lǐng)域中的建模方法與Web應(yīng)用程序的部分特性結(jié)合建立UML(Uniform Modeling Language)模型[3]、FSM(Finite State Machine)模型[4,5]和EFSM(Extended Finite State Machine)模型[6]等,進(jìn)而生成測試用例對Web應(yīng)用程序進(jìn)行測試。

        Offutt等人[7,8]進(jìn)一步提出基于Web應(yīng)用程序表示層建立的原子段模型ASM(Atomic Section Model),根據(jù)服務(wù)器端與客戶端的交互,通過源代碼的解析,識別原子段、組件及其之間的交互,構(gòu)建模型。該模型可以詳細(xì)描述Web應(yīng)用程序的交互性、動態(tài)性和低耦合性。

        在基于ASM模型的測試生成中,通過無效訪問狀態(tài)和無效遷移路徑來擴(kuò)充測試用例,實現(xiàn)用戶不可預(yù)期行為的測試[7]。但是,由于無效訪問狀態(tài)和無效遷移路徑的引入,不可避免地帶來了測試用例空間爆炸的問題。

        本文通過研究ASM模型的構(gòu)建過程和相應(yīng)的測試用例生成方法,提出基于模型約簡的測試用例空間優(yōu)化方法,定義面向ASM模型測試用例生成的等價狀態(tài)和等價遷移,進(jìn)一步提出合并準(zhǔn)則約簡ASM模型,有效控制無效訪問狀態(tài)和無效路徑數(shù)量,優(yōu)化測試用例空間。實驗表明,本文所提方法在不影響原子段覆蓋和錯誤檢測效果的基礎(chǔ)上,有效地約減了74.38%的測試用例空間。

        本文組織結(jié)構(gòu)如下:第1節(jié)介紹Web應(yīng)用程序的測試以及基于ASM模型的測試方法,第2節(jié)介紹ASM模型及其測試用例生成方法,第3節(jié)介紹基于ASM模型約簡方法,第4節(jié)結(jié)合實例給出相關(guān)實驗分析,第5節(jié)介紹相關(guān)工作,最后進(jìn)行總結(jié)。

        2 ASM模型及其測試用例生成

        2.1 Web應(yīng)用程序

        Web應(yīng)用程序由完成特定任務(wù)的各種Web組件(Web Components)構(gòu)成,并通過Web將服務(wù)展示給用戶。在實際的應(yīng)用中,Web應(yīng)用程序的組件包括多個Servlet、JSP頁面、HTML文件以及圖像文件等。所有這些組件相互協(xié)調(diào)為用戶提供一組完整的服務(wù)。

        Web應(yīng)用程序的執(zhí)行過程中,用戶通過客戶端的操作向服務(wù)器端發(fā)送請求(Post),服務(wù)器端對用戶的請求進(jìn)行響應(yīng),用戶獲得(Get)需要的內(nèi)容。

        基于表示層的Web應(yīng)用程序的執(zhí)行,通過組件的遷移,完成用戶的需求。組件的遷移用來描述組件連接或者耦合的形式。根據(jù)Web應(yīng)用程序執(zhí)行形式的不同,組件的遷移類型又可分為五類[7],分別為簡單跳轉(zhuǎn)遷移、表單鏈接遷移、組件表達(dá)遷移、操作遷移和重定向遷移,其中組件表達(dá)遷移是指組件的執(zhí)行,形成一條從組件到原子段的遷移,是組件到組件內(nèi)的遷移;操作遷移是指用戶通過瀏覽器上的操作(如前進(jìn)、后退和刷新等)形成的組件遷移;重定向遷移指不可控制的服務(wù)器端組件的遷移,如Java Servlet中的重定向方法,對不同的URL(Uniform Resource Locator)重新生成相同的請求。

        2.2 ASM模型

        Offutt等人[7]基于Web應(yīng)用程序表示層建立的ASM模型,通過解析源代碼,識別組件內(nèi)部執(zhí)行邏輯和組件間遷移關(guān)系,其解析的主要對象是原子段,并通過程序設(shè)計的跳轉(zhuǎn)或者方法調(diào)用形成ASM模型,對原子段定義如下。

        定義1(原子段(Atomic Section)) 如果一段HTML中的任意一部分被發(fā)送給客戶端,則整個段都會被發(fā)送給客戶端,具有這種性質(zhì)的HTML代碼段,稱為原子段。

        通過解析源代碼,識別服務(wù)器端發(fā)送給客戶端的原子段,解析原子段之間的邏輯結(jié)果,形成原子段到組件的描述。ASM模型是兩層模型,底層是組件交互模型CIM(Components Interaction Model),通過對組件的解析,形成組件內(nèi)部原子段的控制流圖;上層是應(yīng)用遷移圖ATG(Application Transition Graph),通過CIM中原子段以及組件與其他組件的調(diào)用關(guān)系形成組件間的遷移圖。測試用例主要基于應(yīng)用遷移圖生成,應(yīng)用遷移圖定義如下:

        定義2(應(yīng)用遷移圖) ATG是一個四元組〈Γ,Θ,Σ,α〉。Γ代表Web軟件組件的有限集合,Γ={CIM1,CIM2,…,CIMn};Θ代表Γ中的Web應(yīng)用程序組件間的遷移的集合,Θ=T1∪T2∪…∪Tn,Ti是CIMi的遷移的結(jié)合;Σ是指定義Web應(yīng)用程序狀態(tài)的變量的集合,Σ中的變量是從組件到頁面?zhèn)鬟f的參數(shù);α是起始頁面的集合,α={S1,S2,…,Sn},Si是組件CIMi的起始頁面。

        2.3 基于ASM模型的測試用例生成

        基于圖的測試方法通常是基于圖生成測試路徑及測試數(shù)據(jù)。由于ASM模型中遷移參數(shù)只是客戶端與服務(wù)器端的參數(shù)傳遞,不涉及數(shù)據(jù)層的數(shù)據(jù)傳輸,因此基于ASM模型的測試用例生成只包括測試路徑的生成,即基于ASM模型的遷移路徑。

        ASM模型中組件之間的遷移,根據(jù)用戶操作的不同,其遷移類型、遷移帶有的信息均不同。通過遷移的定義可以來描述用戶不同操作導(dǎo)致的組件間的遷移,因此對遷移的定義如下:

        定義3(遷移) ASM模型的遷移是指從一個組件到達(dá)另一個組件的過程,即遷移ti可描述為源狀態(tài)Source(ti),通過帶有Label(ti)的Type(ti)類型遷移到達(dá)目標(biāo)狀態(tài)Target(ti),即Source(ti)[Label(ti)](Type(ti))Target(ti)。其中,Label(ti)表示遷移帶有的標(biāo)簽;Type(ti)表示遷移類型,遷移的類型包括簡單跳轉(zhuǎn)遷移、表單鏈接遷移、組件表達(dá)遷移、操作遷移和重定向。

        基于ASM模型生成的測試路徑是ASM模型的遷移路徑,對遷移路徑的定義如下:

        定義4(遷移路徑) ASM模型的遷移路徑是指ASM模型組件連續(xù)遷移序列,即路徑П=t1t2…ti…tn,其中target(ti)=source(ti+1)(1≤i≤n),П∈Θ。

        基于圖生成的遷移路徑是可執(zhí)行路徑,即按照程序員設(shè)計的遷移,用戶按照預(yù)期操作依次形成遷移路徑中的每個遷移ti。然而,在Web應(yīng)用程序的實際運行過程中,用戶的行為是不可預(yù)期的,如通過瀏覽器的前進(jìn)/后退按鈕實現(xiàn)Web應(yīng)用程序非預(yù)期遷移。因此,遷移路徑可行不能保證Web應(yīng)用程序沒有錯誤。

        ATG不能描述Web應(yīng)用程序?qū)嶋H運行過程中用戶行為不可預(yù)期的行為,Offutt等人[7]提出的測試路徑生成方法,在基于ASM模型生成的主要路徑的基礎(chǔ)上,通過擴(kuò)充無效訪問狀態(tài)和無效遷移路徑,形成可以描述用戶不可預(yù)期行為的測試用例集。

        定義5(無效訪問狀態(tài)) 將非起始頁面中不存在自身循環(huán)的狀態(tài)稱為無效訪問狀態(tài)。

        無效訪問是根據(jù)用戶在瀏覽器端進(jìn)行的無目的的或者有目的的操作遷移,如輸入非起始頁面的URL地址,從Web應(yīng)用程序的任意中間位置進(jìn)入訪問。

        定義6(無效遷移) 若從源狀態(tài)到目標(biāo)狀態(tài)的遷移不存在,且目標(biāo)狀態(tài)為無效訪問狀態(tài),將這類遷移稱為無效遷移。

        無效遷移是由于用戶在瀏覽器端的操作導(dǎo)致的遷移,如后退、刷新、前進(jìn)和URL重寫導(dǎo)致的Web應(yīng)用程序組件的遷移。

        基于ASM模型的測試用例生成方法主要包括以下三步:

        (1)基于主要路徑覆蓋生成初始測試用例。

        (2)針對每個無效訪問狀態(tài)生成基于無效訪問狀態(tài)的無效遷移。

        (3)對(1)中生成的測試用例,通過添加無效訪問狀態(tài)和無效遷移進(jìn)行擴(kuò)充。具體擴(kuò)充方法為:在以步驟(2)中無效遷移的源狀態(tài)為目標(biāo)狀態(tài)的遷移末尾添加無效遷移,并補(bǔ)充簡單路徑,進(jìn)而形成從無效訪問狀態(tài)到原目標(biāo)狀態(tài)的全部簡單路徑,則完成測試用例的補(bǔ)充。

        該測試用例生成方法,在傳統(tǒng)的基于模型的測試用例生成方法的基礎(chǔ)上,通過擴(kuò)充無效訪問狀態(tài)和無效遷移路徑,形成覆蓋用戶非預(yù)期行為的測試用例集。

        然而,隨著Web應(yīng)用程序規(guī)模的擴(kuò)大,無效訪問狀態(tài)和無效遷移路徑的增多,不可避免地會導(dǎo)致測試用例空間的爆炸。

        3 ASM模型約簡方法

        3.1 測試用例空間爆炸原因分析

        Web應(yīng)用程序是高內(nèi)聚低耦合的軟件系統(tǒng)。內(nèi)聚性越高,表明組件的設(shè)計越合理,系統(tǒng)的穩(wěn)定性越高;耦合性越低,說明組件之間的獨立性越高,Web應(yīng)用程序的質(zhì)量越高[9]。隨著Web應(yīng)用程序規(guī)模的擴(kuò)大,Web應(yīng)用程序的低耦合性和交互性相應(yīng)加強(qiáng),即表現(xiàn)為組件數(shù)目的增多和組件間遷移數(shù)目的增加。

        基于Web應(yīng)用程序表示層建立的ASM模型,詳細(xì)描述了Web應(yīng)用程序低耦合下的動態(tài)性和交互性。根據(jù)ASM模型的定義,隨著Web應(yīng)用程序規(guī)模的擴(kuò)大,其底層CIM描述單個組件內(nèi)原子段的動態(tài)執(zhí)行過程,不受Web應(yīng)用程序規(guī)模的影響;其上層ATG描述所有組件間的遷移關(guān)系,受Web應(yīng)用程序規(guī)模的直接影響。

        基于ASM模型的測試用例生成方法考慮了用戶非預(yù)期行為,生成的測試用例數(shù)目隨著Web應(yīng)用程序規(guī)模的擴(kuò)大而增加,導(dǎo)致測試用例空間的爆炸測試用例數(shù)增加的原因,一方面是無效訪問狀態(tài)和無效遷移路徑數(shù)目的增加導(dǎo)致可擴(kuò)充數(shù)目變多,另一方面是基于主要路徑覆蓋的測試用例可擴(kuò)充位置產(chǎn)生的組合眾多。

        通常采用基于模型的約簡或最小化來減少或壓縮狀態(tài)空間[10],以解決狀態(tài)空間爆炸的問題。針對狀態(tài)模型,基本的解決方案就是合并遷移和狀態(tài)。

        3.2 基于等價分析的模型約簡

        根據(jù)ASM模型的定義以及測試用例生成方法,為了有效避免狀態(tài)空間爆炸問題,在不影響Web應(yīng)用程序測試效果的基礎(chǔ)上,通過定義等價狀態(tài)和等價遷移來對原模型進(jìn)行約簡,減少了狀態(tài)和遷移數(shù)量,進(jìn)一步來約減測試用例集,有效地壓縮測試用例空間。

        根據(jù)ASM模型定義的組件之間的遷移,根據(jù)用戶操作的不同,其遷移類型、遷移帶有的信息均有不同。因此,對于擁有相同源狀態(tài)和目標(biāo)狀態(tài)的遷移,如果遷移類型或者遷移標(biāo)簽不同,則不能作為等價遷移進(jìn)行合并。

        此外,ASM模型的每個組件都分別實現(xiàn)獨自的功能,每條遷移都是根據(jù)用戶在表示層的操作形成的組件的遷移,從同一源狀態(tài)出發(fā)的多個目標(biāo)狀態(tài)不是都可以作為等價狀態(tài)合并的狀態(tài)。

        因此,對等價遷移和等價狀態(tài)的定義如下:

        定義7(等價遷移) 對于任意遷移ti和tj,i≠j,若滿足:

        (1)Type(ti)=Type(tj);

        (2)Label(ti)=Label(tj);

        (3)Source(ti)=Source(tj) &&Target(ti)=Target(tj)。

        則ti和tj為等價遷移,記為ti≌tj。

        定義8(等價狀態(tài)) 對于任意目標(biāo)狀態(tài)Target(ti) 和Target(tj),i≠j,若滿足:

        (1)任意遷移tm,滿足Source(tm)≠Target(ti) 或Source(tm)≠Target(tj);

        (2)Source(ti)=Source(tj);

        (3)Label(ti)=Label(tj)=NULL;

        (4)Type(ti)=Type(tj)。

        則Target(ti)和Target(tj)是等價狀態(tài),記為Target(ti)≌Target(tj)。

        根據(jù)等價遷移和等價狀態(tài)的定義,定義以下兩個約簡規(guī)則。

        規(guī)則1對于ASM模型中的任意兩個遷移ti和tj,i≠j,如果滿足ti≌tj,則合并遷移為t′,其中t′的標(biāo)簽信息為Label(ti),遷移類型為Type(ti)。

        基于遷移合并對模型的約簡,模型中任意滿足等價遷移定義的遷移均可以按照規(guī)則1進(jìn)行遷移合并。基于規(guī)則1對ASM模型進(jìn)行基于遷移的約簡,其約簡前后示意圖如圖1所示。

        Figure 1 Schematic of transitions merging圖1 遷移合并示意圖

        規(guī)則2對于ASM模型中的任意兩個目標(biāo)狀態(tài)Target(ti)和Target(ti),i≠j,如果滿足Target(ti)≌Target(tj),則合并狀態(tài)為s′,到達(dá)s′的遷移為ti和tj。

        基于狀態(tài)對模型的約簡,只適用于ASM模型的終止?fàn)顟B(tài)?;谝?guī)則2對模型進(jìn)行基于狀態(tài)的約簡,其約簡前后的示意圖如圖2所示。

        規(guī)則1約定如何合并從源狀態(tài)到目標(biāo)狀態(tài)的多條相同遷移。合并后的模型,沒有引入新的遷移和新的狀態(tài),則不會產(chǎn)生新的無效訪問狀態(tài)和無效遷移路徑。遷移的合并,使得從源狀態(tài)到目標(biāo)狀態(tài)的遷移數(shù)量有效減少了,但是從源狀態(tài)到目標(biāo)狀態(tài)的遷移關(guān)系不產(chǎn)生影響。因此,基于約簡后模型生成的測試用例與原有測試用例是等價的,并且通過減少遷移的數(shù)量,減少了無效遷移的數(shù)量,最終實現(xiàn)無效遷移路徑數(shù)量的減少。

        Figure 2 Schematic of states merging圖2 狀態(tài)合并示意圖

        規(guī)則2約定如何合并一個源狀態(tài)經(jīng)過相同的操作到達(dá)的多個目標(biāo)狀態(tài)。合并后的模型,從源狀態(tài)出發(fā)的遷移,沒有引入新的遷移類型和標(biāo)簽,引入的新狀態(tài)是原有狀態(tài)的合并狀態(tài),從而引入新的遷移。新的遷移與原有遷移,是遷移標(biāo)簽和類型相同的遷移,并且滿足相同的源狀態(tài)和相同的目標(biāo)狀態(tài)(原目標(biāo)狀態(tài)是新目標(biāo)狀態(tài)的一個子集),因此新的遷移可以視為是與原有遷移的等價遷移。根據(jù)規(guī)則1的約定,基于等價遷移的模型約簡生成的測試用例與原有測試用例是等價的,因此基于等價狀態(tài)的模型約簡生成的測試用例與原有測試用例也是等價的。并且,通過狀態(tài)的合并實現(xiàn)了無效訪問狀態(tài)數(shù)和無效遷移路徑數(shù)的減少,有效壓縮了測試用例空間。

        依據(jù)規(guī)則1和規(guī)則2對ASM模型的約簡是一個迭代的過程?;诘葍r狀態(tài)的狀態(tài)合并,產(chǎn)生新的等價遷移,進(jìn)一步基于等價遷移進(jìn)行合并,實現(xiàn)ASM模型的最小化,可以最大化約簡測試用例空間。

        4 實驗與結(jié)果分析

        為了驗證ASM模型約簡后,基于ASM模型對Web應(yīng)用程序測試的有效性,本文提出如下研究問題,并通過實驗進(jìn)行驗證。

        RQ1:約簡后的ASM模型對測試用例空間的壓縮效果如何?

        RQ2:約簡后的ASM模型對Web應(yīng)用程序的原子段覆蓋率有何影響?

        RQ3:約簡后的ASM模型生成的測試用例對Web應(yīng)用程序測試的影響如何?

        4.1 實例設(shè)計

        本文以中醫(yī)藥物質(zhì)管理系統(tǒng)CTMMS(Chinese Traditional Medicine Management System)為實驗對象,進(jìn)行ASM模型建立和測試用例生成研究。

        按照ASM模型的定義,解析Web應(yīng)用程序源代碼,自動構(gòu)建ASM模型,并使用開源軟件Graphviz[11]繪制狀態(tài)圖。最后,基于狀態(tài)圖實現(xiàn)測試用例的自動生成。

        基于ASM模型的測試用例生成辦法,通過測試用例的擴(kuò)充形成循環(huán)測試路徑,針對循環(huán)測試路徑目前沒有工具能夠?qū)崿F(xiàn)測試用例的自動執(zhí)行,因此本研究的實驗結(jié)果通過手動分析的方法來評估約簡的ASM模型對原子段覆蓋率和測試效果的影響。

        4.2 實驗描述

        中醫(yī)藥物質(zhì)管理系統(tǒng)基于J2EE框架,該系統(tǒng)的實現(xiàn)包括JSP(Java Server Page)和Java Servlet,使用MVC模型,數(shù)據(jù)存儲在SQL Server數(shù)據(jù)庫中,利用Eclipse for Java EE集成開發(fā)環(huán)境,及CSS+HTML開發(fā)。

        中醫(yī)藥物質(zhì)管理系統(tǒng)需要用戶輸入用戶名和密碼進(jìn)行登錄,主要操作包括添加、查詢、修改、刪除等。中醫(yī)藥物質(zhì)的信息都存儲在數(shù)據(jù)庫里,這個系統(tǒng)包括11個JSP頁面和1個Servlet,其應(yīng)用遷移圖如圖3所示。操作遷移是用戶在瀏覽器端的操作,無法通過源代碼進(jìn)行解析,因此圖3中不包括操作遷移。此外,組件表達(dá)遷移是組件到達(dá)組件內(nèi)部的遷移,由于本研究只涉及ASM模型的上層ATG,因此組件表達(dá)遷移直接描述為從組件到組件的遷移。基于中醫(yī)藥物質(zhì)管理系統(tǒng)的表示層生成的ASM模型上層ATG,其應(yīng)用遷移圖共12個狀態(tài)、57條遷移。

        圖3中,如CTMCLServlet通過(info)信息形成相同的遷移到達(dá)Error.jsp,則從狀態(tài)CTMCLServlet到狀態(tài)Error.jsp共有3條簡單路徑,均是從CTMCLServlet經(jīng)過(info)信息的提交形成組件表達(dá)遷移。

        Figure 3 ATG of the CTMMS圖3 中醫(yī)藥物質(zhì)管理系統(tǒng)應(yīng)用遷移圖

        CTMCLServlet是Web應(yīng)用程序的控制層,處理用戶在瀏覽器端的請求,若用戶的請求符合程序設(shè)定的要求,則根據(jù)用戶的請求將相應(yīng)的視圖(.jsp)顯示給用戶。從CTMCLServlet到Error.jsp的遷移是由于用戶在以CTMCLServlet為后繼的遷移中填寫了錯誤的信息,CTMCLServlet組件內(nèi)部多個原子段分別處理不同的請求,按照程序邏輯執(zhí)行的顯示異常,提示Error.jsp。

        由于本研究針對ASM模型的上層ATG進(jìn)行研究,其組件內(nèi)部的程序邏輯是可以采用傳統(tǒng)軟件的測試方法進(jìn)行測試,Web應(yīng)用程序表示層均是錯誤頁面Error.jsp,對該遷移進(jìn)行合并,不影響對Web應(yīng)用程序表示層的測試。

        對圖3的應(yīng)用遷移圖,根據(jù)遷移合并原則進(jìn)行模型約簡,約簡后應(yīng)用遷移圖如圖4所示,圖中虛線表示合并后的遷移。

        ASM模型測試用例的生成是通過添加無效狀態(tài)來擴(kuò)充無效訪問路徑,那么無效狀態(tài)的減少,必然能優(yōu)化測試用例,減少測試用例的數(shù)量?;诖?,在遷移合并后,判斷模型中是否存在等價狀態(tài),若存在將其合并。

        Figure 4 ATG after transitions merging圖4 遷移合并后的應(yīng)用遷移圖

        從圖4可以看出,Rsub.jsp、RMat.jsp和Smed.jsp作為目標(biāo)狀態(tài),也是應(yīng)用遷移圖的終止?fàn)顟B(tài),到達(dá)這些狀態(tài)的遷移均為ε-遷移,并且從源狀態(tài)出發(fā)的遷移類型相同。

        MVC模式開發(fā)的Web應(yīng)用程序,其模型、視圖、控制器是分開單獨執(zhí)行自身任務(wù)的。.jsp文件作為MVC的視圖層,主要負(fù)責(zé)用戶瀏覽及交互,在視圖中沒有業(yè)務(wù)邏輯和數(shù)據(jù)的處理。視圖只是作為一種輸出數(shù)據(jù)并允許用戶操作的顯示界面。

        Rsub.jsp、Rmat.jsp和Smed.jsp作為終止?fàn)顟B(tài),由于沒有后繼,不允許用戶進(jìn)行操作,其功能是輸出數(shù)據(jù)給用戶查看。Rsub.jsp、Rmat.jsp和Smed.jsp均是從相同的源狀態(tài)經(jīng)過相同的遷移后到達(dá)的目標(biāo)狀態(tài),但由于上述頁面的功能不同,導(dǎo)致顯示的數(shù)據(jù)結(jié)果不同。從相同源狀態(tài)出發(fā),到達(dá)Rsub.jsp、Rmat.jsp和Smed.jsp的遷移,其源狀態(tài)均為.jsp文件,是視圖層文件,并且從源狀態(tài)到目標(biāo)狀態(tài)的遷移為不存在信息傳遞的簡單遷移,用戶在源狀態(tài)頁面上的任一簡單遷移操作,均會到達(dá)這三個狀態(tài)中的任意一個,并且這三個狀態(tài)不存在后繼操作。對這三個狀態(tài)進(jìn)行合并,不影響從源狀態(tài)出發(fā)的遷移的測試。由于這三個狀態(tài)是終止?fàn)顟B(tài),則該狀態(tài)必然為無效狀態(tài),通過終止?fàn)顟B(tài)的約簡,減少了無效狀態(tài)的數(shù)量,優(yōu)化了測試用例。

        基于等價狀態(tài)對圖4的模型進(jìn)行約簡,約簡后的模型如圖5所示。

        Figure 5 Reduction model of the ATG圖5 模型約簡后的應(yīng)用遷移圖

        4.3 實驗結(jié)果分析

        這一節(jié)主要通過實驗結(jié)果回答三個研究問題。

        4.3.1 測試用例空間壓縮分析

        通過合并等價狀態(tài)和等價遷移,對中醫(yī)藥物質(zhì)管理系統(tǒng)(CTMMS)建立的ASM模型進(jìn)行約簡,對比結(jié)果如表1所示,其中,狀態(tài)數(shù)減少2個,遷移數(shù)減少24條,測試用例數(shù)共減少6 036條,有效壓縮了測試用例空間。

        從表1的約減率可以看出,測試用例約減率74.38% > 狀態(tài)約減率16.67%+遷移約減率42.11%,這是由于對ASM模型的約簡不僅減少了遷移數(shù)量和狀態(tài)數(shù)量,而且減少了可擴(kuò)充的無效訪問狀態(tài)的位置數(shù)量,因此測試用例數(shù)減少率更高。

        4.3.2 原子段覆蓋率分析

        按照ASM模型的定義,中醫(yī)藥物質(zhì)管理系統(tǒng)(CTMMS)ASM模型的應(yīng)用遷移圖共有12個組件,其中,11個組件是Jsp文件,1個組件是Servlet,各個組件的組件表達(dá)式和原子段數(shù)如表2所示。

        Table 1 Comparison of the number of test cases before and after reduction表1 約簡前后測試用例數(shù)比較

        Table 2 Component expression of the CTMMS表2 中醫(yī)藥物質(zhì)管理系統(tǒng)組件表達(dá)式

        對中醫(yī)藥物質(zhì)管理系統(tǒng)(CTMMS)的ASM模型約簡前后的測試用例原子段數(shù)目進(jìn)行統(tǒng)計和對比,如表3所示。模型約簡前后,其對原子段的覆蓋率都沒有達(dá)到100%,共有兩個原子段沒有覆蓋到。為達(dá)到100%的原子段覆蓋率,對這兩個原子段進(jìn)行人工分析,分析結(jié)果表明,這兩個原子段分別涉及查詢中醫(yī)藥標(biāo)準(zhǔn)物質(zhì)時只輸入名字不輸入編號和查詢中醫(yī)藥標(biāo)準(zhǔn)物質(zhì)時既輸入名字又輸入編號。

        Table 3 Statistics of the atomic section coverage表3 原子段覆蓋率統(tǒng)計

        沒有覆蓋到的原因是由于基于表示層建立的ASM模型不涉及數(shù)據(jù)層的傳輸,即實際的運行過程中該原子段需要特殊值傳遞,在其測試用例生成過程中無法涉及。分析表明,面向這兩個原子段的基于表示層的測試不能發(fā)現(xiàn)軟件錯誤。

        表3分析結(jié)果表明,ASM模型約簡前后生成的測試用例集對原子段覆蓋率幾乎沒有變化。結(jié)合中醫(yī)藥物質(zhì)管理系統(tǒng)的ASM模型的應(yīng)用遷移圖模型約簡前后的對比,分析可以得出,合并的狀態(tài)都不包含原子段。因此,ASM模型的約簡對Web應(yīng)用程序的原子段覆蓋率幾乎不產(chǎn)生影響。

        4.3.3 測試效果分析

        通過對中醫(yī)藥物質(zhì)管理系統(tǒng)(CTMMS)進(jìn)行手動的測試,共檢測出3種類型的錯誤,分別是頁面為空、軟件異常以及URL重寫導(dǎo)致空記錄。

        中醫(yī)藥物質(zhì)管理系統(tǒng)(CTMMS)的ASM模型約簡前后的測試效果統(tǒng)計對比,如表4所示。從表4中可以得出,基于無效遷移路徑檢測的錯誤率大于基于主要路徑檢測的錯誤率,約簡前后檢測到的錯誤類型數(shù)相同,且約簡后由于總路徑數(shù)量減少,錯誤檢測率增大。因此,ASM模型的約簡規(guī)則在不影響原子段覆蓋率的情況下,使主要路徑和無效路徑數(shù)量減少,錯誤檢測率增大,對檢測到的錯誤類型的數(shù)量沒有影響。

        Table 4 Statistics of test results表4 測試結(jié)果統(tǒng)計

        5 相關(guān)工作

        2010年,Offutt等人[7]首次提出基于Web應(yīng)用程序的表示層建立ASM模型,并于2014年對ASM模型的有效性進(jìn)行了評估[8]?;谛枨笊傻臏y試用例與基于ASM模型生成的測試用例的測試效果對比結(jié)果顯示,基于ASM模型的測試方法能夠檢測到更多的Web應(yīng)用程序錯誤。鄭芳等人[12]在此基礎(chǔ)上提出基于依賴分析的測試用例的優(yōu)化,避免了重復(fù)執(zhí)行全部測試用例。

        ASM模型是通過解析源碼對Web應(yīng)用程序建模, Cosma等人[13]基于此使用靜態(tài)分析和可視化的方法來理解Web應(yīng)用程序。

        隨著新技術(shù)的不斷發(fā)展,對Web應(yīng)用程序的測試提出了新的挑戰(zhàn)。如Ajax技術(shù)在Web應(yīng)用程序中的應(yīng)用,使得網(wǎng)頁可以動態(tài)更新頁面內(nèi)容,同樣給針對Web應(yīng)用程序的建模帶來了挑戰(zhàn)。Wang等人[14]基于用戶會話的分析建立Web應(yīng)用程序的模型。Marchetto等人[15]給出了一種基于Ajax操作的網(wǎng)頁DOM結(jié)構(gòu)變化的建模方法。賀濤等人[16]在FSM模型的基礎(chǔ)上,引入了UML分層模型對含有Ajax部分的網(wǎng)頁狀態(tài)進(jìn)行建模。與ASM模型相比,它們無法生成完整的測試用例,但是也為ASM模型的進(jìn)一步優(yōu)化提供了思考的空間。

        Web應(yīng)用程序的快速開發(fā),導(dǎo)致其版本快速更新,原有的測試用例無法在新版本上得到應(yīng)用,Leotta等人[17]基于DOM元素的變更修復(fù)測試用例,提高了測試用例的健壯性。

        6 結(jié)束語

        本文提出一種基于ASM模型約簡的測試用例優(yōu)化方法。隨著Web應(yīng)用程序規(guī)模的增大,基于ASM模型的測試用例生成方法,可以測試用戶的非預(yù)期行為,但是由于無效訪問狀態(tài)和無效遷移的擴(kuò)充,導(dǎo)致測試用例空間爆炸。本文通過定義基于ASM模型的等價遷移和等價狀態(tài)進(jìn)行遷移和狀態(tài)的合并,有效地減少了測試用例的數(shù)量。實驗結(jié)果分析表明,基于ASM模型約簡的測試用例優(yōu)化,極大壓縮了測試用例空間,在ASM模型約簡基礎(chǔ)上生成測試用例,不影響原子段的覆蓋率,也沒有影響檢測到的錯誤數(shù)目。

        [1] Ravi K,Marcia R.E-Business 2.0:Roadmap for success[M].Boston:Addison-Wesley Professional,2000.

        [2] Lebeau F,Legeard B,Peureux F,et al.Model-based vulnerability testing for web applications[C]∥Proc of the 6th International Conference on Software Testing,Verification and Validation WorkShops (ICSTW),2013:445-452.

        [3] Mubin S A,Jantan A H,Abdullah R,et al.UML-based conceptual design approach for modeling complex processes in web application[J].International Journal of Applied Engineering Research,2016,11(6):4579-4585.

        [4] Andrews A A,Offutt J,Alexander R T.Testing web applications by modeling with FSMs[J].Software & Systems Modeling,2005,4(3):326-345.

        [5] Anand K.Systems and methods for tokenizing user-generated content to enable the prevention of attacks:U.S.Patent 9,313,223[P].2016-04-12.

        [6] Shams M,Krishnamurthy D,Far B.A model-based approach for testing the performance of web applications[C]∥Proc of the 3rd International Workshop on Software Quality Assurance,2006:54-61.

        [7] Offutt J,Wu Y.Modeling presentation layers of web applications for testing[J].Software & Systems Modeling,2010,9(2):257-280.

        [8] Thummala S,Offutt J.An evaluation of the effectiveness of the atomic section model[C]∥Proc of International Conference on Model Driven Engineering Languages and Systems,2014:35-49.

        [9] Lemos A L,Daniel F,Benatallah B.Web service composition:A survey of techniques and tools[J].ACM Computing Surveys (CSUR),2016,48(3):1-33.

        [10] Hou Gang, Zhou Kuan-jiu,Yong Jia-wei,et al.Survey of state explosion problem in model checking[J].Computer Science,2013,40(6A):77-86.(in Chinese)

        [11] Graphviz[CP/OL].[2016-06-01].http://www.graphviz.org/.

        [12] Zheng Fang,Zheng Quan.Web application presentation layer test based dependency analysis[J].Computer & Digital Engineering,2011,39(1):163-167.(in Chinese)

        [13] Cosma D C,Mihancea P F.Understanding web applications using component based visual patterns[C]∥Proc of the 23rd International Conference on Program Comprehension,2015:281-284.

        [14] Wang W,Sampath S,Lei Y,et al.Using combinatorial testing to build navigation graphs for dynamic web applications[J].Software Testing,Verification & Reliability,2016,26(4):318-346.

        [15] Marchetto A,Tonella P,Ricca F.State-based testing of Ajax web applications[C]∥Proc of the 1st International Conference on Software Testing,Verification,and Validation,2008:121-130.

        [16] He Tao,Miao Huai-kou,Qian Zhong-sheng.Modeling and test case generation for Ajax-based WA[J].Computer Science,2014,41(8):219-223.(in Chinese)

        [17] Leotta M,Stocco A,Ricca F,et al.Using multi-locators to increase the robustness of web test cases[C]∥Proc of the 8th International Conference on Software Testing,2015:1-10.

        附中文參考文獻(xiàn):

        [10] 侯剛,周寬久,勇嘉偉,等.模型檢測中狀態(tài)爆炸問題研究綜述[J].計算機(jī)科學(xué),2013,40(6A):77-86.

        [12] 鄭芳,鄭全.基于依賴分析的 Web 應(yīng)用表示層測試方法研究[J].計算機(jī)與數(shù)字工程,2011,39(1):163-167.

        [16] 賀濤,繆淮扣,錢忠勝.基于 Ajax 技術(shù)的 Web 應(yīng)用的建模與測試用例生成[J].計算機(jī)科學(xué),2014,41(8):219-223.

        猜你喜歡
        用戶模型
        一半模型
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        3D打印中的模型分割與打包
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
        Camera360:拍出5億用戶
        100萬用戶
        推油少妇久久99久久99久久| 亚洲女人毛茸茸粉红大阴户传播 | 国产成人精品999在线观看| 精品久久久久久无码不卡| 人妻少妇无乱码中文字幕| 上海熟女av黑人在线播放| 中文无码一区二区不卡av| 亚洲综合一区二区三区四区五区 | 亚洲人不卡另类日韩精品| 人妻少妇精品中文字幕av| 亚洲免费视频播放| 亚洲视频不卡免费在线| 人妻少妇久久中中文字幕| 久久精品无码av| 香蕉视频在线观看国产| 日本高清不卡一区二区三区| 久久久免费看少妇高潮| 丰满人妻熟妇乱又伦精品软件 | 无遮高潮国产免费观看韩国| 久久精品国产免费观看99| 91蜜桃精品一区二区三区毛片| 亚洲成人免费av影院| 欧美黑人性暴力猛交喷水黑人巨大| 亚洲七七久久综合桃花| 女同性恋一区二区三区四区| 熟妇高潮一区二区三区在线观看| 99久久人妻精品免费二区| 无遮挡中文毛片免费观看| 极品少妇一区二区三区| 粉嫩国产av一区二区三区| 国产精品网站在线观看免费传媒 | 中文日韩亚洲欧美制服| 亚洲一区二区在线| 色综久久综合桃花网国产精品| 色吧噜噜一区二区三区| 亚洲熟女乱色综合亚洲图片| 永久免费看免费无码视频| 午夜桃色视频在线观看| 国产免费无遮挡吸奶头视频| 老熟女多次高潮露脸视频| 免费啪啪av人妻一区二区|