iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Software Development

測試工程師的上線時間:從分析到實戰的刻意練習系列 第 14

Day 14:設計自助洗衣機的計費系統的測試案例

  • 分享至 

  • xImage
  •  

前言

今天我們來挑戰一個自助洗衣店的計費系統設計,這樣的題目在 TDD(Test-Driven Development)練習中非常實用。通常我們會先撰寫測試案例,再實現對應的功能。不過,這篇文章會更聚焦於如何設計覆蓋率完整的測試案例,並根據需求細化它們。

題目

設計一個自助洗衣機的計費系統,依據不同的洗衣模式和洗衣重量來計算費用:

  • 普通洗衣模式:每公斤衣物 20 元。
  • 快速洗衣模式:每公斤衣物 30 元,時間減半。
  • 重量折扣:洗衣重量超過 10 公斤,享 10% 折扣。
  • 洗衣加烘乾模式:每公斤額外加收 15 元。
  • 環保洗劑:若選擇環保洗劑,固定加收 50 元。

挑戰目標

這次的挑戰是設計一組覆蓋所有條件的測試案例,並確保計費邏輯正確。這是個很好的練習,目標是能在 30 分鐘內完成這些測試設計,藉此熟悉測試案例的撰寫方式及邏輯。


第一版測試案例設計:依據功能需求

這一版是根據系統需求設計出來的測試案例,涵蓋了洗衣模式、重量折扣、烘乾模式及環保洗劑的組合。這類測試更偏向功能驗證,確保系統能正確處理各種常見情況。

測試案例表

測試案例名稱 洗衣模式 洗衣重量 烘乾模式 環保洗劑 預期費用 說明
普通洗衣模式 普通模式 5 公斤 100 元 普通模式,5 公斤衣物,每公斤 20 元,不加其他費用
快速洗衣模式 快速模式 5 公斤 150 元 快速模式,5 公斤衣物,每公斤 30 元
超過 10 公斤折扣 普通模式 12 公斤 216 元 普通模式,超過 10 公斤,享 10% 折扣
普通模式加烘乾 普通模式 5 公斤 175 元 普通模式,5 公斤,加烘乾,每公斤加收 15 元
快速模式加烘乾 快速模式 5 公斤 225 元 快速模式,5 公斤,加烘乾,每公斤加收 15 元
普通模式加環保洗劑 普通模式 5 公斤 150 元 普通模式,選擇環保洗劑,固定加收 50 元
快速模式加烘乾及環保 快速模式 5 公斤 275 元 快速模式,5 公斤,加烘乾及環保洗劑,加收額外費用

分析:

  • 功能覆蓋完整:這版測試案例涵蓋了所有常見組合情況,每個條件都有具體的測試。
  • 容易理解:對於開發者來說,這些測試案例清晰明瞭,適合單元測試。
  • 適合單元測試與驗證:這些測試可以幫助開發人員確認各種功能是否能正確運作,特別適合在功能穩定後進行測試。

第二版測試案例設計:使用等價類別

這一版採用等價類別來設計測試案例,確保系統能應對各種邊界情境。這類測試更偏向健壯性測試,特別適合檢查系統對異常輸入的處理能力。

等價類劃分

洗衣模式

  • 有效等價類
    • 普通洗衣模式
    • 快速洗衣模式
  • 無效等價類
    • 錯誤的洗衣模式(例如:不存在的洗衣模式)

洗衣重量

  • 有效等價類
    • 重量 ≤ 10 公斤
    • 重量 > 10 公斤
  • 無效等價類
    • 負數或 0 公斤(不合理的重量)

烘乾模式

  • 有效等價類
    • 不使用烘乾
    • 使用烘乾
  • 無效等價類
    • 非法輸入(如無效模式的輸入)

環保洗劑

  • 有效等價類
    • 不使用環保洗劑
    • 使用環保洗劑
  • 無效等價類
    • 非法輸入(如無效選項)

測試案例表

測試案例名稱 洗衣模式 洗衣重量 烘乾模式 環保洗劑 預期結果
測試案例 1 普通洗衣模式 5 公斤 不使用 不使用 100 元
測試案例 2 普通洗衣模式 12 公斤 使用 使用 351 元
測試案例 3 快速洗衣模式 -5 公斤 不使用 不使用 錯誤:無效的重量
測試案例 4 快速洗衣模式 12 公斤 無效模式 使用 錯誤:無效的烘乾模式
測試案例 5 無效洗衣模式 12 公斤 使用 使用 錯誤:無效的洗衣模式
測試案例 6 快速洗衣模式 12 公斤 使用 無效選項 錯誤:無效的環保洗劑

分析:

  • 邊界條件測試:透過有效與無效等價類的劃分,這版測試強調對異常情境的測試,能確保系統對錯誤輸入有正確處理。
  • 適合健壯性測試:這些測試能幫助開發者檢查系統在異常條件下的行為,確保系統穩健。

測試案例設計差異

這兩版測試案例差異主要體現在測試的深度和具體性上:

  • 第一版測試案例:根據具體功能需求設計,覆蓋多種常見輸入組合,適合用來驗證系統在正常使用情況下的功能表現。
  • 第二版測試案例:採用等價類劃分,側重於異常情境和邊界條件測試,適合用來檢驗系統的健壯性。

結論

根據需求選擇測試設計的方式非常重要。如果你想確保系統在常見情境下能正確運作,第一版的功能測試更為合適;如果你需要驗證系統的健壯性,特別是在邊界或錯誤情境下,第二版的等價類測試則能提供更深度的保障。

透過這次的練習,你應該能夠掌握如何根據不同需求選擇合適的測試設計方法,並應用在日常的測試開發中。


上一篇
Day 13:使用 pytest 撰寫對 reqres.in 的一個 API 測試案例
下一篇
Day 15:演唱會門票大作戰
系列文
測試工程師的上線時間:從分析到實戰的刻意練習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言