Java 如何检查测试套件在一个环境中运行慢得多的原因

Java 如何检查测试套件在一个环境中运行慢得多的原因,java,junit,teamcity,Java,Junit,Teamcity,我们已配置teamCity,在其上运行构建以进行测试。问题是,当我们在TeamCity上运行时,有两个测试用例(谈论一个具有5-15个测试方法的特定类)几乎需要45分钟 我一直在尝试在本地机器上测试相同的案例,它们不会超过6-7分钟 你们能给我推荐一些最佳实践吗?这些实践可以帮助我找出产生这些测试用例的可能原因?现在,我把日志语句放在每一个有时间戳的地方。还有什么我可以做的吗?我以前使用过YJP(yourkit java profiler)来评测应用程序。我认为在他们让你购买许可证之前的前15天

我们已配置teamCity,在其上运行构建以进行测试。问题是,当我们在TeamCity上运行时,有两个测试用例(谈论一个具有5-15个测试方法的特定类)几乎需要45分钟

我一直在尝试在本地机器上测试相同的案例,它们不会超过6-7分钟


你们能给我推荐一些最佳实践吗?这些实践可以帮助我找出产生这些测试用例的可能原因?现在,我把日志语句放在每一个有时间戳的地方。还有什么我可以做的吗?

我以前使用过YJP(yourkit java profiler)来评测应用程序。我认为在他们让你购买许可证之前的前15天左右是免费的

我想看看这两种环境之间的区别:

  • 它是同一个操作系统和文件系统吗
  • 机器的CPU负载是多少
  • 机器的I/O负载是多少
  • 系统日志中是否出现某些情况,例如(网络或身份验证)超时可能会导致性能严重下降
  • 测试用例是否使用外部资源(例如数据库、网络),这些资源可能与慢速机器所在的位置具有不同的访问路径
  • TeamCity是否会在每次测试后生成大量报告,这可能是缓慢的原因?可能不是实际的testcase执行,而是在测试之间或测试之后执行的另一个操作
  • TeamCity环境是否执行任何未在本地执行的设置或拆卸功能?比如建立一个测试数据库或者删减一个现有的测试数据库
  • 速度慢的机器是集群构建服务器吗?它必须在主服务器和从服务器之间通过有线通信吗?测试是在主设备还是从设备上执行的

另外,您是否也在TeamCity本地运行测试用例?

我已经测试了所有这些东西。最大的提示是TeamCity在其余测试中所用的时间大致相同(目前为5493个测试用例)。所有测试用例在本地机器上运行需要5-10分钟,TeamCity上的所有测试用例都是相同的。然而,这4个特定的测试用例每个都需要45分钟!嗯,了解您的测试用例在做什么会有帮助。第一件事确实是日志记录。下一步是使用JMX控制台,监视VM统计数据,每隔一段时间进行堆栈转储,以查看测试用例当前的位置(采样)