系統測試基礎部分
系統測試基礎
一、軟體生命週期
a)傳統軟體生命週期——瀑布模型
-
計劃
確定軟體開發總目標;給出軟體功能、效能、可靠性以及介面等方面的設想;研究完成該專案的可行性,探究問題解決方案;對可供開發使用的資源、成本、可取得的效益和開發進度進行預估;制定完成開發任務的實施計劃。
-
需求分析
對開發的軟體進行詳細的定義,由需求分析人員和使用者共同討論決定,哪些需求的可以滿足的,並且給予確切描述,寫出軟體需求說明書SRS或者產品需求文件PDR以及原型圖
注:PDR是將商業需求文件(BDR)和市場需求文件(MRD)用更加專業的語言來描述
軟體研發型別不同,需求來源不同,需求分析中的使用者針對的具體物件也不同 -
設計(開發設計)
設計是軟體工程的技術核心,這個階段需要完成設計說明書
概要設計:(HLD)在設計階段把各項需求轉換為相應的體系結構,每一部分是功能明確的模組;
詳細設計:(LLD)對每個模組要完成的工作進行具體描述 -
編碼
把軟體設計轉換成計算機可以接受的程式,即寫成以某個程式設計語言表示的源程式清單,使用RDBMS工具建立資料庫
-
測試
測試是檢驗軟體是否符合客戶需求,達到質量要求,一般由獨立小組執行,測試工作分為:
單元測試
整合測試
系統測試 -
執行和維護
這個階段將軟體交付使用者投入正式使用,以後便進入維護階段,可能有多種原因需要對它進行修改,如軟體錯誤、系統軟體升級、增強軟體功能、提高效能等
b)軟體從開發到交付的一系列過程——迭代模型
二、軟體研發組織和流程
a)軟體研發相關要素:
-
人員
-
過程
-
工具
只有合適的人員藉助合適的工具經過合適的過程才能研發出高質量的軟體
工具為人員和過程服務,起輔助作用,起關鍵作用的是人員和過程
b)軟體專案組人員組成:
專案組一般由專案經理領導並負責制定專案計劃、分配任務。
-
專案經理
-
分析人員
-
設計人員
-
開發人員
-
測試人員
-
配置管理人員
-
SQA()
c)常見專案組架構:
-
軟體開發組
開發經理
分析人員
設計人員
開發人員
-
軟體測試組
測試經理
測試人員
-
配置管理組
配置經理
CMO(配置管理員)
d)軟體開發生命週期模型
(1)5種常用模式
-
大爆炸模式
-
邊寫邊改模式
-
瀑布模式
-
迭代模式
-
螺旋模式
(2)敏捷開發模式
目的:每個開發活動都有對應的測試;每個測試級別都有對應的測試目標;每個測試都有測試分析和設計;開發週期中,在文件初期稿階段(需求分析階段)就應該參與文件的評審
三、軟體測試的定義和目的
定義:
軟體測試用來鑑定軟體的正確性、完整性、安全性和質量的過程。是一種實際輸出與預期輸出間的稽核或比較過程。經典定義:在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體質量,並對其是否滿足設計進行評估的過程。
程式的測試是為了發現錯誤而執行程式的過程;
好的測試方案是極可能發現迄今為止尚未發現的錯誤的錯誤測試方案;
成功的測試是發現了至今為止尚未發現的錯誤的測試。
目的:
-
一個糟糕的測試程式可能導致任務的失敗,影響操作的效能和可靠性,導致維護階段的成本提高;
-
一個好的測試程式是專案的主要成本;
-
一個好的測試程式可以極大的幫助你定義需求和設計;
-
一個好的測試可以迫使開發在工作必須面對的處理問題,使得修改缺陷成本降低;
-
一好的測試不能彌補一個糟糕的軟體專案,但是的確有助於發現許多問題;
並且至少使得你儘早知道開發所在的問題
軟體中引入缺陷的原因
a)軟體缺陷和Bug
軟體缺陷:靜態存在於軟體工作產品(文件、程式碼)中的錯誤,也指軟體執行時由於這些錯誤被激發引起的和軟體產品預期屬性的偏離現象
bug:程式碼中的缺陷。也泛指因軟體產品內部的缺陷引起的軟體產品最終執行時和預期屬性的偏離。
軟體錯誤、軟體缺陷、bug在實際工作中可以認為一樣
b)常見的引入缺陷的原因:
-
開發過程缺乏有效的溝通或者沒有進行溝通
-
軟體複雜度越來越高
-
程式設計中產生錯誤
-
需求不斷變更
-
專案進步的壓力
-
不重視開發文件
-
軟體開發工具本身隱藏的問題
c)缺陷型別:
所有缺陷可歸為四類:
-
遺漏:規定的或預期的需求未體現在產品中(可能未將規格說明全面實現,也可能需求分析階段就遺漏了需求)
-
錯誤:未將規格說明正確實現(可能涉及錯誤、也可能編碼錯誤)
-
額外的實現:規格說明並未規定的需求被納入產品,得到實現
-
改進
d)軟體測試的誤區
-
除錯和測試是一樣的;
-
測試組應當為保證質量負責;
-
過分依賴Bela測試;
-
把測試作為新員工的一個過度工作;
-
把不合格的開發人員安排做測試;
-
關注與測試的執行而忽略測試的設計;
-
自動化測試是萬能的;
-
測試是可以窮盡的;
-
測試是為了證明軟體的正確性;(而是驗證軟體和需求的一致性)
-
測試是枯燥乏味,缺乏創造力的工作;
e)軟體測試的主要工作:
-
檢視程式碼、評審開發文件
-
進行測試設計、寫作測試文件(測試計劃、測試方案、測試用例等)
-
執行測試,發現軟體缺陷,提交缺陷報告,並確認缺陷最終得到了修正
-
通過測試度量軟體的質量