有自动化内存泄漏测试的最佳方法吗?

时间:2010-02-27 10:40:55

标签: memory-leaks continuous-integration automated-tests

我们正在自动化大多数可以自动化的已知问题(用于回归测试)。但是,我们确实通过第三方软件发现内存泄漏。但是,我不知道自动化我们发现并修复它们的内存泄漏测试的方法。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

一般来说,最好的方法是只做你认为导致泄漏的事情,并且,只看内存上升。

但是,当然,你需要测试在那段时间内“无所事事”,也不会导致内存上升。

由于这一点,以及追踪泄漏(特别是第三方软件)的一般混乱的复杂性,为它编写自动化测试可能非常困难。

这取决于你的环境,真的。也许有可能建立一个总是从头开始的环境(即虚拟机),但可能无法实现。

就个人而言,我有一个单独的,但仍然是部分自动化的系统,用于检测泄漏,并“经常”运行它。如果它是第三方,您只需要在添加新版本的软件时执行此操作。

答案 1 :(得分:0)

长时间运行程序时内存泄漏变得很明显。为长时间运行的测试设置测试机器,程序启动一次,然后运行几天,无需重启。有一组定义的回归测试,一遍又一遍地执行。当内存消耗达到某个阈值时,测试被视为失败。

示例:对于Web应用程序,您启动它,然后反复启动回归测试(模拟用户输入)几天。编写这些测试脚本并将其添加到持续集成环境中。

这是一种与通常的回归测试不同的方法,您只需为每个测试或测试套件启动一次该程序。

答案 2 :(得分:0)

有些工具确实可以轻松检测内存泄漏(如valgrind)

您可以做的是模拟程序中的“密集”输入(通过脚本shell)并解析valgrind的结果以查看是否存在任何内存泄漏。您也可以自己使用它(并且很长一段时间)。 Valgrind将在程序结束时告诉你是否有任何内存泄露(甚至泄漏的地方大致!)