資源描述:
《微軟的軟件測試方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、國內(nèi)近年來關(guān)于軟件測試的問題和討論越來越活躍。但從總體上說交流軟件測試技術(shù)的多,而探討軟件測試方法的少。這里的“技術(shù)”指的是具體的戰(zhàn)術(shù)問題,比如說如何使用某種工具來解決某一特定測試問題,或者某一類型軟件有哪些測試手段等等。而這里的“方法”指的是宏觀的戰(zhàn)略問題,或者叫方法論,這包括從軟件測試的概念或理念,到企業(yè)軟件質(zhì)量控制體系;從軟件測試的過程,到測試團(tuán)隊的設(shè)置及其職責(zé)的界定等等。作為測試人員,熱衷于“技術(shù)”討論和交流是一件可喜可賀的事。從中可以感覺到軟件測試在中國迅速發(fā)展的開端和潛力。但是作為企業(yè)的管理決策者,是否也應(yīng)該以同樣的熱情來思考“方法”問題呢?特別是當(dāng)一個軟件企業(yè)的軟件測試從無到有
2、,或者當(dāng)企業(yè)已有一定的軟件測試的投入,但發(fā)現(xiàn)其實效并不顯著,甚至由于測試的引入而帶來了新的管理上的混亂。這個時候方法論的思考,更有利于發(fā)現(xiàn)問題的根源。即便是一個基層的測試人員,當(dāng)積累了一定的技術(shù)經(jīng)驗后,也應(yīng)該不時從日常的具體工作中走出來,在一個較高層次上進(jìn)行回顧總結(jié)和借鑒,并試著提出一些優(yōu)化和改進(jìn)的措施,這無論對專業(yè)上還是對事業(yè)上的成長都是非常有意義的。微軟在軟件測試方面有很多值得一提的經(jīng)驗,在此我想以我個人的體會和思考,同大家一同進(jìn)行一些探討。這里有一點須要特別說明,盡管微軟的方法已被微軟的實踐多次證明是成功的,非常有效的,但這并不意味著這些方法在中國的軟件企業(yè)中有廣泛的可行性。一種方法是
3、否可行還受到很多其他因素的影響,比如企業(yè)類型(微軟是生產(chǎn)平臺軟件和通用軟件產(chǎn)品的企業(yè)),企業(yè)管理體制,企業(yè)文化等等。所以我的目的只是給大家一些思路和借鑒。?兩類經(jīng)典的軟件測試方法?在具體介紹微軟的軟件測試方法之前,我想首先從概念,或理念的層面上來理解究竟甚么是軟件測試,目的是從中導(dǎo)出微軟測試方法的理論根源。傳統(tǒng)上認(rèn)為軟件測試的方法從總體上分為兩類。第一類測試方法是試圖驗證軟件是“工作的”,所謂“工作的”就是指軟件的功能是按照預(yù)先的設(shè)計執(zhí)行的;而第二類測試方法則是設(shè)法證明軟件是“不工作的”。提出第一類方法的代表人物是軟件測試領(lǐng)域的先驅(qū)Dr.?BillHetzel(代表論著《TheComplet
4、eGuidetoSoftwareTesting》),他曾于1972年6月在美國的北卡羅來納大學(xué)組織了歷史上第一次正式的關(guān)于軟件測試的論壇。他首先在1973年給軟件測試一個這樣的定義:“就是建立一種信心,認(rèn)為程序能夠按預(yù)期的設(shè)想運行。Establishconfidencethataprogramdoeswhatitissupposedtodo.?”后來在1983年他又將定義修訂為:“評價一個程序和系統(tǒng)的特性或能力,并確定它是否達(dá)到預(yù)期的結(jié)果。軟件測試就是以此為目的的任何行為。?Anyactivitiesaimedatevaluatinganattributeorcapabilityofapro
5、gramorsystem.?”在他的定義中的“設(shè)想”和“預(yù)期的結(jié)果”其實就是我們現(xiàn)在所說的用戶需求或功能設(shè)計。他還把軟件的質(zhì)量定義為“符合要求”。第一類測試可以簡單抽象地描述為這樣的過程:在設(shè)計規(guī)定的環(huán)境下運行軟件的功能,將其結(jié)果與用戶需求或設(shè)計結(jié)果相比較,如果相符則測試通過,如果不相符則視為Bug。這一過程的終極目標(biāo)是將軟件的所有功能在所有設(shè)計規(guī)定的環(huán)境全部運行,并通過。在軟件行業(yè)中一般把第一類方法奉為主流和行業(yè)標(biāo)準(zhǔn)。1990年的IEEE/ANSI標(biāo)準(zhǔn)將軟件測試進(jìn)行了這樣的定義:“就是在既定的狀況條件下,運行一個系統(tǒng)或組建,觀察記錄結(jié)果,并對其某些方面進(jìn)行評價的過程。Theprocesso
6、foperatingasystemorcomponentunderspecifiedconditions,observingorrecordingtheresults,andmakinganevaluationofsomeaspectofthesystemorcomponent(IEEE/ANSI,1990[Std610.12-1990]”這里所謂“既定的狀況”也可理解為需求或設(shè)計。盡管如此,這一方法還是受到很多業(yè)界權(quán)威的質(zhì)疑和挑戰(zhàn)。代表人物是GlenfordJ.Myers(代表論著《TheArtofSoftwareTesting》)。他認(rèn)為測試不應(yīng)該著眼于驗證軟件是工作的,相反應(yīng)該首先認(rèn)定
7、軟件是有錯誤的,然后去發(fā)現(xiàn)盡可能多的錯誤。他還從人的心理學(xué)的角度論證,將?“驗證軟件是工作的”作為測試的目的,非常不利于測試人員發(fā)現(xiàn)軟件的錯誤。于是他于1979年提出了他對軟件測試的定義:“就是以發(fā)現(xiàn)錯誤為目的而運行程序的過程。Theprocessofexecutingaprogramorsystemwiththeintentoffindingerrors.”?這就是軟件測試的第二類方法,簡單地說就是驗證軟件