
- 軟體工程教程
- 軟體工程主頁
- 軟體工程概述
- 軟體開發生命週期
- 軟體專案管理
- 軟體需求
- 軟體設計基礎
- 分析與設計工具
- 軟體設計策略
- 軟體使用者介面設計
- 軟體設計複雜性
- 軟體實現
- 軟體測試概述
- 軟體維護
- CASE工具概述
- 軟體考試題及答案
- 軟體工程考試題及答案
軟體測試概述
軟體測試是對軟體進行評估,以驗證其是否滿足從使用者和系統規格中收集的需求。測試可以在軟體開發生命週期的階段級別進行,也可以在程式程式碼的模組級別進行。軟體測試包括驗證和確認。
軟體確認
確認是檢查軟體是否滿足使用者需求的過程。它在SDLC結束時進行。如果軟體符合其開發目的的要求,則表示它已透過確認。
- 確認確保正在開發的產品符合使用者需求。
- 確認回答了這樣一個問題:“我們正在開發的產品是否滿足使用者對該軟體的所有需求?”
- 確認強呼叫戶需求。
軟體驗證
驗證是確認軟體是否滿足業務需求,以及是否按照正確的規範和方法開發的過程。
- 驗證確保正在開發的產品符合設計規範。
- 驗證回答了這樣一個問題:“我們是否嚴格按照所有設計規範開發此產品?”
- 驗證側重於設計和系統規範。
測試目標是:
錯誤 - 這些是開發人員實際犯下的編碼錯誤。此外,軟體輸出與預期輸出之間的差異也被視為錯誤。
缺陷 - 當存在錯誤時,就會發生缺陷。缺陷,也稱為bug,是導致系統故障的錯誤的結果。
故障 - 故障是指系統無法執行所需任務的能力。當系統中存在缺陷時,就會發生故障。
手動測試與自動化測試
測試既可以手動進行,也可以使用自動化測試工具進行。
手動測試 - 此測試是在不借助自動化測試工具的情況下進行的。軟體測試人員為程式碼的不同部分和級別準備測試用例,執行測試並將結果報告給經理。
手動測試既費時又費力。測試人員需要確認是否使用了正確的測試用例。大部分測試都涉及手動測試。
自動化測試 - 此測試是藉助自動化測試工具進行的測試過程。使用自動化測試工具可以克服手動測試的侷限性。
一項測試需要檢查是否可以在Internet Explorer中開啟網頁。這可以透過手動測試輕鬆完成。但是,要檢查Web伺服器能否承受100萬用戶的負載,手動測試是無法實現的。
有一些軟體和硬體工具可以幫助測試人員進行負載測試、壓力測試和迴歸測試。
測試方法
測試可以基於兩種方法進行:
- 功能測試
- 實現測試
在不考慮實際實現的情況下測試功能時,稱為黑盒測試。另一種方法稱為白盒測試,它不僅測試功能,還分析其實現方式。
窮舉測試是理想的完美測試方法。測試輸入和輸出值範圍內的每一個可能的值。如果值的範圍很大,在現實場景中不可能測試每一個值。
黑盒測試
它用於測試程式的功能。它也稱為“行為”測試。在這種情況下,測試人員有一組輸入值和相應的預期結果。如果提供輸入後,輸出與預期結果匹配,則程式測試“透過”,否則為“失敗”。

在這種測試方法中,測試人員不知道程式碼的設計和結構,測試工程師和終端使用者對軟體進行此測試。
黑盒測試技術
等價類劃分 - 輸入被劃分為相似的類。如果一個類的元素通過了測試,則假設該類的所有元素都通過了測試。
邊界值分析 - 輸入被劃分為上限值和下限值。如果這些值通過了測試,則假設介於兩者之間的所有值也可能透過測試。
因果圖法 - 在前兩種方法中,一次只測試一個輸入值。因果圖是一種測試技術,它以系統的方式測試輸入值的組合。
成對測試 - 軟體的行為取決於多個引數。在成對測試中,對多個引數的不同值進行成對測試。
基於狀態的測試 - 系統在提供輸入時會改變狀態。這些系統根據其狀態和輸入進行測試。
白盒測試
它用於測試程式及其實現,以提高程式碼效率或結構。它也稱為“結構”測試。

