软件的测试与方法
軟件的測試與方法
一、?軟件測試的概念
? ? ? ? ? 所謂軟件測試,是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。或者說,軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結構而精心設計一批測試用例(即輸入數(shù)據(jù)及其預期結果),并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤的過程。
? ? ? ? ? 軟件測試在軟件生存周期中橫跨兩階段:通常在編寫出每個模塊之后對它做必要的測試(稱為單元測試)。模塊的編寫者與測試者是同一個人。編碼與單元測試屬于軟件生存周期中的同一個階段。在這個階段結束之后,軟件系統(tǒng)還要進行各種綜合測試,這是軟件生存周期的另一個獨立的階段,即測試階段,通常由專門的測試人員承擔這項工作。
二、?軟件測試的目的
? ? ? ? ? 測試階段的根本目標是盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。但是,如果僅就測試本身而言,軟件測試的目標是以最少的時間和人力發(fā)現(xiàn)軟件中潛在的各種錯誤和缺陷。
? ? ? ? ? 此外,應該認識到測試決不能證明程序是正確的。即使經(jīng)過了最嚴格的測試之后,仍然可能還有沒被發(fā)現(xiàn)的錯誤潛藏在程序中。這就是軟件測試的一個致命缺陷,即測試的不完全、不徹底性。測試只能找出程序中的錯誤,但在未發(fā)現(xiàn)錯誤時,并不能證明程序中沒有錯誤。
三、?測試方法概述
? ? ? ? ? 軟件測試的種類大致可以分為人工測試和基于計算機的測試。基于計算機的測試有兩種方法。
四、白盒測試
? ? ? ? ? 白盒測試方法是把程序看成一個打開的盒子, 測試人員對程序所有邏輯路徑進行測試,在不同檢查點輸出結果,與預期的結果比較,確定程序是否有錯。
? ? ? ? ? 使用白盒測試法時,為了做到窮盡測試,程序中每條可能的通路至少都應該執(zhí)行一次。即使測試很小的程序,通常也不能做到這一點。例如,一段程序?qū)η短椎腎F 語句循環(huán)執(zhí)行 20 次,如圖 5.1 所示,在這段程序中共有 5 20 條可能的執(zhí)行通路,顯然,即使每條通路只執(zhí)行一次也是不可能的。
? ? ? ? ? 白盒測試是一種程序級的微觀上的測試,不適合于大單元、大系統(tǒng)的測試,只適合于很小單元的測試,以及從事軟件底層工作、生產(chǎn)構件的測試人員進行的測試。
五、黑盒測試
? ? ? ? ? 黑盒測試方法是把程序看成一個黑盒子,完全不考慮其內(nèi)部結構和處理過程,只檢查程序的功能是否符合它的需求規(guī)格說明。
? ? ? ? ? 可見,黑盒測試是在軟件的接口處進行的,一方面看其是否能對合法的數(shù)據(jù)得出正確的結果,另一方面看它是否能對非法的數(shù)據(jù)進行正確的處理。顯然要列舉出所有合法的或非法的數(shù)據(jù)是不可能的。
? ? ? ? ? 例如,一個程序需要3 個整型輸入數(shù)據(jù),如果計算機的字長為16 位,則每個整數(shù)的可能取值有2 16 個,3 個輸入數(shù)據(jù)的各種可能值的排列組合共有:216 ×2 16 ×2 16 =2 48也就是說需要把這個程序執(zhí)行 2 48 ,假定執(zhí)行一次程序需要 1ms,則大約需要 1 萬年。
? ? ? ? ? 若將無效的和錯誤的輸入數(shù)據(jù)也算在內(nèi),則程序執(zhí)行時間還要長,而且輸出數(shù)據(jù)更是多得讓人無法分析。因此,墨盒測試法不能測試所有可能情況。
黑盒測試是一種宏觀功能上的測試,該方法適合測試部門的測試人員或用戶。隨著軟件生產(chǎn)的組裝技術的發(fā)展,黑盒測試方法會越來越普及。
六、小結
? ? ? ? ? 無論是白盒測試還是黑盒測試,都不可能進行完全測試,軟件測試不能發(fā)現(xiàn)程序中的所有錯誤。因此,通過測試并不能證明程序是正確的。
? ? ? ? ? 在實際應用中,常常采用白盒測試和黑盒測試相結合的方法,對軟件進行有限的測試。測試用例的設計是測試工作成敗的關鍵,好的測試用例發(fā)現(xiàn)錯誤的機會更多。因此,要認真設計測試用例,力求發(fā)現(xiàn)源程序中盡可能多的錯誤。
總結
- 上一篇: 模块独立性
- 下一篇: Rational rose的安装