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