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

正文內(nèi)容

基于模型的自動化測試工具的實(shí)現(xiàn)_畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2024-08-14 12:55 本頁面
 

【文章內(nèi)容簡介】 后觸發(fā), 98%由三個參數(shù)一起造成。其它應(yīng)用的錯誤發(fā)現(xiàn)率曲線也都比較相像,組合強(qiáng)度等于 4到 6 時錯誤發(fā)現(xiàn)率都達(dá)到了將近100%。 特別的,生成 2way 的測試用例集的方法被稱為 pairwise(或 allpairs)測試方法。目前 pairwise 是使用最普遍的組合測試技術(shù),因?yàn)檐浖械慕^大部分錯誤都只由一個或兩個參數(shù)造成, pairwise 生成的測試用例能夠覆蓋足夠的錯誤空間。使用 pairwise 技術(shù)后,總測試用例數(shù)目從原來的 MN下降到了約 M * N。至于生成高組合強(qiáng)度的測試用例,測試用例集發(fā)現(xiàn)錯誤的能力沒有實(shí)質(zhì)上的提高,卻會導(dǎo)致生成算法的更加復(fù)雜化和產(chǎn)生多得多的測試用例。最壞的情況下,當(dāng)組合強(qiáng)度和參數(shù)的數(shù)目相等時,組合測試退化為枚舉測試。 組合測試的最早提出,也就是為了 簡化軟件在各種配置環(huán)境下的測試。因?yàn)闋可娴接布h(huán)境的搭建,配置參數(shù)測試中每增加一種測試情況比單純地多寫一個測試用例所花的代價大得多。人們迫切需要解決這一問題,使得配置參數(shù)測試成為了組合測試中最為發(fā)達(dá)的形式,尤其在那些要求適應(yīng)不同硬件平臺和環(huán)境的軟件的測試過程中??紤]一款受 5 個配置因素影響的應(yīng)用:操作系統(tǒng)( Windows XP、 Apple OS X、 Red Hat Enterprise Linux),瀏覽器( IE、FireFox),網(wǎng)絡(luò)協(xié)議( IPv IPv6),處理器平臺( Intel、 AMD)和數(shù)據(jù)庫( MySQL、 Sybase、 基于模型的自動化測試工具的實(shí)現(xiàn) 第 9 頁 共 13 頁 Oracle),一共 32223=72 種硬件平臺。 pairwise 測試只需要設(shè)計(jì)如下 10 個測試,就覆蓋了每一種影響因素和另外一種影響因素的所有組合。 編號 操作系統(tǒng) 瀏覽器 網(wǎng)絡(luò)協(xié)議 處理器平臺 數(shù)據(jù)庫 1 XP IE IPv4 Intel MySQL 2 XP FireFox IPv6 AMD Sybase 3 XP IE IPv6 Intel Oracle 4 OS X FireFox IPv4 AMD MySQL 5 OS X IE IPv4 Intel Sybase 6 OS X FireFox IPv4 Intel Oracle 7 RHEL IE IPv6 AMD MySQL 8 RHEL FireFox IPv4 Intel Sybase 9 RHEL FireFox IPv4 AMD Oracle 10 OSX FireFox IPv6 AMD Oracle 表 22 pairwise 測試的配置 即使被測軟件沒有配置 選項(xiàng) , 軟件仍要處理一些輸入。例如, Word 20xx 應(yīng)用程序至少允許用戶對拖黑文字進(jìn)行 10 種不同操作:設(shè)為上標(biāo)、設(shè)為下標(biāo)、加粗、加下劃線、設(shè)為斜體、加刪除線、加灰色背景、加陰影效果、加倒影效果、加熒光效果。相關(guān)的字體處理函數(shù)需要根據(jù)用戶的輸入來相應(yīng)修改文字效果,該函數(shù)需要在所有的可能情況下都正常工作,而一共有 210=1024 種可能。前面的經(jīng)驗(yàn)告訴我們, 3way 的測試用例就能夠達(dá)到 90%以上的錯誤發(fā)現(xiàn)率,具有較高的收益 代價比。 圖 24 3way 覆蓋數(shù)組 圖 24 列出了對于具有 10 個變量、每個變量各有兩種取值的 3way 覆蓋數(shù)組。覆蓋數(shù)組并不唯一,這只是其中一種情況。 tway 覆蓋數(shù)組的特點(diǎn)是,任意 t 個參數(shù)的所有排列組合都將分別出現(xiàn)在覆蓋數(shù)組的某一行中,比如上圖中的 ABC、 DEG、 HIJ,三個參數(shù)共有 8 種排列組合( 000、 00 0 01 100、 10 1 111)都被覆蓋數(shù)組所覆蓋。覆蓋數(shù)組的每一行對應(yīng)一個測試用例,相比之前的 1024 個測試用例,組合測試只需要 13 個測試用例。 基于模型的自動化測試工具的實(shí)現(xiàn) 第 10 頁 共 13 頁 組合測試用例生成的本質(zhì)是構(gòu)造覆蓋數(shù)組, 最早的構(gòu)造方法是利用正交數(shù)組, 其定義和覆蓋數(shù)組類似,唯一區(qū)別在于正交數(shù)組中所有 t 元組出現(xiàn)的次數(shù)相同,而覆蓋數(shù)組不保證這一點(diǎn)。在某些特殊的情況下,正交數(shù)組就是最優(yōu)的覆蓋數(shù)組,為此,如何構(gòu)造正交數(shù)組問題吸引了大量的研究者研究。 Sloane 在其網(wǎng)站上總結(jié)記錄了超過 200 個正交數(shù)組 [18]。利用計(jì)算機(jī)也可以自動求解出部分類型的正交數(shù)組,由已知的大覆蓋數(shù)組構(gòu)造小覆蓋數(shù)組的方法被稱為坍塌 [19]。坍塌的缺陷在于,最終得到的覆蓋數(shù)組往往并不是最優(yōu)解,一般比最優(yōu)解要大。另 一種構(gòu)造方法剛好相反,是由已知的小覆蓋數(shù)組遞歸構(gòu)造出大覆蓋數(shù)組。 構(gòu)造最優(yōu)覆蓋數(shù)組的實(shí)際上是一個 NP 完全問題 [20],我們知道, NP 完全問題是一系列可以互相轉(zhuǎn)化的問題。于是我們可以利用和借鑒其它 NP 完全問題的研究成果來構(gòu)造覆蓋數(shù)組,比如第一個被證明為 NP 完全問題的可滿足性問題,整數(shù)規(guī)劃問題,圖論問題等等。 數(shù)學(xué)構(gòu)造方法僅限于某些特定大小或者組合強(qiáng)度的覆蓋數(shù)組的構(gòu)造,不具有通用性。 NP完全問題則是困擾了人類多年的超級難題,目前還沒有突破性解法,所以轉(zhuǎn)化為其它問題也是大同小異。但我們可以利用局部搜索方法,比如啟發(fā) 式搜索算法,在較短的時間內(nèi)就可以搜索出近似最優(yōu)解。啟發(fā)式搜索算法是利用一個已有的數(shù)組,通過合適的變換得到一個更優(yōu)的覆蓋矩陣,不斷地變換直到得到一個較優(yōu)的矩陣。近年來流行的模擬自然界行為的智能優(yōu)化算法中,目前已經(jīng)應(yīng)用到組合測試中的主要有模擬退火、禁忌搜索、遺傳算法等等。 更為有效的方法是貪心算法,貪心算法的思想是從空矩陣開始,然后逐行或者逐列地擴(kuò)展矩陣,直到所有的 t 元組都被覆蓋。按照擴(kuò)展方式的不同,又可以分為一維擴(kuò)展和二維擴(kuò)展。商業(yè)工具 AETG 最先提出一維擴(kuò)展的方法 [21],依次增加一行,每次盡可能多地覆蓋未覆蓋的 t 元組。微軟開發(fā)的工具 PICT 采用類似 AETG 的方法生成測試用例 [22],不同之處在于,PICT 每次產(chǎn)生的結(jié)果是相同的。 Lei 等人提出的 IPO( Inparameterorder) [23]方法屬于二維擴(kuò)展, 該算法主要針對 pairwise 測試。首先構(gòu)造前兩個參數(shù)的所有組合,形成一個小的矩陣,再分別為矩陣添加一列和必要多的行,覆蓋完所有元組后結(jié)束。 我們將模仿 PICT 工具中 pairwise 算法的主要思想,使用一維擴(kuò)展的貪心算法來生成覆蓋數(shù)組。同時給系統(tǒng)留好接口,利于以后換用新的 pairwise 生成算法,具體的算法設(shè)計(jì)將在第四章介紹。 . MBT 預(yù)期輸出 生成 三大關(guān)鍵技術(shù)就只剩下輔助性內(nèi)容生成工具了,輔助性工具主要還是為了解決預(yù)期輸出的生成問題。前面我們構(gòu)造了系統(tǒng)的模型,模型描述了系統(tǒng)的狀態(tài)和狀態(tài)之間的動作,這些動作都是由一個個函數(shù)和方法的調(diào)用序列組成的。 SUT 提供的 API 往往不能和測試用例的要求完全契合,為了讓測試用例能夠順利地在 SUT 上執(zhí)行,需要測試人員在 SUT 之上再包裝一層,即圖 21 中的 適配器層。 嚴(yán)格地說,我們編寫的工具只負(fù)責(zé)生成基本的測試用例框架,或者稱為抽象的測試用例。測試用例中相當(dāng)于使用了打樁的設(shè)計(jì)模式,樁的實(shí)際實(shí)現(xiàn)由最終的測試人員補(bǔ)充完成,樁的實(shí)現(xiàn)包括對 SUT 提供的 API 的封裝組合和測試判斷邏輯的編寫。我們把這些樁叫做 token,token 對應(yīng)于適配器層中的某個函數(shù)和方法,兩者可以直接一一對應(yīng),也可以先序列化為可擴(kuò)展標(biāo)記語言( XML, Extensible Markup Language)文件再利用 XML 解析器之類的工具生成測試用例。這樣 MBT 的整個測試工具都變得項(xiàng)目之間可移植了,如果某一測試條件和預(yù)期結(jié)果不同則在 token 中拋出異常,拋出的異常隨后被測試工具捕獲,最終判定該測試用例不通過。圖 25 展示了一個測試工具自動生成的測試用例,用戶需要實(shí)現(xiàn) token_1 和 token_2的具體邏輯,然后測試用例就能夠被真正執(zhí)行了。 token_1和 token_2 執(zhí)行過程中如果發(fā)現(xiàn)錯誤會觸發(fā)異常,程序打印出錯誤提示,同時導(dǎo)致測試用例的總錯誤個數(shù)加一。反之,一切正常并給出通過提示。 基于模型的自動化測試工具的實(shí)現(xiàn) 第 11 頁 共 13 頁 圖 25 測試用例示例 另外我們也可以利用 pairwise 來完成部分 情況下預(yù)期輸出的生成。對于相同輸出結(jié)果的某些參數(shù)取值組合,把輸出結(jié)果也當(dāng)作 pairwise 算法輸入?yún)?shù)的一項(xiàng),輸出結(jié)果列和其它輸入?yún)?shù)的區(qū)別在于其取值唯一。 PICT 工具還支持混合組合強(qiáng)度的測試用例生成,以及輸入各種約束,比如指定某些參數(shù)的組合形式必須出現(xiàn)或者不出現(xiàn),所以具有較強(qiáng)的預(yù)期輸出生成能力。不過如果預(yù)期輸出涉及復(fù)雜的判斷邏輯,還是使用委托給 token 來處理的方法較好。 基于模型的自動化測試工具的實(shí)現(xiàn) 第 12 頁 共 13 頁 第三章 系統(tǒng)架構(gòu) . 功能概述及流程 課題要求完成的 基于模型的自動化測試工具 的功能包括:支持輸入 FSM 模型、支持添加token、支持 pairwise 組合測試、支持生成測試用例框架、支持序列化 FSM 模型到文件和反序列化讀入。其中考慮到 token 的可復(fù)用性,用戶可以直接在工具上定義 token 順序執(zhí)行序列組成的函數(shù)過程,更復(fù)雜的函數(shù)過程則通過添加新的 token 實(shí)現(xiàn)。用戶使用該工具生成測試用例的流程如下: 圖 31 生成測試用例流程 用戶可以直接繪制 FSM 模型,或者在以前保存的模型基礎(chǔ)上修改模型,工具支持 FSM模型的序列化與反序列化。繪制 FSM 模型時首先需要定義一些 FSM 的狀態(tài)轉(zhuǎn)換動作中用到的token 和這些 token 組成的若干 函數(shù)過程,隨后在模型繪制面板中畫出 FSM 模型相應(yīng)的有向圖。 FSM 模型的有向圖包括代表不同狀態(tài)的圓形節(jié)點(diǎn),以及代表狀態(tài)間轉(zhuǎn)換動作的弧線。一個 token 或函數(shù)過程可以在相同的或者不同的狀態(tài)轉(zhuǎn)換動作中被反復(fù)使用,只要求這些token 或函數(shù)過程方法頭中所定義的參數(shù)被正確地賦予某個常量或者變量。變量可以有多個允許的取值,用戶在 pairwise 相關(guān)面板輸入各個變量的可能取值,接下來工具將分析 FSM模型尋找所以可執(zhí)行路徑,同時結(jié)合路徑長度限制和 pairwise 技術(shù)來生成測試用例。最后用戶還可以在生成的測試用例中再人工 選擇部分測試用例出來,保存為最終需要被執(zhí)行的測試用例。 基于模型的自動化測試工具的實(shí)現(xiàn) 第 13 頁 共 13 頁 . 系統(tǒng)架構(gòu) 工具設(shè)計(jì)的主要目的是為了自動生成測試用例, 而模型是驅(qū)動 MBT 各測試過程的根本,所以系統(tǒng)架構(gòu)中最核心的部分是 FSM 的數(shù)據(jù)模型,數(shù)據(jù)模型描述了 FSM 中各個狀態(tài)和轉(zhuǎn)換動作的詳細(xì)屬性。比如狀態(tài)名稱,轉(zhuǎn)換動作名稱,用戶所定義 token 的名稱和所需輸入輸出參數(shù),函數(shù)過程的名稱和其中包含的 token 執(zhí)行序列等等。 圖 32 系統(tǒng)總體架構(gòu) 用戶不是生硬地使用形式化語言來描述 FSM 數(shù)據(jù)模型,工具提供了可視化界面,實(shí)現(xiàn)了鼠標(biāo)選取不同繪圖元素再拖拽調(diào)整的繪圖方式。此外,為了持久化保存繪制好的 FSM 模型,系統(tǒng)包含了序列化模塊,用于模型的序列化與反序列化。 測試用例的生成過程是基于兩大模塊來完成的, FSM 模型遍歷模塊負(fù)責(zé)生成各種可執(zhí)行路徑, pairwise 測試模塊負(fù)責(zé)生成參數(shù)變量取值的不同組合。最后把參數(shù)變量取值代入可執(zhí)行路徑中,即得到測試用例。 基于模型的自動化測試工具的實(shí)現(xiàn) 第 14 頁 共 13 頁 第四章 系統(tǒng) 各功能 實(shí)現(xiàn) 前一章中我們介紹了系統(tǒng)的整體架構(gòu),下面將逐一介紹系統(tǒng)各模塊的具體實(shí)現(xiàn),整個系統(tǒng)都使用 C語言編寫完成。 . 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)系。對于一些簡單的 set 和 get 方法圖中并沒有標(biāo)出,其它輔助性的方法也予于省略。 0..10..*0..10..*0..10..*0..10..*0..10..10..10..*0..10..*1..11..10..10..*FSMstatesactionsstateMapactionMap: ListState: ListAction: Dictionarystring,State: Dictionarystring,Action++++++Initialize ()GenerateTours ()GetAction ()GetState ()LoadFromXML ()SaveToXML ()...: void: ListTour: Action: State: void: voidAction
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1