跳至內容

軟體測試

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 11:05 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

軟體測試(英語:software testing), 描述一種用來促進鑑定軟體的正確性、完整性、安全性佮品質的過程。依照會當算理論(計算機科學的一个支派)一个簡單的數學證明推斷出下列的結果:無可能完全解決所謂「當機」,指任意電腦的程式會進入無錢迴圈,抑是罷工並產生輸出問題。嘛會使講,軟體測試這是一種實際輸出佮預期輸出間的稽核抑是講比較過程。

軟體測試的經典定義是:佇咧規定的條件下跤對程式來進行操作,以發現程式錯誤,衡量軟體品質,並毋是會當滿足設計要求進行評估的過程。

軟體測試有真濟方法,猶毋過對複雜的產品執行有效測試毋但是研究過程,更加是創造並嚴格遵守某一寡呆板步數的大代誌。測試的其中一个定義:為著評估而且質疑產品的過程;遮的「質疑」是測試員試看著對產品做的代誌,產品以測試者指令碼行為反應作為回答。雖然大部份咧試的質疑過程無偌爾回顧、檢查,毋過「測試」這个詞意味著產品動態分析 ─ ─ 予產品輾轉運行。程式品質可能,而且通常會,隨系統無仝款有差;毋過某一寡公認特性是共通的:可靠性、穩定性、輕便性、敢若維護、以及實用性。請參照至 ISO 標準 ISO 九千一百二十六有閣較詳盡的說明。

測試的進程

Alpha 測試

Alpha 測試通常是階段性的開發完成了後所開始進行,一直繼續到進入 Beta 測試階段進前的階段。Alpha 測試是一種驗證測試,佇類比的環境以類比的資料來執行。

佇這个階段內底,通常是佇開發單位由開發人員和測試的測試人員,以類比抑是實際操作性的方式進行驗證測試。

Beta 測試

佇咧系統測試內面通常先進行 Alpha 測試以驗證資訊系統符合使用者佮設計需求所向望的功能。當 Alpha 階段完成了後,開發過程進入到 Beta 階段,由公眾參與的測試的階段。Beta 測試會當講確認測試,佇一个真實的環境中以實際資料來執行測試,才有確認效能,系統執行有效率,系統復原佮備份作業正常,透過測試予資訊系統日後會當閣較趨完善。

封測佮公測

封閉測試(Closed Beta,捷簡作封測抑是CB)是軟體抑是服務等產品佇咧開發完成了後、共公開上市前的測試過程。對公開測試,封閉測試的主要用途是測試軟體的功能佮檢查程式錯誤等等,因此通常只提供予少數人做測試。有一寡公司要求參與測試者簽署保密協定,較避免測試的產品進前外流。MMORPG 的封測結束了後,遊戲公司常會共角色資料刪除,但是也有少數攏袂共刣掉。

公開測試(Open Beta,捷簡作公測抑是OB), 一般定定指軟體抑是服務等產品佇正式上市前開放予無特定人試用,雖然原意是希望試用者會當提報 bug,但並毋是共試用者當做真正的驗證人員。因為通常為免費性質,故常在會當吸引著大批的試用者參與,會當看為另外一種行銷策略。另外一方面嘛愛儉儉試人員的成本,佮驗證穩定度(對濟人使用的頻寬機器敢有法度負載,閣稱壓力測試)的時間。

Gamma 測試

Gamma 測試是一个足少予人講著的非正式測試階段,該測試的階段對應的是著「儉咧缺陷」產品的測試。考慮著任何產品攏會當予人號做「儉咧缺陷」的產品(測試干焦會當發現產品中存在的問題,袂當說明產品不存在問題), 所以這个概念存在一定性無確定性。 著 Alpha 和 Beta 測試定定看著的一个誤解是「Beta 測試=烏箱仔試」。 實際上,Alpha 和 Beta 測試對應佇軟體產品發布進前的 Alpha 和 Beta 階段,啊若白盒、烏盒仔佮臭盒仔試技術是對技術佮方法層面對測試的描述,無應該共這兩部分的概念透濫。

試的方法

軟體試一般分做烏箱試佮白盒試。

烏箱仔試

烏盒測試(black-box testing), 嘛講烏箱測試,是軟體測試方法,測試應用程式的功能,毋是其內部結構抑是運作。測試者毋免有應用程式的行踏碼、內部結構佮程式語言的專門智識。測試者只需知影啥物是系統應該做的代誌,即當鍵入一个特定的輸入,會當得著一定的輸出。測試案例是依應用系統應該做的功能,照規範、規格抑是要求等設計。測試者選擇有效輸入佮無效輸入來驗證敢有正確的輸出。

此測試方法會當適合大部份的軟體測試,譬如講整合測試(integration testing)猶閣有系統測試(system testing)。

白盒測試

