2010-03-24 31 views
0

我將創建一個典型的業務應用程序,將由幾百名顧問使用。通常情況下,顧問會收到一條帶有標準文本的錯誤消息。由於應用程序將會是一個複雜的應用程序,並且會不斷進行大量更改,因此我需要以下內容:「重放」重新創建錯誤所需的步驟

當出現錯誤消息時,用戶可以選擇將錯誤消息「發送」給開發人員。開發人員應該能夠在Eclipse中打開傳入文件,並逐步調試最後10分鐘工作的步驟(如果他們願意,一次一行)。一切都應該是透明的,這意味着他們應該能夠看到調用數據庫的返回值。

今天有沒有解決方案提供這樣的功能,我的首選語言是Python或Java。我知道由於這種功能會有巨大的性能下降,但這是可以接受的,因爲這種軟件對性能不敏感。

如果數據庫還有一個編目,這樣就可以查詢數據庫中的值,該值在應用程序中運行特定代碼行時確實存在,從而導致該錯誤。

回答

1

您應該嘗試使用記錄,例如從數據庫提交日誌並記錄用戶與應用程序的交互,如果它是一個Web應用程序,則可以從Web服務器的日誌文件開始。確保日誌文件包含所有提交的數據,例如帶參數的完整GET url和帶實體正文的POST。您可以將Web服務器配置爲在需要時生成此類日誌。

然後,您構建一個測試客戶端,可以解析日誌文件並重新創建導致問題出現的所有用戶交互。如果您懷疑競爭條件,則應該以高精度(毫秒分辨率)進行記錄,並確保測試客戶端可以一遍又一遍地運行相同的序列以強調這些關鍵部分。

重播(正如您的標題所示)是重現錯誤的最佳方式,只是收集重新生成特定狀態/情況的輸入所需的所有數據。不要關注內部結構和返回值,當涉及到查找錯誤或錯誤時您不應以法醫模式工作,例如試圖通過分析故障來分析故障原因,您應該一次又一次地使飛機墜毀,並添加越來越多的日誌記錄/或使用調試器,直到您知道出現故障。