關于軟件測試的一切
在攻讀本科期間,我遇到了“軟件測試”一詞,我發現它很有趣,并開始尋找各種資源來獲取足夠的知識。在我的途中,我發現沒有特定的來源包含有關軟件測試基礎知識的所有概念。因此,本文總結了軟件測試的基本概念及其重要性。
什么是軟件測試?
根據技術定義,軟件測試是評估系統或其組件以確定其是否滿足指定要求的過程。它是“驗證和確認”的元素。軟件測試至關重要,因為它表明了軟件的質量和可靠性,從而提高了客戶滿意度。
軟件可測試性
如果要發布無錯誤的軟件,測試至關重要,但是并非所有軟件都易于測試。軟件支持測試的程度稱為軟件可測試性。軟件的可測試性取決于以下因素:
- 可分解性:可以單獨測試軟件的不同組件。
- 可觀察性:輸入的任何更改都會反映在軟件的輸出中。
- 可控制性:這是可以控制被測組件狀態的程度。
- 簡單:軟件的每個組件都是不言自明的(記錄良好的)。
- 穩定性:軟件更改很少,但是可以很好地控制。
良好測試的品質
測試是為了發現錯誤而執行程序的過程。好的測試既不是太簡單也不是太復雜,并且最有可能在測試組中發現一整類錯誤。
在編寫測試時,請嘗試回答以下問題:一組特定的測試將如何充分覆蓋產品?
這將幫助您編寫該軟件的有效測試。
軟件測試生命周期(STLC)
它是在測試過程中進行的一系列特定活動,以確保滿足軟件質量目標。STLC包括:
- 產品需求分析
- 測試計劃
- 測試用例開發
- 測試環境設置
- 執行測試
- 評估結果
在整個測試過程中,最重要的任務是設計一個好的測試用例并采用合適的策略對軟件產品進行測試。以下將進一步解釋這兩個術語:
> Software Testing Classification (Diagram by author)
測試用例設計方法
測試用例通常是單一步驟,或偶爾一系列步驟,以測試應用程序的正確功能和特征。
成功的測試用例是一種可以檢測到尚未發現的錯誤的案例。
測試用例設計是軟件測試的重要方面,因為它為開發人員提供了系統的測試方法。任何工程產品都可以通過以下兩種方式之一進行測試:
(1) 白盒測試(玻璃盒測試)
這是一種測試用例設計方法,其中包括對軟件內部邏輯和結構的詳細研究,即它可以發現軟件源代碼的邏輯和結構中的錯誤。它又分為兩類:
- 路徑測試:這是一種使測試用例設計人員能夠得出程序的邏輯復雜性度量的方法。在這種方法中,我們確保通過程序的每個路徑都已用最少的測試用例執行了至少一次。
- 結構測試:它與軟件的內部設計和實現有關。它主要包括數據流測試(與數據流中的錯誤有關,即變量聲明和用法)和變異測試(通過確保程序使變異/編輯的源代碼失敗來確保程序的健壯性)。
(2) 黑匣子測試(行為測試)
這是一種測試用例設計方法,它專注于軟件的功能需求,而對軟件產品的內部工作一無所知。這包括 :
- 等效類分區:這是一種黑盒測試方法,它將程序的輸入域劃分為可從中導出測試用例的數據類。它定義了一個發現錯誤類別的測試用例,從而減少了測試用例的總數。
- 邊界值分析:它是對等價類劃分的補充。與其選擇等效類的任何元素,不如在類的邊緣選擇測試用例。
- 決策表測試:一種系統方法,其中以表格形式捕獲各種輸入條件及其各自的系統行為。它涵蓋了所有可能的測試用例。(完整性屬性)
- 因果圖(魚骨圖):以圖形方式說明給定結果與影響該結果(輸出/效果)的所有因素(輸入條件)之間的關系。
軟件測試策略
軟件測試策略將軟件測試用例設計方法學集成到精心計劃的一系列步驟中,從而成功構建了軟件。軟件測試從組件級別開始,并逐步擴展到整個基于計算機的系統的集成。這包括:
(1) 單元測試(組件測試)
在這種測試方法中,將測試軟件的各個單元(組件)。它是面向白盒的,由開發人員完成。
單元可以是單個功能,方法,模塊或對象。
(2) 集成測試
這是一種用于構造程序結構,同時進行測試以發現與軟件的不同單元之間的交互相關的錯誤的系統技術。這包括 :
- 大爆炸集成:將所有組件一次性集成并作為一個單元進行測試時
- 增量集成:兩個或兩個以上邏輯相關的組件進行集成和測試時。它包括兩種方法,即自上而下(首先測試高級模塊時)和自下而上(首先測試較低級模塊時)。
- 回歸測試:進行測試以確保最近的代碼更改不會對軟件的現有功能產生不利影響。
- 冒煙測試:確定軟件構建是否穩定的測試。
構建包含實現一個或多個產品功能所需的所有數據文件,庫和模塊。
(3) 系統測試
這是一種黑箱測試技術,旨在根據指定要求評估整個系統的合規性。這包括 :
- 恢復測試:驗證萬一發生故障,是否可以正確執行軟件恢復。
- 安全測試:發現系統漏洞。
- 壓力測試:旨在應對程序中的異常情況。
- 性能測試:用于測試程序的速度,穩定性和可伸縮性。
(4) 用戶驗收測試(UAT)
它由最終用戶(客戶端)執行,以在將軟件移至生產環境之前對其進行驗證。這包括 :
- Alpha測試:由測試人員執行,以通過執行典型用戶可能執行的任務來識別軟件中存在的所有可能的錯誤。
- Beta測試:由真實用戶在真實環境中進行。它包括將軟件發布給有限數量的用戶的過程,以獲得可以改進產品的反饋。
結論
軟件測試是一個廣泛而多樣的領域,專注于交付給客戶的產品質量。產品質量優先考慮客戶滿意度,這使軟件測試成為IT行業最具挑戰性和滿意度的工作之一。本文介紹了軟件測試及其分類的基礎知識,它們可以幫助您培養對該領域的興趣或完成大學作業!
原文鏈接:https://medium.com/nerd-for-tech/all-about-software-testing-a85f55d8263b