軟體測試
出自 MBA智库百科(https://wiki.mbalib.com/)
目錄 |
軟體測試指的是軟體產品在投放市場前,對於軟體產品所進行的需求的分析,設計的規格和編碼等內容的覆審,是確保軟體產品質量的關鍵性步驟。
軟體測試的特點[1]
在實際的操作過程當中軟體測試難度比較大,而且環節也比較複雜。同時它還具有比較可觀的經濟性。隨著軟體的大規模化會有不斷增長的複雜的測試要求等待測試工程師去完成。
它是一個微妙的、高技術含量的測試工作。測試過程中出現差錯就會考慮不周到產生不必要的誤差。這種誤差可能造成軟體徹底的崩潰。常見的問題根源可以有以下兩種分析。
1.完全測試是不現實的
測試軟體的過程中。不可能完完全全的檢測到所有的漏洞和不足,在實際工作中,往往不能做到全面而且徹底的檢測。我們採取相應的手段和方法來完成儘可能多的測試數據和軟體結構。
在人們考慮的所有情況下,為了保證其穩定性,就會讓所有執行的代碼全部進行測試,但是這種方式也存在一定的問題,比如大量的輸入,大量的輸出以及執行的路程比較複雜,都會引起最終的測試效果。
2.軟體測試的風險性
軟體測試的具體目的合理的軟體測試可以節省大量的時間人員和資源,但是軟體測試過程中存在著很大的困難和風險。盡人皆知,軟體測試有很多種風險。可以分為環境不達標、人員技術不夠和管理時間混亂。風險表現為測試環境不到位和測試時間和人員冗餘太多。在控制軟體測試的風險時候,開發人員採取以下方法:與用戶相互協商,降低對優先順序不高的特性和功能,將以後的冗餘的功能去除,增加測試人員和測試工具;控制軟體發佈的時間,時間允許的情況下,推遲軟體發佈的時間,刪除影響風險發生的不必要的功能和環境;增加測試資源,通過事先準備好的所有條目,設置好測試環境,按照列出的條目逐個逐個的進行檢查和測試。要想真正的迴避風險是不能的,必須制定一個合理的測試項目的管理方案,針對常見的風險進行分類彙總,建立防患於未然和預防為主的管理意識。
軟體測試的具體目的決定著如何來組織進行測試工作。通常情況下軟體測試工作的目的主要有:
一是為發現程式的錯誤從而進行測試,
二是測試用以證明軟體的程式存在錯誤,並非證明該程式不存在錯誤;
三是好測試其功能在於可以發現以前沒有發現的一些錯誤等等。因此,必須關註測試的具體目的,進行測試用例的選擇時要遵循經濟性原則。
軟體測試通常可以分為黑盒式測試與白盒式測試兩種類型。黑盒式測試就是將軟體系統當作黑盒子而不去考慮相關程式內在的邏輯,按照需求規格的說明書要求對程式功能進行檢查,看能否達到功能說明的要求。白盒式測試就是允許實施測試的人員根據程式內部的邏輯結構和相關信息進行測試用例的設計與選擇,測試程式邏輯的路徑。按照前後的過程分類,測試步驟可分成:單元測試,組裝(集成)測試,確認測試及系統測試等。
軟體測試的要求[2]
1.客觀性
對軟體測試和軟體中的錯誤必須持客觀的態度,避免先入為主,儘量讓第三方或者獨立的部門進行測試,這樣既能以揭露軟體中錯誤的態度工作,也能不受發現的錯誤的影響。經濟上的獨立性使測試有更充分的條件按測試要求去完成。
2.專業性
軟體測試是技術含量很高的工作,既要有軟體相關知識,還要具備相關管理能力,這就需要有專業隊伍,並經過大量的測試實踐。專業化分工是提高測試水平、保證測試質量、充分發揮測試效應的必然途徑。
3.權威性
由於專業優勢,獨立測試工作形成的測試結果更具信服力,而測試結果常常與軟體的質量評價聯繫在一起,專業化的獨立測試機構的評價更客觀、公正和具有權威性。
4.資源保證
獨立測試機構的主要任務是進行獨立測試工作,這使得測試工作在經費、人力和時間等方面更有保證,不會因為開發的壓力而減少對測試的投入,進而降低測試的有效性。可以避免開發單位側重軟體開發而對測試工作產生不利的影響。
軟體測試的內容[2]
軟體測試主要工作內容是驗證和確認。驗證是保證軟體正確地實現了一些特定功能的一系列活動,即保證軟體做了你所期望的事情。驗證確定軟體生存周期中的一個給定階段的產品是否達到前階段確立的需求的過程;驗證程式正確性的形式證明,即採用形式理論證明程式符號設計規約規定的過程;評市、審查、測試、檢查、審計等各類活動,或對某些服務或文件等是否和規定的需求相一致進行判斷和提出報告。
確認是一系列的活動和過程,目的是想證實在一個給定的外部環境中軟體的邏輯正確性。即保證軟體以正確的方式來做了這個事件:靜態確認,不在電腦上實際執行程式,通過人工或程式分析來證明軟體的正確性;動態確認,通過執行程式做分析,測試程式的動態行為,以證實軟體是否存在問題。軟體測試的對象不僅僅是程式測試,軟體測試應該包括整個軟體開發期間各個階段所產生的文檔,如需求規格說明、概要設計文檔、詳細設計文檔,當然軟體測試的主要對象還是源程式。
軟體測試,按照測試過程可分為單元測試、集成測試、確認測試及系統測試等;按照測試內容分可分為功能測試、性能測試、界面測試、鏈接測試等。
軟體測試的步驟[2]
(1)測試計劃。根據用戶需求報告中關於功能要求和性能指標的規格說明書,定義相應的測試需求報告,即制訂黑盒測試的最高標準;同時,適當選擇測試內容,合理安排測試人員、測試時間及測試資源等。
(2)測試設計。將測試計劃階段制訂的測試需求分解、細化為若幹個可執行的測試過程,併為每個測試過程選擇適當的測試用例。
(3)測試開發。建立可重覆使用的自動測試過程。
(4)測試執行。執行測試開發階段建立的自動測試過程,並對所發現的缺陷進行跟蹤管理。測試人員應本著科學負責的態度,一步一個腳印地進行測試。
(5)測試評估。結合量化的測試覆蓋域及缺陷跟蹤報告,對於應用軟體的質量和開發團隊的工作進度及工作效率進行綜合評價。
軟體測試的過程[1]
軟體的測試過程根據階段的不同可以分為以下幾種測試階段:
(1)單元測試:這個測試過程是測試的最初階段,測試的主要對象就是單元。通過單元的測試可以將每個模塊的的性能摸查清楚。在實際的操作過程中為了提高測試的有效性,一般採用多種單元測試的方式,比如最常使用的就是選取白盒的測試方法。
(2)集成測試:也稱組裝測試。這一步測試是在單元測試過程之後來進行,屬於測試的關鍵環節。各個測試結束的模塊進行綜合分析,組裝成比較大的模塊進行系統集成分析測試。各個系統之間的介面和連接代碼可以被檢測和分析,最常見的方式就是黑盒測試。
(3)確認測試:這個測試階段是軟體測試的比較核心的一個模塊,這一測試過程是發生在集成測試之後的測試過程,這一測試過程被用來模擬軟體的功能和參數以及某些特點能不能實現使用者的特殊要求通過確認測試可以確定用戶的工作開展與否。
(4)系統測試:也稱為產品測試。確認測試在滿足用戶的要求之後,系統測試要進行檢測實際環境和軟體能夠很好的結合協調工作。這種測試過程,有必要進行相應的硬體平臺搭建和模擬模擬實驗。與此同時,相應的軟體系統和客戶應該參與進來進行測試和評估。綜合可以說,如果軟體測試通過以上幾種測試最終達到了系統測試,那麼這個產品基本就符合要求了。
(5)驗收測試:測試過程的最後一個階段。這一階段主要檢測軟體安裝之後,用戶能否使用該軟體以及軟體的所有功能。軟體和硬體能夠使用戶放心使用和持續運行是檢驗驗收效果的關鍵。軟體設計者也應該參與這一步的測試和分析。