在這種測試方法中,測試人員知道程式碼的設計和結構。程式碼的程式設計師對程式碼進行此測試。
以下是一些白盒測試技術
控制流測試 - 控制流測試的目的是設定覆蓋所有語句和分支條件的測試用例。分支條件在為真和為假的情況下都進行測試,以便可以覆蓋所有語句。
資料流測試 - 此測試技術強調覆蓋程式中包含的所有資料變數。它測試變數的宣告和定義位置以及它們的使用或更改位置。
測試級別
測試本身可以在SDLC的不同級別定義。測試過程與軟體開發並行執行。在進入下一階段之前,會對一個階段進行測試、驗證和確認。
單獨進行測試是為了確保軟體中沒有隱藏的錯誤或問題。軟體在各個級別進行測試:
單元測試
在編碼過程中,程式設計師會對程式的單元進行一些測試,以瞭解其是否沒有錯誤。測試在白盒測試方法下進行。單元測試幫助開發人員確定程式的各個單元是否按要求工作並且沒有錯誤。
整合測試
即使軟體單元單獨工作良好,也需要找出整合在一起的單元是否也能在沒有錯誤的情況下工作。例如,引數傳遞和資料更新等。
系統測試
軟體被編譯成產品,然後作為一個整體進行測試。這可以使用以下一項或多項測試來完成
功能測試 - 根據需求測試軟體的所有功能。
效能測試 - 此測試證明軟體的效率。它測試軟體執行所需任務的效率和平均時間。效能測試透過負載測試和壓力測試來完成,在這些測試中,軟體在各種環境條件下承受高使用者和資料負載。
安全性和可移植性 - 當軟體旨在在各種平臺上執行並由多人訪問時,會進行這些測試。
驗收測試
當軟體準備交付給客戶時,它必須經過最後的測試階段,在該階段測試其使用者互動和響應。這很重要,因為即使軟體符合所有使用者需求,如果使用者不喜歡其外觀或工作方式,也可能會被拒絕。
α測試 - 開發團隊本身透過在工作環境中使用系統來執行α測試。他們試圖找出使用者對軟體中某些操作的反應以及系統應該如何響應輸入。
β測試 - 在軟體內部測試之後,將其交給使用者,僅出於測試目的在其生產環境中使用。這還不是交付的產品。開發人員期望在此階段使用者會發現一些細微的問題,這些問題之前被忽略了。
迴歸測試
每當軟體產品使用新程式碼、功能或功能進行更新時,都會對其進行徹底測試,以檢測新增的程式碼是否有任何負面影響。這稱為迴歸測試。
測試文件
測試文件在不同的階段準備:
測試前
測試始於測試用例的生成。以下文件需要作為參考:
SRS文件 - 功能需求文件
測試策略文件 - 此文件描述在釋出產品之前應進行多長時間的測試。
測試策略文件 - 此文件提到測試團隊的詳細方面,責任矩陣以及測試經理和測試工程師的權利/責任。
可追溯性矩陣文件 - 這是與需求收集過程相關的SDLC文件。隨著新需求的出現,它們將新增到此矩陣中。這些矩陣幫助測試人員瞭解需求的來源。它們可以向前和向後追溯。
測試中
在測試開始和進行過程中,可能需要以下文件
測試用例文件 - 本文件包含需要執行的測試列表。它包括單元測試計劃、整合測試計劃、系統測試計劃和驗收測試計劃。
測試描述 - 本文件詳細描述所有測試用例及執行步驟。
測試用例報告 - 本文件包含測試結果的測試用例報告。
測試日誌 - 本文件包含每個測試用例報告的測試日誌。
測試後
測試後可能生成以下文件:
測試總結 - 此測試總結是對所有測試報告和日誌的綜合分析。它總結並得出軟體是否準備好釋出的結論。如果軟體準備好釋出,則在版本控制系統下發布。
測試與質量控制、質量保證和審計
我們需要理解軟體測試與軟體質量保證、軟體質量控制和軟體審計不同。
軟體質量保證 - 這是軟體開發過程監控手段,透過它確保所有措施都符合組織的標準。此監控是為了確保遵循了正確的軟體開發方法。
軟體質量控制 - 這是一個保持軟體產品質量的系統。它可能包括軟體產品的功能和非功能方面,從而提升組織的良好聲譽。此係統確保客戶獲得滿足其需求的優質產品,並且產品被認證為“適合使用”。
軟體審計 - 這是對組織用於開發軟體的程式的審查。一個獨立於開發團隊的審計團隊檢查軟體過程、程式、需求和SDLC的其他方面。軟體審計的目的是檢查軟體及其開發過程是否都符合標準、規則和法規。