昨天確認了每筆支出可以指定參與者,今天再往前一步:即使大家都有參與,也不一定應該付一樣多。有人點的餐比較貴,有人只吃小點心,這時候平均分攤就不一定符合大家的約定。
今天的目標,是驗證原型既有的自訂金額功能。使用者可以直接填每個人應負擔多少,但所有人的合計必須等於這筆支出,不能因為改成手動輸入,就讓金額多出來或少一部分。
我先使用 1,200 元的晚餐測試,由小明代墊,三個人都參與。原本平均分攤是每人 400 元,改成自訂後,這次希望小明負擔 500 元、小美 300 元、阿哲 400 元。這裡填的是每人的消費負擔,不是最後要轉帳的金額。
切換到自訂模式後,畫面要求填好每位選取成員的金額,沒有把空白直接當成零。空白代表尚未填寫,零則是明確指定不負擔金額。兩者分開處理,能避免漏填一個人時,系統仍然產生看似完整的結果。
第一個錯誤案例是填入 500、300、300 元,合計只有 1,100 元。畫面顯示還差 100 元,按下儲存後也會提示,自訂分攤的加總必須等於總金額。接著把最後一位改成 500 元,合計變成 1,300 元,畫面顯示超出 100 元,同樣不能儲存。
這些提示的作用,是讓使用者知道差多少,而不只是告訴他「填錯了」。系統也沒有自行把差額加到某一人身上,因為自訂金額代表使用者的決定,應該先修正到合計正確,再繼續結算。
我們也測試了負數、小數與文字輸入。這些內容都被拒絕,表單保持開啟,讓使用者可以繼續修正。目前自訂份額接受的是零或正整數元,不包含折扣負數、比例或百分比計算。
把金額修正為 500、300、400 元後,畫面顯示已分配 1,200 元,剛剛好,並成功儲存。支出清單也清楚標示為自訂分攤,列出三個人的金額。重新開啟編輯時,這些值仍然保留,不需要重新輸入。這是當前頁面中的編輯狀態,並不代表重新整理後也能保存。
加入原本的咖啡與車資後,整本帳總額仍然是 1,830 元。小明應分攤 757 元、小美 557 元、阿哲 516 元,考慮各自的代墊後,小美付小明 277 元,阿哲付小明 166 元,小明收回 443 元。平均與自訂支出可以一起結算,但每筆必須先依自己的規則分配。
接著測試零元份額,把晚餐改為小明 900 元、小美零元、阿哲 300 元。合計仍是 1,200 元,因此可以儲存。這個例子主要用來驗證邊界規則,不代表系統會替大家決定誰應該被免除費用。
這次整本帳的結果是小明應收 43 元、小美應收 23 元、阿哲應付 66 元。小美在晚餐負擔零元,但她仍有其他支出的負擔與代墊,所以最終結算必須從整本帳計算,不能只看晚餐的欄位。
我也檢查了取消修改。把小明的份額暫時改成 1,000 元後按取消,支出仍維持原本的 900、零、300 元。接著切回平均分攤並儲存,晚餐恢復每人 400 元,整本帳也回到小明應收 543 元、小美應付 377 元、阿哲應付 166 元。已儲存的自訂值沒有干擾這次平均分攤結果。
計算模組部分,今天共執行十三項測試,全部通過。包含不等額、零元份額、付款人不參與、未選成員的舊值不計入,以及合計不足、超額、負數、小數、缺值、字串、非數值與超過上限等情況,也核對了自訂與平均支出混合後的結算。
其中,未選成員的資料即使還保留舊金額,也不應該被納入本筆分攤。這項今天是在計算模組驗證,沒有把它寫成已完成取消勾選的瀏覽器操作測試。每個測試做到了哪一層,需要在紀錄裡說清楚。
瀏覽器部分完成十一個檢查點:空白阻擋、不足提示、超額提示、三種無效輸入、修正後儲存、重新開啟保留值、零元份額、取消修改,以及切回平均分攤。選定流程都符合預期,但尚未涵蓋所有輸入組合、裝置或輔助工具。
今天沒有修改產品程式,也沒有提交或發布新版,而是驗證既有自訂分攤功能。資料保存、現金找零、比例分攤與負數折扣,都不在本日完成範圍內。
這次讓我發現,讓使用者自由填金額,也需要更清楚的檢查。哪些欄位還沒填、目前差多少、取消後是否保留原資料,都和最後算出的答案一樣重要。下一天會聚焦淨額抵銷,理解多筆互相代墊之後,付款清單是怎麼整理出來的。