freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于模型的自動化測試工具的實(shí)現(xiàn)_畢業(yè)設(shè)計論文(參考版)

2024-09-04 17:27本頁面
  

【正文】 Sons, New York, 1979.[4] Guideline for Lifecycle Validation, Verification, and Testing of Computer Software. National Bureau of Standards Report NBS FIPS 101. Washington, .. 1983.[5] ANSI/IEEE STD 8291983 Standard for Software Test Documentation. Institute of Electrical and Electronics Engineers, New York, 1983.[6] Gelperin, D.。如果日后的工具能夠支持自動分析自然語言需求來生成系統(tǒng)模型,對于完善整個軟件測試過程的自動化將有著重大意義。隨著軟件測試領(lǐng)域不斷涌現(xiàn)的測試用例生成算法,可以考慮讓工具支持更多更強(qiáng)大的算法。組合測試在保證測試用例對所有取值組合進(jìn)行足夠覆蓋的前提下,有效地壓縮了多參數(shù)多可能取值情況下生成的測試用例數(shù)目。我們開發(fā)的工具使用了較為簡便和熟悉的有限狀態(tài)機(jī)模型,同時提供了對模型的可視化輸入和持久序列化功能。測試人員的關(guān)注點(diǎn)在于構(gòu)建一個能夠描述被測系統(tǒng)各方面數(shù)據(jù)和行為的形式化機(jī)器可讀模型,通過對模型的分析就可以自動生成測試用例,包括提供給待測試系統(tǒng)的輸入和預(yù)期輸出。傳統(tǒng)的測試技術(shù)越來越難以滿足日益復(fù)雜龐大系統(tǒng)的測試需求,高效的測試方法和測試工具成為業(yè)界追逐的主流。因?yàn)樗械膖oken都未實(shí)現(xiàn),所以全部的測試用例都顯示為不通過。工具最終搜索到了17條有效路徑(圖57a),如果只限定路徑長度,那么將產(chǎn)生264條可執(zhí)行路徑(圖57b),其中包含大量的冗余路徑。圖56 組合測試生成測試用例生成算法的另一大模塊是模型遍歷算法,其相關(guān)組件位于標(biāo)簽頁中的最后一項。圖56中識別出了6個變量,分別代表銀行卡的權(quán)限類型、實(shí)際操作類型、操作的操作數(shù)、操作數(shù)是否會導(dǎo)致余額為負(fù)數(shù)、操作數(shù)是否超過ATM上限、ATM所屬銀行。首先切換到變量信息標(biāo)簽頁,工具會把FSM模型中用過的變量都識別出來,而常量則不被列出。圖55中展示的是函數(shù)過程TripleInvalidPswd,它的token序列為連續(xù)三次調(diào)用EnterPswd,每次EnterPswd調(diào)用傳入的參數(shù)都為0,代表錯誤的密碼。圖53 定義token和函數(shù)過程圖54 添加token的對話框轉(zhuǎn)換動作(包括函數(shù)過程)都是由token序列組成的,工具提供從token列表中直接拖放添加的方式,同時支持特定token在序列中位置的上移、下移或刪除。其中定義token時會彈出如圖54的對話框,用于詳細(xì)輸入token各項屬性內(nèi)容,雙擊樹結(jié)構(gòu)中已添加好的token節(jié)點(diǎn)可以重新編輯。輸入密碼的過程被區(qū)分為正確輸入與連續(xù)三次輸錯,連續(xù)三次輸錯的動作會用到token函數(shù)過程,模型中不考慮連續(xù)輸錯不足三次又最后輸入正確的情況。和現(xiàn)實(shí)中的ATM系統(tǒng)相比,我們添加了ATM的初始配置過程(動作initATM),用以設(shè)定ATM所屬銀行的名稱,結(jié)合不同的銀行卡類型來說明pairwise測試功能。至于下方選項卡上的另外兩個標(biāo)簽頁,分別用于設(shè)置pairwise測試參數(shù)取值和遍歷模型生成測試用例。選中的token或函數(shù)過程的輸入?yún)?shù)和輸出參數(shù)位于詳情面板的中間,用戶設(shè)置錯誤時下方提示區(qū)會給出友好的提示信息。下方選項卡默認(rèn)選擇的是FSM詳情面板,當(dāng)繪圖區(qū)中FSM模型的轉(zhuǎn)換動作或函數(shù)過程組件被選中時,其內(nèi)部包含的token或函數(shù)過程將被列在詳情面板的左側(cè)。利用這些繪圖工具就可以在右側(cè)的繪圖區(qū)繪制FSM可視化模型,此外可以隨時通過切換上方選項卡來查看模型序列化后的XML格式內(nèi)容。圖51 主界面工具頂端的工具欄提供了一些基本操作的按鈕,例如新建、打開、保存等功能。為了體現(xiàn)工具的各項特點(diǎn),該系統(tǒng)和我們熟知的ATM系統(tǒng)有所不同,論文在后面會詳細(xì)說明這些區(qū)別。方法MakeSuite實(shí)際調(diào)用的是FSM模型遍歷算法,最后方法Save根據(jù)收集好的信息按照一定的格式生成測試用例文件,用戶也可以根據(jù)自己需要覆寫該方法。圖48 PICT相關(guān)封裝類. 最終測試用例集實(shí)現(xiàn)有了模型遍歷算法的實(shí)現(xiàn)和pairwise測試算法,結(jié)合兩者我們就能構(gòu)建生成最終的測試用例集了。用戶自己實(shí)現(xiàn)的pairwise算法只要滿足輸入?yún)?shù)和輸出格式與我們設(shè)計的相同,即能夠在配置文件中指定并良好地整合。系統(tǒng)調(diào)用該模塊時,首先通過配置文件提供的路徑定位。這里篩選出的4種取值情況都只能新覆蓋1種取值組合,所以使用AB的00,至此我們就生成了第一個測試用例,隨后的測試用例生成都如上述過程。于是我們篩選出了AB的00、01,BC的00、10。當(dāng)存在多個相同最大剩余取值組合的參數(shù)組合時,只選擇第一個參數(shù)組合的第一種取值情況,即AC的00情況首先被選用。我們不考慮此特性的功能,下面介紹如何完成新測試用例ri的生成。每當(dāng)生成一種新的測試用例時,被新測試用例覆蓋的取值情況狀態(tài)會跟隨之改變,算法直到所有取值情況的狀態(tài)都為覆蓋時終止。那么它們之間的兩兩組合情況有:AB、AC、BC,具體的取值可能如圖46所示,pairwise測試的最終目的就是全部覆蓋這些取值情況。圖46 參數(shù)組合示例[22]準(zhǔn)備階段將計算出生成階段所要用到的各種信息,包括需要被覆蓋的不同參數(shù)取值組合。. pairwise測試實(shí)現(xiàn)此部分的實(shí)現(xiàn)主要模仿微軟PICT工具[22],運(yùn)用一維擴(kuò)展的貪心算法策略逐步得到覆蓋矩陣。為了不讓搜索得到的路徑包含太多重復(fù)回路,如果新擴(kuò)展的動作已經(jīng)被原路徑多次包含,該路徑及其擴(kuò)展路徑都將被拋棄。圖45 模型遍歷算法核心代碼模型遍歷算法的本質(zhì)是圖論中的廣度優(yōu)先搜索(BFS, BreadthFirst Search)算法,圖45給出了算法的核心代碼。折衷的辦法是通過路徑長度來限制測試用例的產(chǎn)生,同時用戶構(gòu)建FSM模型時有意識地把復(fù)雜系統(tǒng)拆分為幾個子系統(tǒng)來單獨(dú)進(jìn)行測試,繪制FSM模型時也可以分別指定不同的初始狀態(tài)來尋找路徑。最為全面地測試FSM模型的方法是找出其有向圖中的所有可執(zhí)行路徑,然后把它們都轉(zhuǎn)換為測試用例去執(zhí)行。方法Serialize負(fù)責(zé)把對象的某個實(shí)例序列化到某個輸出流中,方法DeSerialize則負(fù)責(zé)從某個輸入流中反序列化出原始狀態(tài)的對象。,并且支持從XML文件中重新創(chuàng)建原始狀態(tài)的對象。每個希望被序列化的公共屬性必須提供set和get方法,否則該屬性無法被正確序列化到XML文件中。圖43 自定義UI組件示例C語言提供了方便的標(biāo)記功能來支持對象的序列化與反序列化(圖44)。類FunctionR以灰色粗線加圓點(diǎn)的形式繪制用戶自定義函數(shù)過程的標(biāo)記,默認(rèn)排列在FSM繪制區(qū)域的左上角。方法名稱作用DrawCurve繪制經(jīng)過一組指定的Point結(jié)構(gòu)的曲線DrawLine繪制一條連接由坐標(biāo)對指定的兩個點(diǎn)的線條DrawPolygon繪制由一組Point結(jié)構(gòu)定義的多邊形DrawString在指定位置并由指定的Brush和Font對象繪制指定的文本字符串FillEllipse填充邊框所定義橢圓的內(nèi)部,該邊框由一對坐標(biāo)、一個寬度和一個高度指定表41 類Graphics部分方法圖43展示了這幾個類的繪圖效果,類StateR繪制紫色的圓圈代表狀態(tài)節(jié)點(diǎn),類ActionR則繪制了兩種代表轉(zhuǎn)換動作的深綠色弧線。類StateR和TourR直接實(shí)現(xiàn)了接口IRenderable,但是類ActionR和類FunctionR實(shí)現(xiàn)的則是接口IRenderable的擴(kuò)展接口IActionRenderable,該接口添加了一個保存轉(zhuǎn)換動作信息的域。雖然WinForm技術(shù)中已經(jīng)提供了許多可以直接使用的組件,但是距離我們的要求還是有一定差距,所以我們自己設(shè)計實(shí)現(xiàn)了新的組件來完成FSM模型的可視化。類Variable中包含一個根據(jù)其標(biāo)識名稱name來判斷的方法IsVariable。最后,注意一下參數(shù)和變量的區(qū)別:參數(shù)指的是函數(shù)方法頭中定義的輸入,而變量是在實(shí)際調(diào)用函數(shù)方法時對參數(shù)的賦值。類TokenImpl和類FunctionImpl繼承了類ActionImpl,其中類TokenImpl表示的是用戶定義的基本token,而類FunctionImpl表示的這些token順序序列組成的函數(shù)過程。除了以上代表FSM實(shí)體組成部分的類,F(xiàn)SM數(shù)據(jù)模型還必須描述SUT相關(guān)部分的信息。在尋找可執(zhí)行的測試路徑過程中,程序從初始狀態(tài)開始深度遍歷FSM有向圖,直到到達(dá)某個終止?fàn)顟B(tài)或路徑長度達(dá)到限制才結(jié)束。我們定義了三種狀態(tài)類型:Entry、Free和Exit,Entry和Exit分別代表初始狀態(tài)和終止?fàn)顟B(tài),F(xiàn)ree代表其他自由狀態(tài)。圖41 FSM數(shù)據(jù)模型的類圖類FSM中記錄著系統(tǒng)FSM數(shù)據(jù)模型的所有信息,它里面有兩個鏈表分別記錄FSM的狀態(tài)實(shí)例和轉(zhuǎn)換動作實(shí)例,同時有兩個Dictionary分別記錄狀態(tài)和轉(zhuǎn)換動作的名稱與實(shí)例之間的映射關(guān)系。. FSM數(shù)據(jù)模型實(shí)現(xiàn)我們知道FSM數(shù)據(jù)模型是影響系統(tǒng)的關(guān)鍵,圖41列出了系統(tǒng)實(shí)際實(shí)現(xiàn)過程中FSM數(shù)據(jù)模型相關(guān)各類之間的關(guān)系。最后把參數(shù)變量取值代入可執(zhí)行路徑中,即得到測試用例。此外,為了持久化保存繪制好的FSM模型,系統(tǒng)包含了序列化模塊,用于模型的序列化與反序列化。比如狀態(tài)名稱,轉(zhuǎn)換動作名稱,用戶所定義token的名稱和所需輸入輸出參數(shù),函數(shù)過程的名稱和其中包含的token執(zhí)行序列等等。最后用戶還可以在生成的測試用例中再人工選擇部分測試用例出來,保存為最終需要被執(zhí)行的測試用例。一個token或函數(shù)過程可以在相同的或者不同的狀態(tài)轉(zhuǎn)換動作中被反復(fù)使用,只要求這些token或函數(shù)過程方法頭中所定義的參數(shù)被正確地賦予某個常量或者變量。繪制FSM模型時首先需要定義一些FSM的狀態(tài)轉(zhuǎn)換動作中用到的token和這些token組成的若干函數(shù)過程,隨后在模型繪制面板中畫出FSM模型相應(yīng)的有向圖。其中考慮到token的可復(fù)用性,用戶可以直接在工具上定義token順序執(zhí)行序列組成的函數(shù)過程,更復(fù)雜的函數(shù)過程則通過添加新的token實(shí)現(xiàn)。不過如果預(yù)期輸出涉及復(fù)雜的判斷邏輯,還是使用委托給token來處理的方法較好。對于相同輸出結(jié)果的某些參數(shù)取值組合,把輸出結(jié)果也當(dāng)作pairwise算法輸入?yún)?shù)的一項,輸出結(jié)果列和其它輸入?yún)?shù)的區(qū)別在于其取值唯一。反之,一切正常并給出通過提示。圖25展示了一個測試工具自動生成的測試用例,用戶需要實(shí)現(xiàn)token_1和token_2的具體邏輯,然后測試用例就能夠被真正執(zhí)行了。我們把這些樁叫做token,token對應(yīng)于適配器層中的某個函數(shù)和方法,兩者可以直接一一對應(yīng),也可以先序列化為可擴(kuò)展標(biāo)記語言(XML,Extensible Markup Language)文件再利用XML解析器之類的工具生成測試用例。嚴(yán)格地說,我們編寫的工具只負(fù)責(zé)生成基本的測試用例框架,或者稱為抽象的測試用例。前面我們構(gòu)造了系統(tǒng)的模型,模型描述了系統(tǒng)的
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1