軟體正規方法 作業_期末報告項目: 軟體正規方法 碩士班小組專題作業: 9/27 10/4 10/18 10/25 軟體正規方法 碩專班小組專題作業: 9/28 10/5 10/19 10/26 ============================================================================== mutation testing test cases: 變異測試案例格式範例: test case 1 (測試案例 1): 1) Input values(測試時候需要控制資料的值): i -1 2) expected result(正確的結果): flase 3) test program's result(原本程式執行後的結果): flase *4) criteria analysis(測試目標的分析) *a) 突變的程式(修改的敘述): *b) 突變的程式執行後的結果(跟原本程式結果不一樣): ============================================================================== 9/20(碩士) 9/21(碩專): 1)決定分組名單 2)決定小組組長 ------------------------------------------------------------------------------ 9/27(碩士) 9/28(碩專): 1)選定小組作業使用的一個程式語言 2)選定小組作業使用的一個測試工具: 工具必須支援 Unit Testing JAVA JUnit 工具必須支援 Line Coverage 的統計資料 (i) 測試工具的介紹 (ii) 測試工具功能的說明 ------------------------------------------------------------------------------ 測試工具的期末報告項目: 1) 測試工具 的介紹 2) 測試工具功能的說明 3) 測試工具功能的示範 (demo) 4) 測試工具的使用心得 5) 使用測試工具在 每個作業的展示 ------------------------------------------------------------------------------ 10/4(碩士) 10/5(碩專) 1) Line coverage (使用最少的測試案例達到測試目標涵蓋率100%) 每個作業的測試 程式範例 必須有 (1) 條件判斷式(例如 if) (2) 迴圈(例如 while) ============================================================================== ============================================================================== 每個作業的測試目標涵蓋率要到100% (testing criteria coverage 100%) 使用最少的測試案例達到測試目標涵蓋率100% ------------------------------------------------------------------------------ 每個作業的測試 程式範例 必須有 1) 條件判斷式(例如 if case) 2) 迴圈(例如 while) //測試程式範例(缺少迴圈): bool f (int i) //1 { if( i >= 0 ) //2 return true; //3 else //4 return false; //5 } ============================================================================== 每個作業測試案例的 規定格式: 程式測試目標涵蓋率到100%所需要的測試案例: (test cases for criteria coverage 100%) 使用 最少的測試案例 達到測試目標涵蓋率100% One test case(每個測試案例的規定格式): 1) Input values(測試時候需要 控制資料的值) 2) expected result(正確的結果) 3) test program's result(程式執行後的結果) 4) criteria analysis(測試目標的分析) ------------------------------------------------------------------------------ 程式測試目標涵蓋率到100%所需要的測試案例: (test cases for criteria coverage 100%) 使用最少個測試案例達到測試目標涵蓋率100% //測試程式範例(**缺少迴圈**): bool f (int i) //1 { if( i >= 0 ) //2 return true; //3 else //4 return false; //5 } ============================================================================== 測試案例範例 --------------------------------------------- 測試目標: Line coverage 總共行數: 1 2 3 4 5 test case 1 (測試案例 1) 1) Input values(測試時候需要 控制資料的值): i 1 2) expected result(正確的結果): true 3) test program's result(程式執行後的結果): true 4) criteria analysis(測試目標的分析) Line coverage: 測試案例涵蓋的lines: 1 2 3 test case 2 (測試案例 2) 1) Input values(測試時候需要控制資料的值): i -1 2) expected result(正確的結果): flase 3) test program's result(程式執行後的結果): flase 4) criteria analysis(測試目標的分析) Line coverage: 測試案例涵蓋的lines: 1 2 4 5 最少個案例為2個案例 總共涵蓋 Lines : 1 2 3 4 5 Line coverage: 100% ============================================================================== 測試目標: Edge coverage 總共 Edges: 12 23 24 45 test case 1 (測試案例 1) 1) Input values(測試時候需要 控制資料的值): i 10 2) expected result(正確的 結果): true 3) test program's result(程式執行後的 結果): true 4) criteria analysis(測試目標的分析 Edge coverage: 測試案例涵蓋的 Edges: 12, 23 test case 2 (測試案例 2) 1) Input values(測試時候需要控制資料的值): i -1 2) expected result(正確的 結果): flase 3) test program's result(程式執行後的 結果): flase 4) criteria analysis(測試目標的分析) Edge coverage: 測試案例涵蓋的 Edges: 12, 24, 45 最少個案例為2個案例 總共涵蓋 Edges: 12 23 24 45 Edge coverage: 100% ============================================================================== ============================================================================== 每個作業的測試目標涵蓋率要到100% (testing criteria coverage 100%) 使用最少個測試案例達到測試目標涵蓋率100% --------------------------------------------- 作業(homeworks): --------------------------------------------- 9/20(碩士) 9/21(碩專): 1)決定分組名單 2)決定小組組長 ------------------------------------------------------------------------------ 9/27(碩士) 9/28(碩專): 1)選定小組作業使用的一個程式語言 2)選定小組作業使用的一個測試工具: 工具必須支援 Unit Testing 工具必須支援 Line Coverage 的統計資料 (i) 測試工具的介紹 (ii) 測試工具功能的說明 ------------------------------------------------------------------------------ 1) Line coverage (使用最少的測試案例達到測試目標涵蓋率100%) duedate 10/4(碩士) 10/5(碩專) --------------------------------------------- 2) graph coverage (Testing-Introduction.ppt p.36) 10/11(碩士) 10/19(碩專) 2-1) Edge Coverage 10/11(碩士) 10/19(碩專) 2-2) Edge-Pair Coverage 10/18(碩士) 10/26(碩專) 2-3) Path Coverage ((1)沒繞過迴圈, (2)有繞過迴圈) --------------------------------------------- 3) Stress Testing coverage 10/25(碩士) 10/26(碩專) (Testing-Introduction.ppt p.50: **先明確定義出程式所用資料的有效範圍** 測試案例: 1)數值的測試案例: (測試有效範圍內 a)極小值 b)極大值) 例如: 有效範圍為 1至50的int 測試案例1: 輸入的值: 1 測試案例2: 輸入的值: 50 例如: 有效範圍為 長度1至500的字串 測試案例1: 輸入的值: 長度 1 的字串 測試案例2: 輸入的值: 長度 500 的字串 2)資料有很多筆的測試案例: (先明確定義有效的筆數) (測試有效範圍內 a)最少筆數 b)最多筆數) 例如: 修課學生人數限制: 1至200 測試案例1: 輸入的值: 修課學生人數 1 測試案例2: 輸入的值: 修課學生人數 200 3)無效值的測試案例: (超過限制 不是有效範圍的資料) 例如: int的無效值: float char Null ... 例如: 長度1至500字串的無效值: 長度0的字串 長度501的字串 ... 例如: 修課學生人數限制1至200的無效值: 修課學生人數0 修課學生人數201 ... --------------------------------------------- 4) Logical Expressions coverage (Testing-Introduction.ppt p.62: (the number of clauses > 1) 範例的條件 判斷式至少包含兩個子句(子條件 clauses) 11/8(碩士) 11/9(碩專) 4-1) Predicate Coverage (整個條件判斷式的 True False 都要測試過) 11/8(碩士) 11/9(碩專) 4-2) Clause Coverage (每個子條件的 True False 都要測試過) --------------------------------------------- 4) Logical Expressions coverage (Testing-Introduction.ppt p.62: 11/15(碩士) 11/16(碩專) 4-3) Combinatorial Coverage(各種可能的排列組合) (每個子條件 True False 的全部排列組合 都要測試過) ============================================================================== --------------------------------------------- 11/22(碩士) 11/23(碩專) 5) Input Domain Characterization (Testing-Introduction.ppt p.65: 先根據資料的特性 分成幾個不同的類別 幾筆資料 可以分成三個類別: 0筆, 1筆, 多筆(>1) 5-1) categorization (每個類別 都要測試過) 5-2) Combinatorial (各種類別的 全部排列組合 都要測試過) --------------------------------------------- 11/29(碩士) 11/30(碩專) 6) mutation testing coverage Testing-Introduction p66 原本程式 每個敘述(statement) 分別做一次變異(mutation) 每一次變異(mutation): a)只改原本程式的一個敘述(只改一個statement) 來得到 一個變異程式 b)找出一個合適的測試案例使得 原本程式跟變異程式的 執行結果不同 --------------------------------------------- 12/6(碩士) 12/7(碩專) 7) Equivalence partition (Valid Invalid) Software Testing UT12 p27 先根據資料的特性(例如 帳號 密碼) 清楚列出 有效跟無效的條件 根據有效條件跟無效條件來挑選合適的測試案例: a)有效值只測試一次 b)無效值:每次測試只包含一個無效條件 每個無效條件都要分別測試過 --------------------------------------------- 12/13(碩士) 12/14(碩專) 8) Boundary value 邊界值測試 Software Testing UT12 p28 測試有效範圍的邊界值跟邊界附近值: 每一個邊界值跟邊界附近值都要測試過 例如: 整數有效範圍[10 100]: 測試值 9,10,11 99,100,101 浮點數有效範圍[-1.0 +1.0]: 測試值 -1.001,-1.0, -0.999 0.999, 1.0, 1.001 (假設精準度0.001) 資料有效的筆數: [0 N]筆 測試案例的資料筆數: 0, 1, N-1, N, N+1 筆 ==================================================== 12/20(碩士) 12/21(碩專) 期末考試 遲交成績打八折 最後繳交期限 12/26(八折) --------------------------------------------------- 12/27(碩士) 12/28(碩專) 期末小組 專題報告 1)準備8分鐘口頭報告 2)口頭報告資料必須事先準備存在隨身碟 ,以免拖延報告時間 3)口頭報告資料 12/26(碩士) 12/27(碩專) 以前上傳到 tronclass 沒上傳專題報告資料的小組就沒有專題報告分數 4)每位同學都需要上台報告 不能上台報告的同學依照正常手續請假 未請假不能上台報告的同學 小組專題成績打七折