qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          論黑盒測(cè)試與白盒測(cè)試在軟件測(cè)試中的不同作用

          摘要:黑盒測(cè)試著眼于外部結(jié)構(gòu),不考慮內(nèi)部結(jié)構(gòu),只依據(jù)程序的需求規(guī)格說(shuō)明書(shū),檢查程序的功能是否符合它的功能說(shuō)明;而白盒測(cè)試著眼于內(nèi)部結(jié)構(gòu),對(duì)軟件的過(guò)程性細(xì)節(jié)做細(xì)致的檢查。

            關(guān)鍵詞:黑盒測(cè)試;白盒測(cè)試;測(cè)試用例

            一、引言

            隨著軟件市場(chǎng)的成熟,人們對(duì)軟件作用的期望值也越來(lái)越高,我國(guó)的軟件企業(yè)已越來(lái)越意識(shí)到軟件測(cè)試的重要性,逐漸加大軟件測(cè)試在整個(gè)軟件開(kāi)發(fā)的系統(tǒng)工程中的比重。

            軟件測(cè)試并非傳統(tǒng)意義上產(chǎn)品交付前單一的“找錯(cuò)”過(guò)程,而是貫穿于軟件過(guò)程的始終,是一個(gè)科學(xué)的質(zhì)量控制過(guò)程。而對(duì)于任何工程產(chǎn)品都可以使用以下兩種方法之一進(jìn)行測(cè)試,即黑盒測(cè)試與白盒測(cè)試。

            二、黑盒測(cè)試在軟件測(cè)試中的作用

            黑盒測(cè)試也稱為功能測(cè)試、行為測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,在測(cè)試時(shí),把程序看作一個(gè)不能打開(kāi)的黑盒,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說(shuō)明書(shū),檢查程序的功能是否符合它的功能說(shuō)明,因此黑盒測(cè)試是基本測(cè)試。例如:我們用C#編寫(xiě)“計(jì)算器”應(yīng)用程序,我們?nèi)绻斎?并按sqrt鍵,就會(huì)得到結(jié)果2.645751311。使用黑盒子測(cè)試方式,不管“求平方根”要經(jīng)歷多少?gòu)?fù)雜運(yùn)算,只關(guān)心他的運(yùn)行結(jié)果。

            黑盒測(cè)試方法主要有等價(jià)類劃分、邊值分析、因――果圖、錯(cuò)誤推測(cè)等,主要用于軟件確認(rèn)測(cè)試。“黑盒”法著眼于程序外部結(jié)構(gòu)、不考慮內(nèi)部邏輯結(jié)構(gòu)、針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試。“黑盒”法是窮舉輸入測(cè)試,只有把所有可能的輸入都作為測(cè)試情況使用,才能以這種方法查出程序中所有的錯(cuò)誤。實(shí)際上測(cè)試情況有無(wú)窮多個(gè),人們不僅要測(cè)試所有合法的輸入,而且還要對(duì)那些不合法但是可能的輸入進(jìn)行測(cè)試。黑盒測(cè)試的主要缺陷是難于衡量系統(tǒng)的完整性,而白盒測(cè)試正好可以彌補(bǔ)這個(gè)缺陷。

            “黑盒”表示看不見(jiàn)盒子里頭的東西,意味著黑盒測(cè)試不關(guān)心軟件內(nèi)部設(shè)計(jì)和程序?qū)崿F(xiàn),只關(guān)心外部表現(xiàn),即通過(guò)觀察輸入與輸出即可知道測(cè)試的結(jié)論。任何人都可以依據(jù)軟件需求來(lái)執(zhí)行黑盒測(cè)試。黑盒測(cè)試注重于測(cè)試軟件的功能性需求,著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),主要針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試,多應(yīng)用于測(cè)試過(guò)程的后期。它是一種根據(jù)軟件需求,設(shè)計(jì)文檔,模擬客戶場(chǎng)景隨系統(tǒng)進(jìn)行的實(shí)際測(cè)試.這種測(cè)試技術(shù)涵蓋了測(cè)試的方方面面,它主要是為發(fā)現(xiàn)以下幾類錯(cuò)誤:是否出現(xiàn)功能錯(cuò)誤或遺漏;在接口上能否進(jìn)行正確的輸入與輸出;是否存在數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤;性能上是否能夠滿足要求;是否有初始化或終止性錯(cuò)誤。

            所以黑盒測(cè)試實(shí)際上是檢查以下幾點(diǎn)是否滿足要求:

            1、c正確性 (Correctness):計(jì)算結(jié)果,命名等方面。

            2、d可用性 (Usability):是否可以滿足軟件的需求說(shuō)明。

            3、e邊界條件 (Boundary Condition):輸入部分的邊界值,就是使用等價(jià)類劃分,試試最大最小和非法數(shù)據(jù)等等。

            4、f性能 (Performance):程序的性能取決于兩個(gè)因素:運(yùn)行速度的快慢和需要消耗的系統(tǒng)資源。如果在測(cè)試過(guò)程中發(fā)現(xiàn)性能問(wèn)題,修復(fù)起來(lái)是非常艱難的,因?yàn)檫@常常意味著程序的算法不好,結(jié)構(gòu)不好,或者設(shè)計(jì)有問(wèn)題。因此在產(chǎn)品開(kāi)發(fā)的開(kāi)始階段,就要考慮到軟件的性能問(wèn)題。

            5、g壓力測(cè)試 (Stress): 多用戶情況可以考慮使用壓力測(cè)試工具,建議將壓力和性能測(cè)試結(jié)合起來(lái)進(jìn)行。如果有負(fù)載平衡的話還要在服務(wù)器端打開(kāi)監(jiān)測(cè)工具 , 查看服務(wù)器 CPU 使用率,內(nèi)存占用情況,如果有必要可以模擬大量數(shù)據(jù)輸入,對(duì)硬盤(pán)的影響等等信息。

            6、h錯(cuò)誤恢復(fù) (Error Recovery):錯(cuò)誤處理,頁(yè)面數(shù)據(jù)驗(yàn)證,包括突然間斷電,輸入錯(cuò)誤數(shù)據(jù)等。

            7、i安全性測(cè)試 (Security):特別是一些商務(wù)網(wǎng)站,或者跟錢(qián)有關(guān),或者和公司秘密有關(guān)的 web 更是需要這方面的測(cè)試。

            8、j 兼容性 (Compatibility):不同瀏覽器,不同應(yīng)用程序版本在實(shí)現(xiàn)功能時(shí)的表現(xiàn)。

            應(yīng)用黑盒測(cè)試技術(shù),能夠設(shè)計(jì)出滿足下述標(biāo)準(zhǔn)的測(cè)試用例集:

            (1)所設(shè)計(jì)出的測(cè)試用例能夠減少為達(dá)到合理測(cè)試所需要設(shè)計(jì)的測(cè)試用例總數(shù);

            (2)所設(shè)計(jì)出的測(cè)試用例能夠告訴我們,是否存在某些類型的錯(cuò)誤,而不僅僅指出與特定測(cè)試相關(guān)的錯(cuò)誤是否存在。

            三、白盒測(cè)試在軟件測(cè)試中的作用

            白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,是一種以理解軟件內(nèi)部結(jié)構(gòu)和程序運(yùn)行方式為基礎(chǔ)的軟件測(cè)試技術(shù),通常需要跟蹤一個(gè)輸入經(jīng)過(guò)了哪些處理,這些處理方式是否正確。這種方法是把測(cè)試對(duì)象看作一個(gè)打開(kāi)的盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。

            白盒測(cè)試關(guān)注的是被測(cè)對(duì)象的內(nèi)部狀況,需要跟蹤源代碼的運(yùn)行。通過(guò)檢查軟件內(nèi)部的邏輯結(jié)構(gòu),對(duì)軟件中的邏輯路徑進(jìn)行覆蓋測(cè)試;在程序不同地方設(shè)立檢查點(diǎn),檢查程序的狀態(tài),以確定實(shí)際運(yùn)行狀態(tài)與預(yù)期狀態(tài)是否一致。白盒測(cè)試者必須理解軟件內(nèi)部設(shè)計(jì)與程序?qū)崿F(xiàn),并且能夠編寫(xiě)測(cè)試驅(qū)動(dòng)程序,一般由開(kāi)發(fā)人員兼任測(cè)試人員的角色。在很多測(cè)試人員,尤其是初級(jí)測(cè)試人員認(rèn)為,白盒測(cè)試是只有非常了解程序代碼的高級(jí)測(cè)試人員才能做的測(cè)試。熟悉代碼結(jié)構(gòu)和功能實(shí)現(xiàn)的過(guò)程當(dāng)然對(duì)測(cè)試有很大的幫助,但有些白盒測(cè)試是不需要測(cè)試人員懂得每一行程序代碼的。假如我們有如下程序:

           

          voidDoWhite_Box(int a,int b,int c)
          {
          inti=0,j=0;
          if((a>4)&&(c<20))
          {
          i=a*b-1;
          j=sqrt(i);
          }
          if((a= =5)||(b>15))
          {
          j=a*b+10;
          }
          j=j%3;
          }

           

            對(duì)于上面的程序,設(shè)計(jì)兩個(gè)測(cè)試用例則可以滿足條件覆蓋的要求。

            測(cè)試用例的輸入為:

            { a=5、b=15、c=15}

            { a=2、b=15、c=15}

            上面的兩個(gè)測(cè)試用例雖然能夠滿足條件覆蓋的要求,但是也不能對(duì)判斷條件進(jìn)行檢查,例如把第二個(gè)條件b>15錯(cuò)誤的寫(xiě)成b<15,、上面的測(cè)試用例同樣滿足了分支覆蓋。

            軟件的白盒測(cè)試是對(duì)軟件的過(guò)程性細(xì)節(jié)做細(xì)致的檢查。通過(guò)在不同點(diǎn)檢查程序狀態(tài),確定實(shí)際狀態(tài)是否與預(yù)期的狀態(tài)一致。白盒測(cè)試主要是想對(duì)程序模塊進(jìn)行如下檢查:

            1、對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一遍。

            2、對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測(cè)一遍。

            3、在循環(huán)的邊界和運(yùn)行的界限內(nèi)執(zhí)行循環(huán)體。

            4、測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等等。

            白盒測(cè)試的主要方法有語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋等,它是深入到代碼一級(jí)的測(cè)試,使用這種技術(shù)發(fā)現(xiàn)問(wèn)題最早,而且效果也是最好的。該技術(shù)主要的特征是測(cè)試對(duì)象進(jìn)入了代碼內(nèi)部,根據(jù)開(kāi)發(fā)人員對(duì)代碼和程序的熟悉程度,對(duì)有需要的部分進(jìn)行軟件編碼,開(kāi)發(fā)人員根據(jù)自己對(duì)代碼的理解和接觸來(lái)進(jìn)行軟件測(cè)試。

            四、白盒測(cè)試與黑盒測(cè)試的關(guān)系

            白盒測(cè)試和黑盒測(cè)試都是非常重要的環(huán)節(jié),不存在技術(shù)含量誰(shuí)高誰(shuí)低的問(wèn)題,只是兩者的偏重不同,使用的技術(shù)也不同。黑盒測(cè)試人員偏重于業(yè)務(wù)方面,而白盒測(cè)試人員側(cè)重于實(shí)現(xiàn)方式;黑盒測(cè)試注重整體,而白盒測(cè)試則更注重局部。白盒測(cè)試是對(duì)過(guò)程的測(cè)試,黑盒測(cè)試是對(duì)結(jié)果的測(cè)試。

            五、測(cè)試用例

            實(shí)際上測(cè)試情況有很多個(gè),不僅要測(cè)試所有有限的輸入,而且還要對(duì)那些不合法但可能的輸入進(jìn)行測(cè)試。這樣看來(lái),完全測(cè)試是不可能的,所以我們要進(jìn)行有針對(duì)性的測(cè)試,通過(guò)制定測(cè)試案例指導(dǎo)測(cè)試的實(shí)施,保證軟件測(cè)試有組織、按步驟,以及有計(jì)劃地進(jìn)行。測(cè)試行為必須能夠加以量化,才能真正保證軟件質(zhì)量,而測(cè)試用例就是將測(cè)試行為具體量化的方法之一。其中邏輯覆蓋技術(shù)是白盒測(cè)試的典型技術(shù),而等價(jià)劃分、邊界分析、因果圖等技術(shù)則是黑盒測(cè)試的較典型的技術(shù)。

            六、結(jié)束語(yǔ)

            黑盒測(cè)試和白盒測(cè)試是兩種不同的測(cè)試方法。在整個(gè)的測(cè)試過(guò)程中兩種方法都會(huì)用到,但以經(jīng)驗(yàn)來(lái)看,在一個(gè)項(xiàng)目中測(cè)試工程師還是以黑盒測(cè)試為主,白盒測(cè)試為輔。因?yàn)槟闶紫纫煤诤袦y(cè)試來(lái)驗(yàn)證結(jié)果是否正確,或者說(shuō)目標(biāo)是否正確,如果結(jié)果正確,然后再用白盒測(cè)試來(lái)驗(yàn)證,這個(gè)正確的結(jié)果是不是由于正確的過(guò)程產(chǎn)生的。如果結(jié)果不正確,那么用白盒測(cè)試來(lái)找到過(guò)程中錯(cuò)誤的地方。只有先做好黑盒測(cè)試,然后用白盒測(cè)試驗(yàn)證,這個(gè)測(cè)試才能說(shuō)做的完整了。













          posted on 2012-11-06 09:30 順其自然EVO 閱讀(650) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2012年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 德惠市| 吉林省| 铜陵市| 龙泉市| 贞丰县| 临邑县| 大余县| 郯城县| 富平县| 尼勒克县| 阿拉善左旗| 道孚县| 通渭县| 玉山县| 枣庄市| 双峰县| 日照市| 巧家县| 揭阳市| 都江堰市| 石河子市| 南木林县| 什邡市| 抚远县| 乌拉特中旗| 井陉县| 石屏县| 禹城市| 天气| 凌云县| 建平县| 荥经县| 文水县| 来凤县| 三明市| 年辖:市辖区| 徐汇区| 项城市| 东乡族自治县| 瑞丽市| 玛沁县|