一、前言
在前一天,我們已經將健康紀錄輸入、資料儲存、歷史紀錄查詢及健康儀表板整合成一個可以操作的系統初版。
不過,程式能夠順利執行,並不代表所有功能都沒有問題。實際使用時,使用者可能會輸入不同的數值、重複填寫同一天的紀錄,或是遇到資料不完整的情況。
因此,今天的學習重點是透過模擬實際使用情境,建立測試資料,逐一確認系統的功能是否符合原本的設計需求。
二、今日學習目標
了解軟體測試的基本概念。
建立健康習慣追蹤系統的測試案例。
模擬不同使用者輸入情境。
檢查新增、儲存及查詢功能是否正常。
驗證統計數值與圖表是否正確。
記錄測試結果,找出需要改善的問題。
三、認識系統測試
系統測試是透過不同的操作情境,確認程式是否能依照預期執行。
以健康習慣追蹤系統為例,不能只測試正常輸入的情況,也需要考慮一些可能發生的問題。
例如:
使用者輸入正常的喝水量與睡眠時間,資料是否能成功儲存?
使用者重複新增同一天的紀錄,系統是否能阻止?
使用者查詢沒有資料的日期範圍,畫面是否能正常顯示?
使用者尚未建立任何紀錄時,儀表板是否會發生錯誤?
系統計算的平均值是否與實際資料一致?
這些測試可以幫助我們確認系統不只是能夠執行,也能夠應付不同的使用情境。
四、建立測試案例
首先,依照目前系統的功能,整理出幾個需要測試的項目。

透過測試案例,可以讓測試過程更有方向,也能避免只憑主觀感覺判斷系統是否正常。
五、建立模擬測試資料
為了確認統計功能是否正確,可以先準備幾筆測試資料。
建立一個名為 test_data.py 的檔案:
import pandas as pd
test_records = [
{
"date": "2026-10-20",
"water_ml": 1800,
"sleep_hours": 7,
"exercise_minutes": 30,
"vegetables_fruits": True,
"notes": "散步與正常飲食"
},
{
"date": "2026-10-21",
"water_ml": 2000,
"sleep_hours": 8,
"exercise_minutes": 45,
"vegetables_fruits": True,
"notes": "進行有氧運動"
},
{
"date": "2026-10-22",
"water_ml": 1500,
"sleep_hours": 6,
"exercise_minutes": 0,
"vegetables_fruits": False,
"notes": "休息日"
},
{
"date": "2026-10-23",
"water_ml": 2200,
"sleep_hours": 7.5,
"exercise_minutes": 60,
"vegetables_fruits": True,
"notes": "進行重量訓練"
},
{
"date": "2026-10-24",
"water_ml": 1900,
"sleep_hours": 6.5,
"exercise_minutes": 20,
"vegetables_fruits": True,
"notes": "短時間運動"
}
]
df = pd.DataFrame(test_records)
df.to_csv(
"test_health_records.csv",
index=False,
encoding="utf-8-sig"
)
print("測試資料建立成功!")
print(df)
這段程式會建立五筆不同日期的健康紀錄,並將資料儲存成 test_health_records.csv。
測試資料包含不同的喝水量、睡眠時間與運動時間,方便觀察系統是否能正確呈現不同的數值。
注意: 這是獨立的測試資料檔案,不會直接覆蓋原本的 health_records.csv,避免測試過程影響原有紀錄。
六、驗證統計結果
接下來,使用 Pandas 計算測試資料的平均值,確認系統的統計邏輯是否正確。
import pandas as pd
df = pd.read_csv("test_health_records.csv")
avg_water = df["water_ml"].mean()
avg_sleep = df["sleep_hours"].mean()
avg_exercise = df["exercise_minutes"].mean()
print("平均喝水量:", avg_water, "ml")
print("平均睡眠時間:", avg_sleep, "小時")
print("平均運動時間:", avg_exercise, "分鐘")
依照前面建立的五筆測試資料,預期結果如下:

如果程式輸出的結果與表格一致,就代表這組測試資料的平均值計算符合預期。
這個步驟也能幫助我們確認儀表板上的統計結果是否正確,而不是只確認圖表有沒有成功顯示。
七、模擬不同使用情境
完成測試資料後,接著回到 Streamlit 網頁,實際操作系統。
進入「新增健康紀錄」,輸入一筆尚未存在的日期,填寫喝水量、睡眠時間、運動時間及其他欄位。
按下儲存後,確認系統是否顯示成功訊息,並檢查 CSV 是否出現新增資料。
使用剛才已經儲存的日期,再次新增一筆資料。
預期系統會顯示重複紀錄提醒,而不會將資料再次寫入。
進入「歷史紀錄查詢」,調整開始日期與結束日期。
確認系統是否只顯示指定範圍內的紀錄,並且依照日期由新到舊排列。
進入「健康儀表板」,確認以下內容:
平均喝水量是否正確。
平均睡眠時間是否正確。
平均運動時間是否正確。
每日喝水量折線圖是否正常。
每日睡眠時間折線圖是否正常。
每週運動時間長條圖是否正常。
如果希望測試空白資料的顯示方式,可以暫時使用另一個空白資料環境,或先備份原本的 CSV,再測試沒有紀錄時的畫面。
預期系統應該顯示提示訊息,而不是出現程式錯誤。
八、記錄測試結果
測試完成後,將實際結果整理成表格。

這份表格可以作為專案測試紀錄,也能在後續成果展示時,說明系統經過哪些驗證。
如果某個項目沒有通過測試,就應該記錄錯誤發生的情況,並在下一階段進行修正。
九、今日成果與學習心得
今天的學習重點,是從單純開發功能轉變成驗證功能。
透過建立模擬資料,我們可以在不依賴真實使用者資料的情況下,測試系統是否能正確處理不同的健康紀錄。
此外,也學習到測試不只是確認程式有沒有出現錯誤,更重要的是確認輸入、儲存、查詢與統計的結果是否符合預期。
例如,即使儀表板成功顯示平均喝水量,如果計算結果與原始資料不一致,仍然代表系統存在需要修正的問題。
因此,測試資料與預期結果的比對,是確認系統正確性的重要步驟。
十、下一步學習方向
明天將進入 Day 27,主要任務是改善使用者介面。
目前系統已經具備基本功能,但仍可以進一步調整頁面排版、文字說明、欄位配置及視覺呈現方式,讓使用者更容易理解每個功能,也能更直覺地完成健康紀錄。
今日總結:透過建立測試資料、驗證統計結果與模擬使用情境,確認健康習慣追蹤系統初版的基本功能是否符合預期,並為後續介面改善與成果展示建立測試基礎。