軟件測試目的是什麼?
軟件測試的目的是什麼?
軟件測試是程序的一種執行過程,目的是儘可能發現並改正被測試軟件中的錯誤,提高軟件的可靠性。它是軟件生命週期中一項非常重要且非常複雜的工作,對軟件可靠性保證具有極其重要的意義。在目前形式化方法和程序正確性證明技術還無望成為實用性方法的情況下,軟件測試在將來相當一段時間內仍然是軟件可靠性保證的有效方法。軟件工程的總目標是充分利用有限的人力和物力資源,高效率、高質量地完成軟件開發項目。不足的測試勢必使軟件帶著一些未揭露的隱藏錯誤投入運行,這將意味著更大的危險讓用戶承擔。過度測試則會浪費許多寶貴的資源。到測試後期,即使找到了錯誤,然而付出了過高的代價。E.W.Dijkstra的一句名言說明了這一道理:“程序測試只能表明錯誤的存在,而不能表明錯誤不存在。”可見,測試是為了使軟件中蘊涵的缺陷低於某一特定值,使產出、投入比達到最大。
軟件測試的目的是什麼
現在很多人都發現了軟件測試這個前景待遇都很不錯的行業,那麼究竟有人多人知道自己每天工作的目的是什麼呢?作為一個軟件測試員,自己又怎樣的價值,自己做的工作為公司甚至為社會會帶來怎樣的影響和效果呢?這樣的問題你有沒有認真的思考過呢?從主觀的角度上這個問題是很難回答的,所以我們現在列舉一下我們經常聽到的對這個問題的回答。
軟件測試的目的是儘可能發現並改正被測試軟件中的錯誤,提高軟件的可靠性。
,這個定義聽起來很正確,但用它來指導測試會帶來很多問題。比如有的組織用發現的bug數來衡量測試人員的業績,其實這就是這種測試目的論在後面作祟,其結果如何呢:其一,有一些不夠敬業的測試人員會找來一些無關痛癢的bug來充數,結果許多時間會被浪費在這些無關痛癢的bug上(其實應該修復,何時修復,嚴重程度是什麼,優先級是什麼,等等);其二,測試人員會花很大力氣設計一些複雜的測試用例去發現一些迄今尚未發現的缺陷,而不關心這些缺陷是否在實際用戶的使用過程當中是否會發生,從而浪費了大量的寶貴時間。究其根源,就是因為對測試目的的這種錯誤理解造成的,為什麼這麼說呢?因為軟件裡bug的數量是無從估計的,那麼如果測試的目的是為了找bug
,那麼測試工作將變成一項無法完成也無法衡量進度而且部分無效的工作(因為有些bug在實際的運行過程當中根本不會發生)。
測試的目的就是為了保證軟件質量
,這個定義也是看似正確,但實際上,混淆了測試和質量保證工作的邊界。軟件質量要素有很多,包括:
Understandability、Conciseness、Portability、Consistency、Maintainability、Testability、Usability、Structures、Efficiency、Security等等,所以,軟件質量保證和測試其實關注的方向是不同的。
使用人工或自動手段來運行或測定某個系統的過程,其目的在於檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。
所以,簡言之,測試的目的應該是驗證需求,
bug(預期結果與實際結果之間的差別)是這個過程中的產品而非目標。測試人員應該象工兵一樣,在大部隊(客戶)預期前進的方向上探雷、掃雷(bug)
,而不需要去關心那些根本沒有人會去碰的地雷。衡量一個測試人員應該去衡量他/她測試了多少需求(測試工作量)
軟件測試是什麼以及目的
軟件測試是軟件開發過程的重要組成部分,是用來確認一個程序的品質或性能是否符合開發之前所提出的一些要求。軟件測試就是在軟件投入運行前,對軟件需求分析、設計規格說明和編碼的最終複審,是軟件質量保證的關鍵步驟。軟件測試是為了發現錯誤而執行程序的過程。軟件測試在軟件生存期中橫跨兩個階段:通常在編寫出每一個模塊之後就對它做必要的測試(稱為單元測試)。編碼和單元測試屬於軟件生存期中的同一個階段。在結束這個階段後對軟件系統還要進行各種綜合測試,這是軟件生存期的另一個獨立階段,即測試階段。軟件測試的目的軟件測試的目的,第一是確認軟件的質量,其一方面是確認軟件做了你所期望的事情(Do the right thing),另一方面是確認軟件以正確的方式來做了這個事件(Do it right)。第二是提供信息,比如提供給開發人員或程序經理的反饋信息,為風險評估所準備的信息。第三軟件測試不僅是在測試軟件產品的本身,而且還包括軟件開發的過程。如果一個軟件產品開發完成之後發現了很多問題,這說明此軟件開發過程很可能是有缺陷的。因此軟件測試的第三個目的是保證整個軟件開發過程是高質量的。軟件質量是由幾個方面來衡量的:一、在正確的時間用正確的的方法把一個工作做正確(Doing the right things right at the right time.)。二、符合一些應用標準的要求,比如不同國家的用戶不同的操作習慣和要求,項目工程中的可維護性、可測試性等要求。三、質量本身就是軟件達到了最開始所設定的要求,而代碼的優美或精巧的技巧並不代表軟件的高質量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。四、質量也代表著它符合客戶的需要(Quality also means “meet customer needs”.)。作為軟件測試這個行業,最重要的一件事就是從客戶的需求出發,從客戶的角度去看產品,客戶會怎麼去使用這個產品,使用過程中會遇到什麼樣的問題。只有這些問題都解決了,軟件產品的質量才可以說是上去了。
軟件測試的目的是什麼?
軟件測試要求認定剛開發的軟件是錯誤的,它的目的是找出錯誤所在,而不是“說明程序能正確地執行它應有的功能”,也不是“表明程序沒有錯誤”。
軟件測試的目的
1. 測試是為了發現程序中的錯誤而執行程序的過程;
2. 好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案;
3. 成功的測試是發現了至今為止尚未發現的錯誤的測試。
從上述規則可以看出,測試的正確定義是“為了發現程序中的錯誤而執行程序的過程”。這和某些人通常想象的“測試是為了表明程序是正確的”,“成功的測試是沒有發現錯誤的測試”等等是完全相反的。正確認識測試的目標是十分重要的,測試目標決定了測試方案的設計。如果為了表明程序是正確的而進行測試,就會設計一些不易暴露錯誤的測試方案;相反,如果測試是為了發現程序中的錯誤,就會力求設計出最能暴露錯誤的測試方案。 由於測試的目標是暴露程序中的錯誤,從心理學角度看,由程序的編寫者自己進行測試是不恰當的。因此,在綜合測試階段通常由其他人員組成測試小組來完成測試工作。此外,應該認識到測試決不能證明程序是正確的。即使經過了最嚴格的測試之後,仍然可能還有沒被發現的錯誤潛藏在程序中。測試只能查找出程序中的錯誤,不能證明程序中沒有錯誤。
測試計劃的目的是什麼?軟件測試應該劃分幾個階段
測試的目的是想以最少的人力、物力和時間找出軟件中潛在的各種錯誤和缺陷,通過修正種錯誤和缺陷提高軟件質量,迴避軟件發佈後由於潛在的軟件缺陷和錯誤造成的隱患帶來的商業風險。
大體上來說可分為單元測試、集成測試、系統測試、驗收測試。每個階段又分為以下五個步驟:測試計劃,測試設計,用例設計,執行結果,測試報告。
初始測試集中在每個模塊上,保證源代碼的正確性,該階段成為單元測試,主要用白盒測試方法。
接下來是模塊集成和集成以便組成完整的軟件包。集成測試集中在證實和程序構成問題上。主要採用黑盒測試方法,輔之以白盒測試方法。
軟件集成後,需要完成確認和系統測試。確認測試提供軟件滿足所有功能、性能需求的最後保證。確認測試僅僅應用黑盒測試方法。
單元測試
單元測試是對軟件中的基本組成單位進行的測試,如一個模塊、一個過程等等。它是軟件動態測試的最基本的部分,也是最重要的部分之一,其目的是檢驗軟件基本組成單位的正確性。
集成測試
集成測試是在軟件系統集成過程中所進行的測試,其主要目的是檢查軟件單位之間的接口是否正確。
系統測試
系統測試是對已經集成好的軟件系統進行徹底的測試,以驗證軟件系統的正確性和性能等滿足其規約所指定的要求,檢查軟件的行為和輸出是否正確並非一項簡單的任務,它被稱為測試的“先知者問題”。
驗收測試
驗收測試旨在向軟件的購買者展示該軟件系統滿足其用戶的需求。它的測試數據通常是系統測試的測試數據的子集。
迴歸測試
迴歸測試是在軟件維護階段,對軟件進行修改之後進行的測試。其目的是檢驗對軟件進行的修改是否正確。