发信人: frenger(frenger) 
整理人: xiange(2004-03-09 17:28:15), 站内信件
 | 
 
 
從小喜歡看偵探小説、電影,也幻想過自己做了偵探去破案。最近更喜歡上看CSI,看他們現場取證,抽絲剝繭找到真兇。
 
 我們的測試已經如火如荼,從中也發現不少問題,一些新的程序員第一次參與這樣大規模嚴謹的測試,遇到問題不是太懂得去查錯,於是特別寫了一些粗淺的經驗和他們分享。一些簡單錯誤的查錯就不記載了,對一些複雜的系統批量處理錯誤的差錯方法覺得有必要寫到日記中,下個項目遇到同樣的情況就不必再寫了。
 
 節選如下:
 
 4、系統批量處理複雜的錯誤(例如:數據關係錯誤、複雜的計息處理、複雜報表數據錯誤、BACK DAY複雜處理、複雜的邏輯處理等等)
    這一類錯誤是最頭疼的,主要原因是:
  - 在開發環境不能模擬,不能找到足夠的信息進行查錯
  - 与聯機數據的產生有複雜關係,需要追查多個交易產生的數據
  - 特殊會計日期或者多個步驟累積產生了錯誤,查錯無從入手
  
    對付這些問題,我一般採取以下的方法:
 •	 盡量收集錯誤的信息,收到PROBLEM LOG,馬上聯係測試人員了解錯誤的具體細節(相當於查案時候找到目擊證人了解情況) 
 •	 盡快把當天系統批量運行的OUTPUT QUEUE整理,COPY到自己的機器,進行詳細的分析(相當於現場取證、還有回去之後化驗,注意:現場和我們的OUTPUT QUEUE一樣,不盡快取證,就會定期被刪除) 
 •	 接下來就是對得到的信息進行分析,從結果往前推,不能放過任意的疑點,哪怕是寫程序時自己很肯定的地方(相當於警探根據化驗結果進行推論、驗證) 
 •	 有可能的話,自己在開發環境模擬數據進行測試(相當於案例重演) 
 •	 不能模擬數據的時候,對特殊的程序可以採用重新讀程序的方法,從輸入的數據開始,自己模擬電腦走一遍程序的分支(相當於犯罪心理學家的犯罪分析) 
 •	 最後還不能定位的時候,就要在程序的關鍵地方留下一些DEBUG的處理,可以下次出錯的時候生成一些希望得到的信息;同時,要重新設定一些一樣或者類似的CASE,以便錯誤再次發生(相當於派臥底切查) | 
 
 
 |