編碼和測試統稱為實作。
通常在編寫出每個子產品之後就對程式做必要的測試,這叫做單元測試。模闆的編寫者和測試者是同一個人。
之後會進行其他綜合測試,由專門的測試人員承擔這份工作,也就是軟體測試工程師。
軟體測試的工作量往往占軟體開發總工作量的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)符号
et——測試之前程式中錯誤總數
it——程式長度(機器指令總數)
τ——測試(包括調試)時間
ed(τ)——在0至τ期間發現的錯誤數
ec(τ)——在0至τ期間改正的錯誤數
2)估計錯誤總數
植入錯誤發和分别測試法