Memory leaks 有没有最好的方法来自动化内存泄漏测试?

Memory leaks 有没有最好的方法来自动化内存泄漏测试?,memory-leaks,continuous-integration,automated-tests,Memory Leaks,Continuous Integration,Automated Tests,我们正在自动化大部分已知问题(用于回归测试),这些问题可以自动化。然而,我们确实发现内存泄漏通过第三方软件。但是,我不知道如何自动执行我们发现并修复的内存泄漏测试 对此有什么建议吗?一般来说,最好的方法是只做您认为会导致泄漏的事情,并且,好吧,注意内存只会增加 但当然,你需要测试在这段时间里什么都不做,也不会导致记忆增加 由于这一点,以及追踪漏洞(尤其是在第三方软件中)的复杂性质,为其编写自动测试可能非常困难 这取决于你的环境,真的。也许可以构建一个总是从头开始的环境(即虚拟机),但这可能是不可

我们正在自动化大部分已知问题(用于回归测试),这些问题可以自动化。然而,我们确实发现内存泄漏通过第三方软件。但是,我不知道如何自动执行我们发现并修复的内存泄漏测试


对此有什么建议吗?

一般来说,最好的方法是只做您认为会导致泄漏的事情,并且,好吧,注意内存只会增加

但当然,你需要测试在这段时间里什么都不做,也不会导致记忆增加

由于这一点,以及追踪漏洞(尤其是在第三方软件中)的复杂性质,为其编写自动测试可能非常困难

这取决于你的环境,真的。也许可以构建一个总是从头开始的环境(即虚拟机),但这可能是不可能的


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

当您长时间运行该程序时,内存泄漏会变得很明显。为长时间运行的测试设置测试机,程序启动一次,然后运行几天而不重新启动。拥有一组定义的回归测试,这些测试会反复执行。当内存消耗达到某个阈值时,测试被视为失败

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


这是一种不同于常规回归测试的方法,在回归测试中,每个测试或测试套件只启动一次程序。

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

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