軟體工程 測試

2022-01-13 22:13:03 字數 2423 閱讀 3286

單元測試 (白盒測試)

1模組介面:  

內部檢查:傳輸引數的數目、屬性、單位、次序是否匹配;全程變數的定義是否一致;只做輸入的變元有無被修改,等等  

內部檢查:開啟、結束、關閉檔案的操作;檔案和屬性;i\o錯誤處理;輸出拼寫,等等

2區域性資料結構:  

資料說明;初始化與預設值的設定;變數名拼寫;資料型別的相容性;上\下溢位及位址異常,等等。

3重要的執行通路:

由於窮盡測試的不可能,故通常針對最常見的錯誤設計測試方案。

較常見的錯誤有:  計算次序問題;  不同型別混合運算;  初值設定錯誤;  精度問題;  表示式錯誤  迴圈終止條件錯誤;

4出錯處理通路:

預見出現錯誤的條件,設定處理。

較常見的問題有:  

輸出的錯誤資訊難以理解,

不能確定錯誤位置

描述的錯誤與實際錯誤不符  

處理之前系統已經干預  

處理不正確

5邊界條件——單元測試中最後,也可能是最重要的任務,因為軟體常在其邊界失效。

單元測試的主要手段:

1**審查  

走讀 walk_through:

例如 lucent technologies 的測試策略,是由三人一組(包括author,reader,和recorder),逐行檢查源**。  預演由人扮演computer,模擬執**況

優點:一次審查科發現多個錯誤,不必改乙個測乙個。

2製作測試軟體:  

stub(存根)和driver(驅動)軟體的編寫,屬額外開支。模組高內聚可簡化這一過程。

設計測試方案

任務:1預定要測試的功能

2設計輸入的測試資料

3列出預期結果

主要技術:

1邏輯覆蓋(logical coverage)——適用於白盒測試  覆蓋程度由弱到強依次為:  

(1)語句覆蓋(statement coverage):每個語句至少執行依次。  

(2)判定覆蓋(branch coverage):再(1)的基礎上,每個判定的每個分支至少執行依次。  

(3)條件覆蓋(condition coverage):在(1)的基礎上,使每個判定表示式的每個條件都取到各種可能的結果。  

(4)判定/條件覆蓋:即判定覆蓋∩條件覆蓋  

(5)條件組合覆蓋:每個判定表示式中條件的各種肯能組合都至少出現依次。  

(6)點覆蓋=語句覆蓋  

(7)邊覆蓋=判定覆蓋  

(8)路徑覆蓋(path coverage):每條可能的路徑都至少執行依次,若圖中有環,則每個環至少經過依次。  

(9)路徑覆蓋/條件組合覆蓋

2等價劃分(equivalence partitioning)——適用於黑盒測試  

是一種很常用的測試方法。其對測試資料的選擇是基於對程式功能的分析,按照程式輸入要求和輸出要求,選擇若干資料進行測試功能的過程。

(1)劃分經驗

當規定了輸入範圍時:無效類【 有效類 】無效類 當規定了一組輸入值,且對不同值做不同處理時。

例:教工分房方案中,按教授、副教授、講師、助教分別計分=》有效類4個;無效類1個(4個有效類之外)

當規定了輸入的規則時:例:pascal 語言規定,每個語言以「;」結束=》有效類1個;無效類若干(以「,」結束、以「:」結束、以空格結束等等)

當輸入為整型時:有效類可分為z+、0、z- 三種

當處理**時:有效類可分為空表、含一項的表、含多項的表等

(2)設計步驟

設計乙個新方案以盡可能多地覆蓋尚未被覆蓋的有效等價類;重複這一步驟直到所有有效類都被覆蓋為止。

設計乙個新方案以覆蓋乙個且僅乙個尚未被覆蓋的無效等價類;重複這一步驟直到所有無效類都背覆蓋為止。(通常程式執行乙個錯誤後即不繼續檢查其他錯誤)

3邊界值分析(boundary value analysis)

注意:  (1)程式最容易在邊界發生錯誤;  (2)通常與等價劃分結合進行。

4錯誤推測(failure prediction)

思路:  (1)列出可能有的錯誤;  (2)列出容易發生錯誤的特殊情況。

以此為基礎設計測試方案

根據:經驗、直覺

5實用策略(practical strategies) 黑盒設計+白盒補充

(1)在任何情況下都應首先實用邊界值分析的方法;

(2)必要時用等價劃分法補充;

(3)必要時再用錯誤推測法補充;

(4)對照程式邏輯,檢查測試方案。可根據對程式可靠性的要求採用不同的邏輯覆蓋標準,必要時補充一些測試方案。

注:即使用上述綜合策略設計測試方案,仍不能保證發現一切錯誤。例如lucent公司經過包括逐行檢查源**在內的多方面測試之後,其軟體能達標執行的成功率為 80%,可想而知,沒有經過測試的軟體執行成功率更低。

軟體工程 軟體測試

本階段,軟體測試中,分為兩個方面1.軟體測試,也就是發現問題的過程。2.軟體除錯,也就是糾正問題的過程。下面是本階段的總結 軟體測試的目的簡單的說是發現錯誤,具體的描述 1.測試是軟體的執行過程,目的是發現錯誤。2.乙個好的測試用例在於發現至今未發現的錯誤。3.乙個成功的測試是發現了至今未發現的錯誤...

軟體工程 軟體測試

我也經歷過幾次師哥師姐的測試工作,當時並沒有多少感覺。自己的機房呢那幾乎每天都在除錯錯誤,自己經歷的只是一小部分就能感覺到它的複雜和重要。軟體測試在程式設計師對每乙個模組的編碼之後先做程式測試,在做單元測試,然後在進行整合測試,系統測試,驗收測試,平行測試,人工測試,測試橫跨開發與測試兩個階段,又有...

軟體工程 軟體測試

軟體測試目的 測試是程式的執行過程,目的在於發現錯誤 乙個好的測試用例在於能發現至今未發現的錯誤 乙個成功的測試是發現了至今未發現的錯誤的測試 軟體測試的原則 應當把盡早地和不斷地進行軟體測試。測試用例應由測試輸入資料和對應的預期輸出結果這兩部分組成。程式設計師應避免檢查自己的程式 在設計測試用例時...