qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          模型驅(qū)動的軟件測試技術(shù)

          模型驅(qū)動的軟件測試技術(shù)

          一、引言

            模型驅(qū)動的軟件測試(Model-Driven Test)技術(shù)是針對軟件中的一些常見的軟件模型而提出的一種測試技術(shù),如故障模型、安全模型、死鎖模型等。模型驅(qū)動的軟件測試以明確描述系統(tǒng)預(yù)期行為的抽象模型為依據(jù),根據(jù)模型覆蓋測試準則自動生成抽象的測試用例,自動地產(chǎn)生測試腳本,執(zhí)行測試并自動評價測試結(jié)果,從而有效提高測試效率。這一技術(shù)正成為當(dāng)前軟件工程學(xué)術(shù)界研究的一個重要方向。

            近年來,基于模型的軟件測試技術(shù)得到快速的發(fā)展,大量的軟件測試工具被研制出來從而可以自動地檢測軟件中的故障,并且在對一些大型商業(yè)軟件和開源軟件的測試中發(fā)現(xiàn)了大量的以前測試沒有發(fā)現(xiàn)的軟件故障和安全隱患。

            二、模型驅(qū)動的軟件測試技術(shù)的特點

            與其他測試技術(shù)相比,基于模型的軟件測試技術(shù)具有如下特點:

            (1)故障模型根據(jù)被測試應(yīng)用程序的分析設(shè)計模型及其生成測試模型、產(chǎn)生測試用例和進行測試結(jié)果評價。

            (2)大大提高了測試自動化水平以及測試效率。

            (3)部分解決了測試失效辨識問題,往往能發(fā)現(xiàn)其他測試技術(shù)難以發(fā)現(xiàn)的故障,保證了軟件質(zhì)量。

            (4)有利于測試用例的重用,并可以應(yīng)用成熟的理論和技術(shù)獲得比較完善的分析結(jié)果。

            三、軟件模型分類

            軟件模型是對軟件行為和軟件結(jié)構(gòu)的抽象描述。軟件模型通常可以分為以下7 類:

            (1)故障模型

            故障模型主要是會引起錯誤的常見軟件模型, 應(yīng)該盡量避免, 如內(nèi)存泄漏故障(MLF) 、使用空指針故障(NPDF) 、數(shù)組越界故障(OOBF) 、非法計算類故障(ILCF) 、使用未初始化變量的故障(UVF) 、不完備的構(gòu)造函數(shù)故障(ICF) 以及操作符異常故障(OAF) 等。

            (2)安全漏洞模型

            安全漏洞模型為他人攻擊軟件提供可能。而一旦軟件被攻擊成功,系統(tǒng)就可能發(fā)生癱瘓,所造成的危害可能更大。因此,此類漏洞應(yīng)當(dāng)盡量避免,如:緩沖區(qū)溢出漏洞模型、被感染數(shù)據(jù)漏洞模型、競爭條件漏洞模型等。

            (3)差性能模型

            該模型在軟件動態(tài)運行時效率比較低下,因此建議采用更高效的代碼來完成同樣的功能。這類模型主要包括調(diào)用了不必要的基本類型包裝類的構(gòu)造方法、空字符串的比較、拷貝字符串、未聲明為static 的內(nèi)部類、參數(shù)為常數(shù)的數(shù)學(xué)方法、創(chuàng)建不必要的對象以及聲明未使用的屬性及方法等。

            (4)并發(fā)故障模型

            該模型主要是針對程序員對多線程的編碼機制不十分了解,對各種同步的方法、Java 存儲器模型和Java 虛擬機的工作機制不是很清楚,而且由于線程啟動的任意性和不確定性使用戶無法確定所編寫的代碼具體何時執(zhí)行而導(dǎo)致對公共區(qū)域的錯誤使用,如死鎖等。

            (5)不良習(xí)慣模型

            該模型主要是由于程序員編寫代碼的不好習(xí)慣造成的一些錯誤。包括文件的空輸入、垃圾回收的問題,類、方法和域的命名問題,方法調(diào)用,對象序列化,域初始化等。

           

           (6)代碼國際化模型

            該模型主要是在語言進行國際化的過程中,可能造成本地設(shè)置和程序需求不符的情況,造成匹配錯誤。

            (7)易誘騙代碼模型

            該模型主要指代碼中容易引起歧義的、迷惑人的編寫方式。比如無意義的比較,永遠是真值的判斷,條件分支使用相同的代碼,聲明了卻未使用的域等,即那些混淆視聽,無法正常判斷程序的真正意圖的代碼。

            四、模型驅(qū)動的軟件測試過程

            模型驅(qū)動的軟件測試方法通過對測試過程的抽象化,分離測試模型和測試執(zhí)行,從而能夠通過正向或逆向手段建立針對WA某方面特征的測試模型,并重用有針對性的測試執(zhí)行手段。傳統(tǒng)黑盒、白盒測試方法與模型驅(qū)動的軟件測試方法并不矛盾,它們可以被包含到模型驅(qū)動的軟件測試過程中。

            如圖1所示,測試模型是模型驅(qū)動的軟件測試的核心概念,它在測試的不同階段表現(xiàn)為不同視圖。

            (1)通過被測系統(tǒng)(SUT)視圖得到測試模型;

            (2)基于測試模型,自動化或半自動化地得到測試用例集,通過測試用例視圖描述;

            (3)在測試執(zhí)行階段,測試部署和調(diào)度視圖通過相應(yīng)模型描述測試的執(zhí)行環(huán)境以及執(zhí)行過程;

            (4)根據(jù)部署調(diào)度模型自動執(zhí)行測試用例,生成的結(jié)果通過測試結(jié)果視圖顯示,并將某些結(jié)果直接反饋給被測系統(tǒng)模型、測試用例模型以及部署調(diào)度模型,在各自視圖上直觀的顯示出來,便于分析結(jié)果進行回歸測試。

            五、模型驅(qū)動的軟件測試工具

            模型驅(qū)動的軟件測試必須有相關(guān)工具支持。當(dāng)前,有代表性的模型驅(qū)動的軟件測試工具中有:

            (1)支持狀態(tài)機模型的工具。包括:Software Engineering Technology的測試工具toolSET_Certify,運行于RISC6000和SUN平臺;IBM的GOTCHA,可以根據(jù)用戶事先確定的測試充分性準則進行基于軟件狀態(tài)模型的測試例生成;IBM 的TCBean是一個提供測試腳本管理功能的基于狀態(tài)機的測試引擎。

            (2)支持馬爾可夫鏈模型的工具。包括:Cleanroom Software Engineering的CleanTest,支持統(tǒng)計測試,是商用的使用模型及統(tǒng)計測試例生成工具;IBM 的CleanroomCertification Assistant,可以自動化統(tǒng)計驗證過程,通過使用概率分布產(chǎn)生測試例,并對測試結(jié)果進行分析。

            (3)對UML模型提供測試支持的工具。包括:SilverMark公司針對IBM 公司的VisualAge開發(fā)的支持測試用例生成和回歸測試的TestMetor和UML Designer Connection。

          posted on 2011-11-14 09:46 順其自然EVO 閱讀(700) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 柳林县| 阜新| 湛江市| 镇巴县| 沂水县| 铜梁县| 洛宁县| 翁牛特旗| 奉节县| 邢台县| 北票市| 白银市| 石台县| 兰西县| 永德县| 泾源县| 崇仁县| 赣州市| 昭苏县| 巴楚县| 肃南| 柯坪县| 堆龙德庆县| 阳江市| 乐清市| 东丰县| 五峰| 新宁县| 嵊泗县| 乃东县| 永安市| 岳普湖县| 奉节县| 庄河市| 阳东县| 观塘区| 土默特右旗| 双牌县| 潼关县| 沽源县| 文成县|