软件质量保证与测试
所謂教材就是把一些簡單易懂的詞語,擴寫成一堆誰也看不懂的句子。
一、概述
計算機軟件是在計算機系統中與硬件相互依存的另一部分,它是包括程序、數據及其相關文件的完整集合。
落后的軟件生產方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發與維護過程中出現一系列嚴重問題得到現象,這就是軟件危機。
軟件工程是應用計算機科學、數學及管理科學等原理開發軟件的工程。
一般軟件生存周期包括問題的定義、軟件開發、軟件測試、軟件使用與維護等幾個階段。
問題的定義:可行性研究、需求分析。確定軟件系統的工程需求。
軟件開發:設計,概要設計、詳細設計。實現,也稱為編碼。
軟件測試:整個測試過程分為,單元測試、集成測試、系統測試、驗收測試,四個階段進行。
軟件的使用與維護:。
軟件過程模型
瀑布過程模型、螺旋過程模型、增量過程模型、快速原型過程模型、敏捷過程模型。
軟件錯誤是指在軟件生存周期內的不希望或不可接受的人為錯誤,軟件錯誤導致軟件缺陷的產生。
軟件缺陷是存在于軟件(文檔、數據、程序)之中的不希望出現或不可接受的偏差,軟件缺陷導致軟件在運行于某一特定條件時出現軟件故障,這時軟件缺陷被激活。
軟件故障是指在軟件運行過程中產生的不希望出現或不可接受的內部狀態,對軟件故障若無適當措施(容錯)加以即使處理,就會使軟件失效。
軟件失效是指軟件在運行時產生的不希望出現或不可接受的外部行為結果。
軟件質量是與軟件產品滿足明確或隱含需求的能力有關的特征和特性的總和。
1. 能滿足給定需求的特性。
2. 具有所期望的各種屬性的組合的程度。
3. 能滿足用戶綜合期望的程度。
4. 軟件的組合特性。
“軟件滿足規定或潛在用戶需求的能力”要從軟件的內部、外部和使用中的表現來衡量。
軟件測試是為了發現錯誤而執行程序的過程。
定義:使用人工或自動手段來運行或測試某個系統的過程,其目的在于檢驗它是否滿足規定的需求或弄清楚預期結果與實際結果之間的差別。
軟件測試歸根結底是為了保證軟件質量。
軟件測試的目的
測試是一個程序執行的過程,其目的在于發現錯誤。
一個好的測試用例很可能會發現至今尚未察覺的錯誤。
一個成功的測試是發現至今尚未察覺的錯誤的測試。
軟件測試的原則
盡早測試
全面測試
全過程測試
獨立的、迭代的測試
Pareto原則
對測試出的錯誤結果一定要有一個確認的過程
制定嚴格的測試計劃
完全測試是不可能的,測試需要終止
注意回歸測試的關聯性
妥善保存一切測試過程文檔
軟件測試過程模型
V模型
W模型
X模型
H模型
軟件測試的分類
按測試方式分類
靜態測試
動態測試
按測試方法分類
白盒測試
黑盒測試
灰盒測試
按測試過程分類
單元測試
集成測試
系統測試
驗收測試
按測試目的分類
功能測試
健壯性測試
接口測試
性能測試
強度測試
壓力測試
用戶界面測試
安全測試
可靠性測試
安裝/反安裝測試
文檔測試
恢復測試
兼容性測試
負載測試
軟件測試流程
軟件測試計劃是描述測試目的、范圍、方法和軟件測試的重點等內容的文檔。
二、技術
黑盒測試:已知產品的功能設計規則和用戶手冊,可以測試驗證每個功能是否都實現、每個實現了的功能是否符合要求,以及產品的性能是否滿足用戶的要求。
白盒測試:已知產品的內部工作過程,可以通過測試驗證每種內部操作是否符合設計規格要求,所有內部成分是否已經過檢查。
白盒測試
白盒測試是一種被廣泛使用的邏輯測試技術,也稱為結構測試或邏輯驅動測試。
白盒測試的對象基本上是源程序,是以程序的內部邏輯為基礎的一種測試技術。
A. 靜態測試
代碼檢查法
1. 桌面檢查:桌面檢查是指程序設計人員對源程序代碼進行分析、檢查,并補充相關的文檔,發現程序中的錯誤。
2. 代碼審查:代碼審查一般由程序設計人員和測試人員組成審查小組,通過閱讀、討論,對程序進行靜態分析。
3. 走查:走查一般由程序設計人員和測試人員組成審查小組,通過邏輯運行程序,發現問題。
靜態結構分析法
1. 通過生產各種圖表,來幫助對源程序的靜態分析:符號交叉引用表、變量交叉引用表、子程序(宏、函數)引用表、等價表、常數表。
2. 靜態錯誤分析:類型和單位分析、引用分析、表達式分析、接口分析。
B. 程序插樁
程序插樁是借助向被測程序中插入操作,來實現測試目的的方法,即向源程序中添加一些語句,實現對程序語句的執行、變量的變化等情況進行檢查。
C. 邏輯覆蓋
邏輯覆蓋的類型
語句覆蓋:設計若干個測試用例,運行被測試程序,使得每一條可執行語句至少執行一次。
判定覆蓋:設計若干個測試用例,運行被測試程序,使程序中每個判斷的取真分支和取假分支至少執行一次。
條件覆蓋:設計若干個測試用例,運行被測試程序,使程序中每個判斷的每個條件的每個可能取值至少執行一次。
D. 基本路徑測試
基本路徑測試的步驟
1. 畫出程序控制流程圖
2. 計算程序環路復雜性:設E為程序控制流程圖的邊數,N為圖的節點數,則定義環路的復雜性為V(G)=E-N+2。
3. 確定獨立路徑集合
黑盒測試
黑盒測試也稱為數據驅動測試,在測試時,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口處進行測試。
功能測試
非功能測試
三、過程
單元測試
單元測試的定義
單元測試是對軟件設計的最小單位——模塊進行正確性檢驗的測試工作,主要測試模塊在語法、格式和邏輯上的錯誤。
“單元”是軟件里最小的、可以單獨執行編碼的單位,單元選擇的依據如下
1. 單元必須是可測的。
2. 單元的行為或輸出是可觀測的。
3. 有明確的可定義的邊界或接口。
單元測試的主要任務
模塊接口測試
模塊局部數據結構測試
模塊中所有獨立執行路徑測試
各種錯誤處理方式
模塊邊界條件測試
集成測試
集成測試的定義
將經過單元測試的模塊按設計要求把它們連接起來,組成所規定的軟件系統的過程稱為“集成”。
集成測試是在單元測試的基礎上,測試將所有的軟件單元按照概要設計規格說明的要求組裝成模塊、子系統或系統的過程中,各部分功能是否達到或實現相應技術指標及要求的活動。
集成測試實施方案
非增量式集成測試
增量式集成測試:自頂向下增量式集成測試、自底向上增量式集成測試
系統測試
系統測試的定義
系統測試是指將通過集成測試的軟件系統,作為計算機系統的一個重要組成部分,與計算機硬件、外設、某些支撐軟件的系統等其他系統元素組合在一起所進行的測試,目的在于通過與系統的需求定義作比較,發現軟件與系統定義不符合或矛盾的地方。
驗收測試
回歸測試
總結
- 上一篇: LaTeX数学公式编辑(1)——行内公式
- 下一篇: 为DataList和GridView内容