我们正在自动化大多数可以自动化的已知问题(用于回归测试)。但是,我们确实通过第三方软件发现内存泄漏。但是,我不知道自动化我们发现并修复它们的内存泄漏测试的方法。
有什么建议吗?
答案 0 :(得分:3)
一般来说,最好的方法是只做你认为导致泄漏的事情,并且,只看内存上升。
但是,当然,你需要测试在那段时间内“无所事事”,也不会导致内存上升。
由于这一点,以及追踪泄漏(特别是第三方软件)的一般混乱的复杂性,为它编写自动化测试可能非常困难。
这取决于你的环境,真的。也许有可能建立一个总是从头开始的环境(即虚拟机),但可能无法实现。
就个人而言,我有一个单独的,但仍然是部分自动化的系统,用于检测泄漏,并“经常”运行它。如果它是第三方,您只需要在添加新版本的软件时执行此操作。
答案 1 :(得分:0)
长时间运行程序时内存泄漏变得很明显。为长时间运行的测试设置测试机器,程序启动一次,然后运行几天,无需重启。有一组定义的回归测试,一遍又一遍地执行。当内存消耗达到某个阈值时,测试被视为失败。
示例:对于Web应用程序,您启动它,然后反复启动回归测试(模拟用户输入)几天。编写这些测试脚本并将其添加到持续集成环境中。
这是一种与通常的回归测试不同的方法,您只需为每个测试或测试套件启动一次该程序。
答案 2 :(得分:0)
有些工具确实可以轻松检测内存泄漏(如valgrind)
您可以做的是模拟程序中的“密集”输入(通过脚本shell)并解析valgrind的结果以查看是否存在任何内存泄漏。您也可以自己使用它(并且很长一段时间)。 Valgrind将在程序结束时告诉你是否有任何内存泄露(甚至泄漏的地方大致!)