![]() |
VOOZH | about |
編碼和測試統稱為實現。
通常在編寫出每個模塊之後就對程序做必要的測試,這叫做單元測試。模板的編寫者和測試者是同一個人。
之後會進行其他綜合測試,由專門的測試人員承擔這份工作,也就是軟體測試工程師。
軟體測試的工作量往往占軟體開發總工作量的40%以上。
編碼對於編碼有如下要求:
1)程序內部的文檔
2)數據說明
3)語句構造
4)輸入輸出
5)效率:程序運行時間、存儲器效率、輸入輸出的效率
軟體測試基礎一、軟體測試的目標
1)測試是為了發現程序中的錯誤而執行程序的過程
2)好的測試方案極可能發現迄今為止尚未發現的錯誤的測試方案
3)成功的測試是發現了至今為止尚未發現的錯誤的測試
註:測試只能查找出程序中的錯誤,而不能證明測試中沒有錯誤。
二、軟體測試準則
1)所有的測試都應該能追溯到用戶需求
2)應該遠在測試開始之前就制定出測試計劃
3)把Pareto原理(測試發現的錯誤中的80%很可能是程序中20%的模塊造成的)應用到軟體測試中
4)應該從「小規模」測試開始,並逐步進行「大規模」測試
5)窮舉測試是不可能的
6)應該由第三方從事測試工作
三、測試方法
白盒測試和黑盒測試,先進行白盒測試,後進行黑盒測試。(隨後會有補充)
四、測試步驟
1)模塊測試(又被稱為單元測試)
2)子系統測試(將經過單元測試的模塊放到一起形成一個子系統)
3)系統測試(將經過測試的子系統裝配成一個完整的系統來測試)
4)驗收測試(將軟體系統作為一個單一的整體,它是用戶積極參與下進行的,驗收測試也被稱為確認測試)
5)平行運行(將新舊系統同時運行進行比較,目的是:1,可以在准生產環節中運行新系統而不冒風險;2,用戶能有一個熟悉新系統的過程;3,可以驗證用戶指南和使用手冊之類的文檔;4,能夠以准生產模式對新系統進行全負荷測試,可以用測試結果驗證性能指標)
五、測試階段的信息流
輸入的信息由兩大類:
1)軟體配置,包括需求說明書、設計說明書和源程序說明書清單等
2)測試配置,包括測試計劃和測試方案,所謂測試方案不僅僅是測試時使用的輸入數據(稱為測試用例),還應該包括每組輸入數據預定要檢驗的功能,以及每組數據預期應該取得的正確輸出
(測試配置是軟體配置的一個子集,也就是說最終交出的軟體配置應該包括測試配置和測試的實際結果和測試的記錄)
單元測試一、測試重點
1)模塊接口
包括:參數的數目、次序、屬性或單位系統與變元是否一致;是否修改了只作輸入用的變元;全局變量的定義和用法在各個模塊中是否一致
2)局部數據結構
常有局部數據說明、初始化、默認值等方面的錯誤
3)重要的執行通路
4)出錯處理通路
錯誤常在:1 對錯誤的描述是難以理解的;2 記下的錯誤與實際遇到的錯誤不同;3 在對錯誤進行處理之前,錯誤條件已經引起系統干預;4 對錯誤的處理不正確;5 描述錯誤的信息不足以幫助確定造成錯誤的位置
5)邊界條件
二、代碼審查
三、計算機測試
為每個單元測試開發驅動軟體和(或)存根軟體
集成測試一、自頂向下集成
二、自底向上集成
三、在軟體結構的較上層使用自頂向下方法與軟體結構中較下層使用的自底向上方法相結合。
四、回歸測試
確認測試確認測試也稱為驗收測試,它的目的是驗證軟體的有效性。
驗證(verification)是指保證軟體正確的實現了某個特定要求的一系列活動。
確認(validation)是指保證軟體確實滿足了用戶需求進行的一系列活動。
軟體有效性的定義:如果軟體的功能和性能如同用戶所合理期待的那樣,軟體就是有效的。
一、軟體測試的兩種可能結果:
1)功能和性能與用戶要求一致,軟體是可以接受的。
2)功能和性能與用戶要求有差距。
二、軟體配置複查
三、Alpha和Beta測試
Alpha測試由用戶在開發者的場所進行,並且在開發者對用戶的「指導」下進行測試。開發者負責記錄發現的錯誤和使用中遇到的問題。也就是說Alpha測試是在受控的環境中進行的。
Beta測試由軟體的最終用戶在一個或多個客戶場所進行。開發者通常不在場,也就是說是不受控的環境。用戶記錄在Beta測試中遇到的一切問題(真實的或想像的),並定期將這些報告給開發者。
也就是說,作為計算機/軟體的用戶而言,我們平常接觸最多的Beta版的軟體,而Alpha版的軟體除了自己開發/測試的基本不會遇到。
白盒測試技術一、邏輯覆蓋
1)語句覆蓋
2)判定覆蓋
3)條件覆蓋
4)判定/條件覆蓋
5)條件組合覆蓋
6)點覆蓋
7)邊覆蓋
8)路徑覆蓋
二、控制結構測試
1)基本路徑測試
主要是:1 根據過程設計結果畫出相應的流圖;2 計算流圖的環形複雜度,環形複雜度定量度量程序的邏輯複雜性;3 確定線性獨立的基本集合;4 設計可強制執行基本集合中每條路徑的測試用例
環形複雜度計算方式:V(G)=P+1,P是流圖中判定(if等)結點的數目。
2)條件測試
3)循環測試
主要包括:簡單循環,嵌套循環,串接循環(也就是兩個循環並列,而非包含關係,包含關係時為嵌套循環)
黑盒測試一、黑盒測試力圖解決的問題:
1)功能不正確或遺漏了功能
2)界面錯誤
3)數據結構錯誤或外部資料庫訪問錯誤
4)性能錯誤
5)初始化和終止錯誤
二、設計黑盒測試時應考慮的問題:
1)怎樣測試功能的有效性?
2)哪些類型的輸入可構成好測試用例?
3)系統是否對特定的輸入值特別敏感?
4)怎樣劃定數據類的邊界?
5)系統能夠承受什麼樣的數據率和數據量?
6)數據的特定組合將對系統運行產生什麼樣影響?
三、等價劃分
將輸入域劃分成若干個數據類,據此導出測試用例。
四、邊界值複習
五、錯誤推測
調試一、調試途徑
1)蠻幹法
2)回溯法
3)原因排除法
軟體可靠性是程序在給定的時間間隔內,按照規格說明書的規定成功地運行的概率
錯誤的含義是開發人員造成的軟體差錯(Bug)
故障的含義是由錯誤引起的軟體的不正確行為
一、估算平均無故障時間的方法
1)符號
——測試之前程序中錯誤總數2)估計錯誤總數
植入錯誤發和分別測試法