軟體工作四則運算測試

wangxiaorui發表於2024-04-10

瀋陽航空航天大學
軟體工程第二次作業

院(系): 計算機學院
專 業: 電腦科學與技術
班 級: -
學 號: -
姓 名: -
帶隊教師: -

2024 年 4 月 7 日

作業資訊 瀋陽航空航天大學計算機學院2024軟體工程作業
課程目標 熟悉一個“高質量”軟體的開發過程
作業目標 單元測試練習

請在作業最後部分填寫如下表格記錄本次工作詳細資訊
專案 記錄結果
日期 2024.4.7
開始時間 12:30
結束時間 17:30
編碼行數 100
錯誤數量 0

(1) 請從語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋五個覆蓋標準中(條件組合覆蓋難度較大,鼓勵嘗試,但請謹慎選擇),任選一個標準設計測試用例
在此,我選擇使用判定/條件覆蓋標準設計測試用例,這種測試覆蓋標準主要關注程式決策點(如if語句、switch語句)的條件和它們的結果(真或假)。目標是確保每個判斷點的所有可能結果至少被執行一次。
我將基於四則運算式生成器程式設計測試用例。該程式包含多個決策點,包括年級的選擇(1到6年級)和各年級內部的運算型別選擇(加法、減法、乘法、(對於四到六年級)除法)。我們將專注於“年級選擇”和“一年級內的運算型別選擇”兩個決策點。

  1. 測試目的
    驗證四則運算式生成器是否能夠根據輸入的年級和題目數量,正確地生成符合要求的練習題。
  2. 測試範圍
    年級選擇判斷:確保程式可以根據不同的年級輸入(1-6年級),選擇正確的題目生成邏輯。
    一年級運算型別選擇判斷:驗證對於一年級,程式能夠正確地生成僅包含加法或減法的運算式。
  3. 測試方法
    採用判定/條件覆蓋方法,設計測試用例,確保每個判斷點的所有可能結果至少被執行一次。
  4. 測試用例
    用例 1:年級選擇判斷 - 一年級
    輸入資料: 年級=1, 題目數量=5
    預期結果: 程式生成5個一年級的加法或減法練習題,每個題目的運算數和結果不超過20。
    執行結果:

圖1 測試一執行結果
用例 2:年級選擇判斷 - 二年級
輸入資料: 年級=2, 題目數量=5
預期結果: 程式生成5個二年級的加法和減法混合練習題,每個題目的運算數和結果不超過50。
執行結果:

圖2 測試二執行結果
用例 3:一年級運算型別選擇判斷
輸入資料: 年級=1, 題目數量=10
預期結果: 程式生成10個一年級的練習題,這些題目應隨機包含加法或減法,每個題目的運算數和結果不超過20。此測試用例的目的是觀察生成的練習題中加法和減法的分佈,以驗證程式確實在隨機選擇運算型別。

圖3 測試三執行結果
(2) 請利用自動測試工具對程式進行測試
我將使用Googletest進行測試 。測試覆蓋了四個主要功能:
generate_first_grade(int num)
generate_second_grade(int num)
generate_third_grade(int num)
generate_fourth_to_sixth_grade(int num, int max_value)
同時,測試也覆蓋了輔助函式perform_operation(int a, int b, char op)。
1.測試方法
測試方法採用單元測試,特別是判定/條件覆蓋,以確保所有的分支和條件都被執行到。此外,還透過修改std::cout的緩衝區來捕獲函式的輸出,以便於對輸出內容進行驗證。
2.測試案例
PerformOperation測試:驗證了perform_operation函式對加、減、乘、除四種操作的正確性,包括了除數為零的特殊情況。
年級函式測試:對每個年級生成函式進行了測試,主要檢查生成的問題是否滿足年級規定的數值範圍,以及是否按照預期格式輸出。由於數學問題生成包含隨機元素,因此這部分測試強調手動驗證輸出格式的正確性,並沒有深入到自動驗證計算結果的正確性。
(3) 請將程式執行結果和自動測試分析結果截圖貼上到文件中
圖4 自動測試執行結果一

圖5 自動測試執行結果二
測試結果:所有測試案例均能成功執行。
驗證了題目生成邏輯的正確性,包括運算元的範圍和運算子的適用性。
特別注意到除法操作中除以零的處理,保證了程式的魯棒性。
結論:
透過判定/條件覆蓋測試,我們確認了數學題目生成程式能夠按照各年級的要求正確生成數學題目。測試覆蓋了所有基本操作和年級特定的邏輯路徑,驗證了程式的正確性和魯棒性。

相關文章