<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            究竟什么是軟件測試

            發(fā)布: 2010-11-30 09:43 | 作者: 不詳 | 來(lái)源: 領(lǐng)測測試網(wǎng)采編 | 查看: 1145次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

                    究竟什么是軟件測試 軟件測試

              在G.J.Myers的經(jīng)典著(zhù)作《軟件測試之藝術(shù)》(The Art of Software Testing)中,給出了測試的定義:“程序測試是為了發(fā)現錯誤而執行程序的過(guò)程”。這個(gè)定義,被業(yè)界所認可,經(jīng)常被引用。除此之外,G.J.Myers還給出了與測試相關(guān)的三個(gè)重要觀(guān)點(diǎn),那就是:

              測試是為了證明程序有錯,而不是證明程序無(wú)錯誤;

              一個(gè)好的測試用例是在于它能發(fā)現至今未發(fā)現的錯誤;

              一個(gè)成功的測試是發(fā)現了至今未發(fā)現的錯誤的測試。

              實(shí)際上,這里暗示了“軟件測試”在不同側面上的含義,也就決定了對軟件測試不同的定義和不同的理解。根據作者多年的經(jīng)驗和理解,軟件測試的不同視野,概括為如下5類(lèi):

              軟件測試的狹義論和廣義論——靜態(tài)和動(dòng)態(tài)的測試

              軟件測試的辨證論——正向思維和反向思維

              軟件測試的風(fēng)險論——測試是評估

              軟件測試的經(jīng)濟學(xué)觀(guān)點(diǎn)——為盈利而測試

              軟件測試的標準論——驗證和確認

              1. 軟件測試的狹義論和廣義論

              G.J.Myers所給出了測試定義——“程序測試是為了發(fā)現錯誤而執行程序的過(guò)程”,實(shí)際是一個(gè)狹義的概念,因為他認為測試是執行程序的過(guò)程,也就是傳統意義上的測試——在代碼完成后,通過(guò)運行程序來(lái)發(fā)現程序代碼或軟件系統中錯誤。但是,這種意義上的測試是不能在代碼完成之前發(fā)現軟件系統需求、發(fā)現設計上的問(wèn)題,把需求、發(fā)現設計上的問(wèn)題遺留到后期,這樣就會(huì )可能造成設計、編程的部分返工。增加軟件開(kāi)發(fā)的成本、延長(cháng)開(kāi)發(fā)的周期等。需求階段和設計階段的缺陷產(chǎn)生的放大效應會(huì )加大。這非常不利于保證軟件質(zhì)量。這種狹義論是受軟件開(kāi)發(fā)瀑布模型影響。

              正是為了更早地發(fā)現問(wèn)題,所以將測試延伸到需求評審、設計審查活動(dòng)中去,也就是將“軟件質(zhì)量保證”的部分活動(dòng)歸為測試活動(dòng)。實(shí)際上,在軟件開(kāi)發(fā)實(shí)際操作中,常常將軟件測試和質(zhì)量保證——這兩種努力(efforts)合并起來(lái)。

              延伸后的軟件測試,被認為是一種軟件測試的廣義概念。這就引出軟件測試的兩個(gè)概念“靜態(tài)測試”和“動(dòng)態(tài)測試”,如 測試方法的辯證統一 (1)所述,這樣就由靜態(tài)測試和動(dòng)態(tài)測試構成一個(gè)全過(guò)程的、完整的軟件測試,而且靜態(tài)測試顯得更為重要。

              2.軟件測試的辨證論

              G.J.Myers的第2個(gè)觀(guān)點(diǎn)“測試是為了證明程序有錯,而不是證明程序無(wú)錯誤”,引出了軟件測試的另外一個(gè)爭論,軟件測試究竟是證明所有軟件的功能特性是正確的呢?還是其反向思維——對軟件系統進(jìn)行各種試探和攻擊,找出軟件系統中不正�;虿还ぷ鞯牡胤侥�?從我個(gè)人理解,這兩個(gè)方面都有一定道理,前者(證明所有軟件的功能特性是正確的)是從質(zhì)量保證的角度來(lái)思考軟件測試,后者(證明程序有錯)從軟件測試的直接目標和測試效率來(lái)思考,兩者應該相輔相成。在后者的思想背景下,我們認為,測試不是為了證明所有的功能可以正常工作,恰恰相反,測試就是為了找出那些不能正常工作、不一致性的地方。也就是說(shuō),測試的一般工作就是發(fā)現缺陷 (detect bug),即在軟件開(kāi)發(fā)過(guò)程中,分析、設計與編碼等工作都是建設性的,而測試是帶有“破壞性”的工作。

              對于不同的應用領(lǐng)域,兩者的比重是不一樣的,如國防、航天、銀行等軟件系統,承受不了任何系統失效,因為一次系統的失效完全有可能導致災難性的損失,所以強調前者以保證非常高的軟件質(zhì)量。而一般的軟件服務(wù)應用則不同,強調后者,質(zhì)量目標設置在“用戶(hù)可接受水平”,不要國度追求質(zhì)量,從而可以降低軟件開(kāi)發(fā)成本。作者建議,在我們實(shí)際操作中,可以分階段實(shí)施不同的測試思想,在早期階段集中在“證明程序有錯”—— 發(fā)現Bug,后期集中在驗證所有特性是否正常工作——降低風(fēng)險,見(jiàn)作者的另外一篇討論:測試執行中非常有效的策略

              下面就是這兩種觀(guān)點(diǎn)的基本描述:

              驗證軟件是驗證軟件是“工作的”,以正向思維,針對軟件系統的所有功能點(diǎn),逐個(gè)驗證其正確性。其代表人物是軟件測試領(lǐng)域的先驅Dr. Bill Hetzel (代表論著(zhù)《The Complete Guide to Software Testing》)。

              證明軟件是“不工作的”,以反向思維方式,不斷思考開(kāi)發(fā)人員理解的誤區、不良的習慣、程序代碼的邊界、無(wú)效數據的輸入以及系統的弱點(diǎn),試圖破壞系統、摧毀系統,目標就是發(fā)現系統中各種各樣的問(wèn)題。其代表人物就是上面多次提到的G.J.Myers。他強調,一個(gè)成功的測試必須是發(fā)現Bug Bug的測試,不然就沒(méi)有價(jià)值。

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: 軟件測試

            21/212>

            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>