白盒測試(white-box testing,又閣稱透明盒來測試 glass box testing、結構測試 structural testing 等)是一个測試軟體的方法,測試應用程式的內部結構抑是運作,毋是測試應用程式的功能(即烏箱試)。 佇白盒咧試的時陣,用程式語言的角度來設計測試案例。測試者輸入資料驗證資料流佇咧程式內底的流動路徑,並確定適當的輸出,類似測試電路中的節點。

白箱測試會當應用佇單元測試(unit testing)、 整合測試(integration testing)和系統的軟體測試流程,會當測試咧整合過程中每一單元之間的路徑,或者是主系統佮子系統內面的測試。就算講這款測試的方法會當發現濟濟的錯誤抑是問題,伊可能無法度檢測無使用部份的規範。

試的類型

壓力測試佮效能測試

壓力測試定定佮效能測試相濫摻。𪜶主要無仝款是,壓力測試要求進行超過規定效能指標的測試。譬如講一个網站設計容量是一百个人同時點擊,壓力測試就是欲採用一百二十个同時點擊的條件測試。

壓力測試的通常判斷準:

一 . 系統會當恢復。 二 . 壓力過程當中毋通有明顯效能下降。

測試的階段

單元測試

單元測試這是對軟體組成單元進行測試,其目的是檢驗軟體基本組成單位的正確性,測試的物件是軟體設計的上小單位:函式。 並且使用假資料測試無仝狀況下功能使用情況,單元測試對開發人員編寫閣較好的代碼。 單元測試是基於 code 的:可讀性、可測試性,𪜶佮開發代碼的構建方式密切相關。所致開發人員上清楚佗一寡測試上有意義。

整合測試

整合測試也講綜合測試、組裝測試、聯合測試,共程式模組用適當的整合策略組合起來,對系統的介面佮整合了後的功能會當進行正確性檢測的測試工課。其主要目的是檢查軟體單位之間的介面敢有正確,整合測試的物件是已經過單元測試的模組。

系統測試

系統測試主要是包括功能測試、介面測試、可靠性咧試、易用性測試、效能測試。 功能測試主要針對包括功能可用性、功能實現程度(功能流程 & 業務流程、資料處理 & 業務資料處理)方面試看覓。

回歸測試

回歸測試( regression test )指佇軟體維護階段,為著檢測代碼修改啊若引入的錯誤所進行的測試活動。回歸測試是軟體維護階段的重要工作,有研究表明,回歸測試帶來的消費占軟體性命周期的三分之一總費用以上。

佮普通的測試無仝,咧回歸測試的過程開始的時,測試者有一个完整的測試用例集會當供使用,所以,如何根據代碼的修改狀況對已經有測試用例集進行有效的復用是回歸測試研究的重要方向,此外,回歸測試的研究方向閣牽涉著自動化工具,物件導向回歸測試,測試用例優先級,回歸測試用例補充生成等。

  • 測試原有功能
  • 測試新加入的功能敢有 side effect

測試用例、測試指令碼佮測試場景

測試過程範例

軟體測試活動

代碼崁率

代碼崁率原本是種白箱測試活動。目標軟體通過特殊選項抑是函式館編譯並且 / 抑是講特殊環境(程式內底逐个函式攏予對映回原始碼裡函式的起點)下執行。這个過程允准開發員佮品管員檢視系統中佇正常的情形下極少抑是毋捌予人讀寫的部份(比如講:例外處理之類)並且幫助測試員確認上重要的情況(函式點)攏去予測過矣。

測試員會當檢視代碼崁率測試結果來設計測試個案、相對應的輸入或者設定組以增加重要函式的代碼崁率。兩種測試員定定用的代碼崁率的形式:語句崁率(抑是講這个行覆蓋率)以及路徑崁率(抑是講邊崁率)。 行崁率回報到測試完成時,執行過佗一寡行,或者是記持體大細。邊崁率回報到測試完成時,佗一寡分支,或者是程式決定點予人執行過。就親像崁率的「率」字所言,這兩个攏以百分比為單位。

通常代碼崁率的工具佮函式館要求的效能、記持體、或者是其他的資源開銷無為正常的軟體營運接受。因此𪜶通常干焦佇咧實驗室內底。閣,你可能會想著軟體內的真濟類無法度一通過遮的代碼崁率測試,雖然代碼崁程度會當通過分析但是毋是直接測試。

有的瑕疵嘛會受著遮的工具的影響。個別來講某些競態條件(race condition)抑是類似的著即時(real time)敏感度懸的操作強欲無可能佇咧代碼崁率測試環境之下偵知;反倒爿的這類的瑕疵只會帶來閣較濟的測試碼開銷。

自動化的測試

測試自動化是使用軟體工具佮既定程式,對軟體所進行的測試活動。

參考文獻

  • 鄭人傑,《 鋪排去體測試技術》,清華大學出版社

參見

  • 程式錯誤
  • 烏箱仔試
  • 白盒測試
  • 軟體測試模型
  • 軟體品質
  • 軟體驗證佮確認