【經典bug分享】【不止是乙份技術貼】【體力發放】
體力發放的bug
描述現象:遊戲有個體力的概念,類似於神仙道的設定,就是每天中午12
點和下午
6點會發放
40點體力,然後檢查到部分賬號沒有發到體力
解決思路:,乙個是
nowtime。就是上一次領取體力的時間和,這一次現在的時間,中間有沒有12
點這個時間和
18點這個時間,如果有的話,就給他發體力。
而這個邏輯確實不應該這樣寫,而缺少的邏輯覆蓋點應該是oldtime
可不可信,是否定時輪詢事件沒有觸發這種問題。
解決辦法:
更換了乙個邏輯,nowtime大於
12點,並且當天沒有領過,就給他發,當出現跨天的情況時,處理跨天的情況。這樣的邏輯減少了不可信的因素,相對來說安全性會更高。驗證後確實是正確的,第二天的體力發放也正常了。
驗證方法:
比如這裡分成兩個層次來考慮:
1、oldtime
和newtime
的設定點前後的資料正確性。
2、直接呼叫介面,手動設定
oldtime
和newtime
,驗證這個邏輯的正確性
延伸拓展:
一般來說,伺服器的架構有通用的處理每天,每週的timer。很多遊戲都是這樣做的,這塊做成通用的邏輯,timer
中的變數是每天自動
reset
的。做系統的程式不需要關心這個,只需要保證這個變數是乙個每日的timer
型別就可以了
而登陸模組會做這種事情,登陸的時候判斷是不是跨天,如果跨天,處理timer。
對於乙個呼叫,無外乎是引數正確和函式正確兩個層面。比如回檔類的問題,那麼測試思維的突破就是測試的驗證點不應該是單純的遊戲中看到的數值,而是這個東西已經被寫到資料庫了。而如何驗證這個東西被寫到資料庫了?這是測試手段和測試方法
其次,我們應該想想,遊戲內有沒有什麼其他東西是每日清除的呢?如果有,那麼必然有模組來處理這樣的型別。那麼完全可以用兩個變數來標記12
點已經領取和
18點已經領取,而這兩個變數是每天會清的,這樣邏輯就簡單了。
SOA不止是一種IT技術
來自微軟的devadoss在本次訪談中指出soa並不僅僅只是一種it技術。在所有web服務標準中,我聽說最讓人沮喪的是ws policy的難產。它會影響2006年的標準體嗎?它的領導者微軟和ibm能夠讓它出台嗎?john devadoss 我希望在標準組織中看到它,但是有很多變數所以很難預期。因此,...
我的第乙份部落格分享
你好,世界 序列張三 李四 嘿,小四兒,寫部落格了沒注意李四的權利 李四愣了一下,說 李四 張三 忙得流血,哪有時間寫。或者流程圖 flow st start 開始e 端 結束op 操作 我的操作cond 條件 確認?st op condcond 是 電子cond 無 運算 關於 序列圖 語法,參考...
經驗分享 乙份產品FAQ文件模版
最新在做乙個新產品上線的準備,包含編寫faq文件的工作,總結了一些小的心得分享給大家,希望做出乙個簡單的faq文件模版方便大家可以隨時套用。這裡首先推薦大家在做產品的時候,把產品所有相關的資料用文件儲存,便於為之後的faq文件編寫做素材積累。那我們現在開始表演什麼是faq?faq是英文frequen...