軟件測試基礎 軟件測試工具
目前,軟件的正確性證明尚未得到根本的解決,軟件測試仍是發現軟件錯誤和缺陷的主要手段。
大量統計資料表明,目前軟件測試所花費用已超過軟件開發費用的30%以上。
1.軟件測試的目的
軟件測試的目的就是在軟件投入生產運行之前,盡可能多地發現軟件產品(主要是指程序)中的錯誤和缺陷。
為了發現程序中的錯誤,應竭力設計能暴露錯誤的測試用例。測試用例是由測試數據和預期結果構成的。一個好的測試用例是極有可能發現至今為止尚未發現的錯誤的測試用例。一次成功的測試是發現了至今為止尚未發現的錯誤的測試。
高效的測試是指用少量的測試用例,發現被測軟件盡可能多的錯誤。
軟件測試所追求的目標就是以盡可能少的時間和人力發現軟件產品中盡可能多的錯誤。
2.測試分類
軟件測試通??煞譃閱卧獪y試、集成測試和系統測試。
1)單元測試
單元測試(Unit Testing),也稱模塊測試,通??煞旁诰幊屉A段,由程序員對自己編寫的模塊自行測試,檢查模塊是否實現了詳細設計說明書中規定的功能和算法。單元測試主要發現編程和詳細設計中產生的錯誤,單元測試計劃應該在詳細設計階段制定。
單元測試期間著重從以下幾個方面對模塊進行測試:模塊接口、局部數據結構、重要的執行通路、出錯處理通路和邊界條件等。
測試一個模塊時需要為該模塊編寫一個驅動模塊和若干個樁(stub)模塊。驅動模塊用來調用被測模塊,它接收測試者提供的測試數據,并把這些數據傳送給被測模塊,然后從被測模塊接收測試結果,并以某種可以看見的方式(例如顯示或打印)將測試結果返回給測試者。樁模塊用來模擬被測模塊所調用的子模塊,它接受被測模塊的調用,檢驗調用參數,并以盡可能簡單的操作模擬被調用的子程序模塊功能,把結果送回被測模塊。頂層模塊測試時不需要驅動模塊,底層模塊測試時不需要樁模塊。
模塊的內聚程度高可以簡化單元測試過程。如果每個模塊只完成一種功能,則需要的測試方案數目將明顯減少,模塊中的錯誤也更容易預測和發現。
2)集成測試
集成測試(Integration Testing),也稱組裝測試,它是對由各模塊組裝而成的程序進行測試,主要目標是發現模塊間的接口和通信問題。例如,數據穿過接口可能丟失,一個模塊對另一個模塊可能由于疏忽而造成有害影響,把子功能組合起來可能不產生預期的主功能,個別看來是可以接受的誤差可能積累到不能接受的程度,全程數據結構可能有問題等。集成測試主要發現設計階段產生的錯誤,集成測試計劃應該在概要設計階段制定。
集成測試的方式可分為非漸增式和漸增式。
非漸增式集測試成是先測試所有的模塊,然后一下子把所有這些模塊集成到一起,并把龐大的程序作為一個整體來測試。這種測試方法的出發點是可以"一步到位",但測試者面對眾多的錯誤現象,往往難以分清哪些是"真正的"錯誤,哪些是由其他錯誤引起的"假性錯誤",診斷定位和改正錯誤也十分困難。非漸增式集成測試只適合一些非常小的軟件。
漸增式集成測試是將單元測試和集成測試合并到一起,它根據模塊結構圖,按某種次序選一個尚未測試的模塊,把它同已經測試好的模塊組合在一起進行測試,每次增加一個模塊,直到所有模塊被集成在程序中。這種測試方法比較容易定位和改正錯誤,目前在進行集成測試時已普遍采用漸增式集成測試。
漸增式集成測試又可分為自頂向下集成和自底向上集成。自頂向下集成先測試上層模塊,再測試下層模塊。由于測試下層模塊時它的上層模塊已測試過,所以不必另外編寫驅動模塊。自底向上集成先測試下層模塊,再測試上層模塊。同樣,由于測試上層模塊時它的下層模塊已測試過,所以不必另外編寫樁模塊。這兩種集成方法各有利弊,一種方法的優點恰好對應于另一種方法的缺點,實際測試時可根據軟件特點及進度安排靈活選用最適當的方法,也可將兩種方法混合使用。
3)系統測試
原文轉自:http://www.anti-gravitydesign.com