我們正在自動化大多數可以自動化的已知問題(用於迴歸測試)。但是,我們通過第三方軟件發現內存泄漏。但是,我不知道如何自動化我們找到並修復它們的內存泄漏測試。有沒有最好的方法來自動化內存泄漏測試?
有沒有關於它的建議?
我們正在自動化大多數可以自動化的已知問題(用於迴歸測試)。但是,我們通過第三方軟件發現內存泄漏。但是,我不知道如何自動化我們找到並修復它們的內存泄漏測試。有沒有最好的方法來自動化內存泄漏測試?
有沒有關於它的建議?
一般來說,最好的辦法是隻做那些你認爲會導致泄漏的事情,而且,看着記憶力只會上升。
但是當然,你需要測試在那段時間內「沒有」,也不會導致內存上升。由於這個原因以及跟蹤泄漏(特別是在第三方軟件中)通常令人困惑的複雜性質,爲其編寫自動化測試可能相當困難。
這取決於你的環境,真的。也許可以構建一個始終從頭開始的環境(即虛擬機),但這可能是不可能的。個人而言,我會有一個獨立的,但仍然部分自動化的系統來檢測泄漏,並且「每隔一段時間」運行一次。如果是第三方,則只需在添加新版本軟件時執行此操作。
長時間運行程序時,內存泄漏會變得很明顯。爲長時間運行的測試設置一臺測試機,程序啓動一次,然後運行幾天而不需要重新啓動。有一組定義的迴歸測試,一次又一次地執行。當內存消耗達到某個閾值時,測試將被視爲失敗。
示例:對於Web應用程序,您可以啓動它,然後反覆啓動幾天的迴歸測試(模擬用戶輸入)。編寫這些測試腳本並將其添加到持續集成環境中。
這是一種不同於通常的迴歸測試的方法,您只需爲每個測試或測試套件啓動一次程序。
一些工具真正使檢測內存泄漏容易(像Valgrind的)
你可以做的是模擬在你的程序中的「集約型」輸入(通過一個腳本shell)和解析的valgrind的結果,看看是否有有任何內存泄漏。你也可以密集使用它(很長一段時間)。 Valgrind會在程序結束時告訴你是否有任何內存泄漏(甚至大約泄漏的地方)