Re: [請益] 難以偵錯的問題

看板Soft_Job作者 (華麗的天下無雙)時間12年前 (2012/06/02 23:35), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串3/5 (看更多)
※ 引述《yauhh (喲)》之銘言: : 至於,資料看起來隨機出現一些改變,通常不會是隨機,而是程式中隱含了一些你 : 沒有想到的規則,使資料誤植生效. : : : 是Java程式,可以準備一些業務中會遭遇的資料,並將程式單元拆出來用JUnit或 : 簡單的assert檢測檢測. 細處著手,應該過得去的. : : 祝 : 完成工作. : : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 218.160.110.179 : 推 atpx:請問這些檢測方式或工具, 有沒有建議的網頁能夠參考? 06/02 20:30 : → andymai:JUnit和assert都是可以google的關鍵字啊~不是嗎??? 06/02 21:28 首先你必須釐清是系統問題還是程式問題。 你說這個事件是隨機發生的,那麼你就必須先降低事件的隨機性,固定變數。 最終目的是能夠穩定的Reproduce這個問題,才能夠去解決問題。 1.使用一模一樣的測試資料,輪流依序測試多次 你必須要選擇測試範圍,你可以透過JUnit Framework重複執行同樣的測試程式碼 去檢測資料,或者是透過Selenium從UI重複輸入一樣的資料,當然,驗證的部分 也要自動化。通過驗證以後,把資料清除再重複驗證。 重複測試很多次以後,如果單元測試沒錯,整合測試有錯,那表示是你的環境問題。 如果單元測試有錯,整合測試也有錯,那麼就是你程式碼的問題,是不是隱含了某種 程度的隨機性。 如果單元測試有錯,整合測試沒錯...那...應該是你的測試程式寫錯 2.如果以上的狀況都沒錯,那開始邊界值測試輪流測試 分析你的程式碼,找到所有邏輯條件的邊界值依序進行整合或單元測試。測試方法 同上,看看會不會有穩定的錯誤發生。 3.如果以上都還是沒錯,開始隨機性測試,用開發好的隨機資料產生工具產生無數的 隨機資料輪流測試(通常如果你第二階段的邊界值測試做得好,那這測試通常不必要) 4.依序資料的測試如果完全沒有發生錯誤。那你必須考慮這是不是效能問題、記憶體 問題或是同步問題。開始設計多執行緒資料測試,將以上三種資料準備法採用多執行 緒方式進行測試,你可以使用JMeter設計壓力測試流程(Google 有JMeter的Plug-in, 可以做遞增的壓力測試),如果你想把UI包括在測試範圍裡面,用Selenium-Grid做 分散式測試,不過理論上,若是資源問題,不需要把Web UI考慮到範圍內,因為 不同機器的瀏覽器之間不存在資源問題。 5.做到第四個程度,理論上就應該會發生問題了,因為這已經完全模擬用戶送出去的 Request,不可能用戶會發生但是你的測試不會發生...真的有這種事的話,那也真是 見鬼了。假設在第四個步驟終於發生錯誤,記得把所有介面呼叫、物件建立的程式碼 前後全部Log下來,加入Assert檢查預期值與實際值,看看到那個環節的前後會發生錯 誤。用Log4j 6.這時你應該就可以釐清出問題的段落,並且能穩定的Reproduce問題,才有辦法繼續 往後解決問題。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.181.113.203 ※ 編輯: derekhsu 來自: 175.181.113.203 (06/02 23:37) ※ 編輯: derekhsu 來自: 175.181.113.203 (06/02 23:37)

06/04 00:01, , 1F
感謝指導, 這些工具名稱給了我很多方向
06/04 00:01, 1F

06/04 00:11, , 2F
就照他文章所寫的, 有沒有結果都請回文一下吧.
06/04 00:11, 2F

06/04 00:11, , 3F
看一下這樣肉肉等的一堆工具用完後有沒有比較強
06/04 00:11, 3F

06/04 00:14, , 4F
沒問題, 給我一點時間. 這些東西都沒聽過, 得先做功課
06/04 00:14, 4F

06/04 00:29, , 5F
你有用Spring沒有用jUnit?
06/04 00:29, 5F

06/04 07:32, , 6F
原來你沒用過的哦, 要是急的話, 你就請derekhsu 去幫
06/04 07:32, 6F

06/04 07:32, , 7F
你用哪堆工作來reproduce 一下, 你就順便在旁學習比較快
06/04 07:32, 7F

06/04 07:34, , 8F
也是免得, 你使用不當, 無法reproduce.
06/04 07:34, 8F
文章代碼(AID): #1FoZBR4D (Soft_Job)
文章代碼(AID): #1FoZBR4D (Soft_Job)