有一類BUG,不是功能性的,在用戶使用過程當中也不會遇到,可是一些測試用例仍是會覆蓋到,固然也有不改的,由於不會對用戶有什麼影響。java
分享一個「BUG」,用戶的VIP到期時間最大隻能到2038年的某一天。mysql
場景就是在用戶不斷地購買VIP時,在2038年某一次購買失敗。sql
業務場景以下:用戶購買一個月VIP,VIP到期時間日後延長30天,若是以前不是VIP,當前時間戳日後延長30天,花費若干。數據庫
當時設計測試用例爲了驗證系統的交易風險控制中的額度控制和購買VIP整個流程的穩定性驗證,寫了一個for循環,一直在不停地購買VIP。編程
數據庫存儲比較簡單,每一個用戶(若是存在)都有一條記錄,用來記錄用戶VIP狀態,字段也簡單,就是記錄用戶VIP的到期時間以及其餘信息。購買記錄和交易記錄都在另外的表存儲(跟這個「BUG」沒有關係)。框架
BUG緣由:在存儲時間戳時,使用的int類型表示到期時間,mysql int 有符號位支持的最大長度是 2147483647;既2038-01-19 11:14:07(北京時間) 已經達到了最大存儲值,致使沒法保存正確的時間。工具
解決方案:就當不存在。性能
雖然是無意插柳發現的「BUG」,也並無解決掉,可是依然以爲很是有趣。測試