案例設計需求

有一個ATM取款系統,現對於取款功能進行了如何需求變更:碑只能取面額是100元(如取500,輸出5張100元),現在功能修改為,可以取面額是10元、50元和100元的,其餘功能不變,使用者介面也沒有任何變化,取款原則為“最優吐鈔法”,有大額先吐大額,請根據需求變更進行案例設計。

參考測試用例

大額優先:

  1. 剛好整百的金額,吐出N張100元的
  2. 剛好為50元,吐出1張50元
  3. 剛好是50以內的整10元,吐出N張10元
  4. 取款金額是N百超過50元,吐出N張100元,1張50元,(M-5)張10元。例如380元,會吐出3張100元,1張50元,8-5張10元
  5. 如果是幾十元,同時超過50元。那麼會吐出1張50元,M-5張10元
  6. 取款金額是N百幾十元,不超過50的,那麼會吐出N張100元,M張10元

沒有大額了:

  1. 如果沒有50元了,那麼會吐出N張100元,M張10元
  2. 如果沒有100元,有50元,那會出吐出2N張50元,十位部分。如果十位部分不足50元,則會吐出M張10元。如果超過50元,則會吐出2N+1張50元,M-5張10元
  3. 如果100元和50元的都沒有了,那麼會吐出全額的10元
  4. 如果100元的不夠用,會優先吐出全部的100元,再用50元進行折算
  5. 如果100元和50元都不夠用了,會優先吐出全部的100元和50元,最後用10元的填補

無效場景:

  1. 錢不夠了,無論是哪一種不夠,這時候會報錯說取款機餘額不足
  2. 使用者輸入金額不正確,即有個數,那麼也會報錯使用者輸入不正確
  3. 使用者未輸入,提示報錯