切換太快,畫面顯示到別筆資料
競態條件:慢的查詢晚回來蓋掉快的。症狀是偶發、越快越容易出現、重整就好;驗收要快速連續切換才測得到。
定義:競態條件=兩個查詢同時在跑,慢的那個晚回來,把快的結果蓋掉。典型症狀:列表頁快速連點兩筆資料,畫面標題是 A 筆、內容卻是 B 筆。
症狀特徵(怎麼認出它)
- 不是每次都發生。
- 越快速操作越容易出現。
- 重新整理就好。
這種「抓不太到的偶發 bug」通常就是競態。看到符合這三條的回報,可以直接朝這個方向懷疑。
為什麼會發生
使用者切到 B 筆時,A 筆的查詢還在路上。網路回應的順序不保證跟發出的順序一樣——A 的回應晚到,就把 B 的畫面蓋掉了。
解法(AI 當時怎麼解)
雙保險:切換時①主動取消上一個還在跑的查詢;②就算取消失敗,過期的回應回來也會被標記丟棄,不准更新畫面。
驗收方式(特別)
要「快速連續切換」地操弄系統才測得出來,正常速度點是測不到的。之後所有「列表→詳情」的功能都要加這條驗收。