官术网_书友最值得收藏!

3.2 動態(tài)測試技術(shù)

3.2.1 動態(tài)測試的特點

動態(tài)測試是使用測試數(shù)據(jù)運行程序并分析輸出以發(fā)現(xiàn)缺陷的過程。根據(jù)測試?yán)碚摚绻麥y試數(shù)據(jù)滿足一定要求,那么通過測試可以發(fā)現(xiàn)程序中的大多數(shù)缺陷,并且可以評估程序質(zhì)量(如正確性、可靠性等)。

動態(tài)測試具有以下特點。

第一,實際運行被測試程序,得到程序運行的真實情況、動態(tài)情況,進(jìn)而進(jìn)行分析。這是動態(tài)測試的優(yōu)勢,也帶來一定的要求。實際運行被測試程序需要運行環(huán)境、輸入數(shù)據(jù)及輸出處理手段,有時還需要運行控制手段。尤其對于軟硬件綜合系統(tǒng),這類系統(tǒng)中的軟件一般具有如下特點:具有極高的專用外部設(shè)備處理要求,和硬件聯(lián)系緊密;通常要求強實時性;通常運行于特定或具有特殊條件的環(huán)境,與交互環(huán)境相關(guān);安全性要求高。因此,要建立一個滿足具有上述特點軟件要求的運行環(huán)境實屬不易。此外,還需要輸入數(shù)據(jù)和運行控制手段,就更增加了難度。

第二,必須生成測試數(shù)據(jù)來運行程序,測試質(zhì)量依賴于測試數(shù)據(jù)。

第三,生成測試數(shù)據(jù)、分析測試結(jié)果工作量大,開展測試工作費時、費力。

第四,動態(tài)測試涉及多方面的工作,涉及的人員多、數(shù)據(jù)多、設(shè)備多,要求有較好的管理和工作規(guī)程。

動態(tài)測試包括三部分核心內(nèi)容:生成測試數(shù)據(jù)、運行程序與驗證程序的輸出結(jié)果。圍繞上述核心內(nèi)容還有文檔編制、數(shù)據(jù)管理、操作規(guī)程化及工具應(yīng)用等方面的工作,其中最重要的內(nèi)容是生成測試數(shù)據(jù)的策略。測試數(shù)據(jù)準(zhǔn)確、完整的名稱應(yīng)為測試用例,包括輸入數(shù)據(jù)和預(yù)期結(jié)果。一般在說到測試用例生成時,由于預(yù)期結(jié)果構(gòu)造的困難性,因此側(cè)重或僅生成輸入數(shù)據(jù),并稱其為測試數(shù)據(jù),下面的討論即按此約定進(jìn)行。

生成測試數(shù)據(jù)的策略有黑盒測試和白盒測試,它們共同構(gòu)成動態(tài)測試技術(shù)的基本內(nèi)容。

3.2.2 黑盒測試和白盒測試

黑盒測試(Black-Box Testing)是一種按照需求規(guī)格說明設(shè)計測試數(shù)據(jù)的測試技術(shù)。它把程序看作內(nèi)部不可見的黑盒,測試者完全無須顧及程序內(nèi)部的邏輯結(jié)構(gòu)和編碼結(jié)構(gòu),也不用考慮程序中的語句及路徑,只需了解程序輸入和輸出之間的關(guān)系,或者程序功能,完全依靠能夠反映這一關(guān)系和程序功能的需求規(guī)格說明確定測試數(shù)據(jù),判定測試結(jié)果的正確性,即所依據(jù)的只是程序的外部特性。圖3.2所示為黑盒測試的示意圖。

圖3.2 黑盒測試的示意圖

使用黑盒測試技術(shù)的典型測試類型包括功能測試、強度測試、隨機測試等。因為黑盒測試從程序功能需求出發(fā),所以黑盒測試有時也被稱為功能測試。但需要明確的是,功能測試使用黑盒測試技術(shù),而黑盒測試除包括功能測試以外,還包括其他基于需求規(guī)格說明的測試,如強度測試。

白盒測試(White-Box Testing)是一種按程序內(nèi)部的邏輯結(jié)構(gòu)和編碼結(jié)構(gòu)設(shè)計測試數(shù)據(jù)的測試技術(shù)。采用這一測試技術(shù),測試者可以看到被測試程序的內(nèi)部結(jié)構(gòu),并根據(jù)其內(nèi)部結(jié)構(gòu)設(shè)計測試數(shù)據(jù),使程序中的每條語句、每個條件分支、每條路徑都在程序測試中受到檢驗。所以也稱白盒測試為結(jié)構(gòu)測試。圖3.3所示白盒測試的示意圖。

圖3.3 白盒測試的示意圖

白盒測試可以不考慮程序的需求規(guī)格說明,但是需要有設(shè)計說明作為依據(jù),單純從程序源代碼出發(fā)設(shè)計測試數(shù)據(jù)會降低白盒測試的有效性。

必須說明的是,無論是黑盒測試還是白盒測試,都不可能對程序進(jìn)行完整、徹底的測試。黑盒測試從輸入數(shù)據(jù)出發(fā)驗證功能,除非進(jìn)行窮舉,否則不可能進(jìn)行完整、徹底的測試。白盒測試從程序結(jié)構(gòu)出發(fā),由于程序結(jié)構(gòu)的復(fù)雜性,路徑條數(shù)本身有時是不能確定的,即使確定下來也往往是天文數(shù)字,所以要測試程序的全部結(jié)構(gòu)(每條路徑)也是不現(xiàn)實的。另外,黑盒測試基于需求規(guī)格說明,如果需求規(guī)格說明有誤,則通過黑盒測試是發(fā)現(xiàn)不了的。白盒測試基于邏輯結(jié)構(gòu),如果程序的邏輯結(jié)構(gòu)有錯誤或遺漏,則通過白盒測試也是無法發(fā)現(xiàn)的。表3.1所示為黑盒測試與白盒測試的優(yōu)缺點對比,介紹了它們各自的能力范圍,各自的不足,以及它們的互補關(guān)系。黑盒測試與白盒測試能夠發(fā)現(xiàn)的錯誤如圖3.4所示。

表3.1 黑盒測試與白盒測試的優(yōu)缺點對比

圖3.4 黑盒測試與白盒測試能夠發(fā)現(xiàn)的錯誤

主站蜘蛛池模板: 紫阳县| 乡宁县| 清水河县| 三原县| 新宾| 邢台市| 福清市| 台江县| 酒泉市| 当雄县| 临高县| 河源市| 巴南区| 汕头市| 苏尼特左旗| 普格县| 金堂县| 射洪县| 辉南县| 比如县| 黄浦区| 常德市| 印江| 合江县| 抚松县| 巨野县| 渑池县| 莎车县| 金门县| 腾冲县| 报价| 元阳县| 漳州市| 上蔡县| 达州市| 沁水县| 肥城市| 凤山县| 榆中县| 化德县| 安丘市|