3

我被要求评估我们是否可以在我们的一个生产部署的 web 应用程序上安全地升级 java 版本。代码库相当大,我们希望避免对所有内容进行回归测试(遗憾的是没有自动化测试),但我们在一些手动测试期间已经遇到了至少一个问题(XmlStringReader.getLocalName 现在会在它刚刚返回时抛出 IllegalStateExeption null) 和上级对升级非常紧张。

当前建议的方法是对每个版本的 JDK 源进行源比较并评估这些更改以查看哪些更改可能会产生影响,但似乎需要进行很多更改(并且如上所述,代码库有点大) . 仅查看每个版本的 java 版本更改是否安全且容易?或者有没有更简单的方法来进行这种评估?

编辑:我忘了提到正在考虑的版本升级是次要版本升级,即 1.6.10 到 1.6.33

4

2 回答 2

6

没有什么可以替代在真实系统中对其进行测试。您可能能够在错误报告或目视检查中发现一些明显的东西,但是由于更复杂的交互而检测到更改是不可能的。甚至检测看似简单的更改,这些更改会改变 GC 如何影响您正在运行的应用程序或热点如何优化您的代码(您也在检查 c++ 代码,对)或某些关键算法的执行方式......

于 2012-08-29T03:29:29.627 回答
1

正如@jtahlborn 所说:没有什么能代替正确地测试它。

我会更进一步并指出,如果没有自动化,那么这是成本,您将一次又一次地发生。

正确答案是

  1. 定义回归
  2. 运行它(验证它)
  3. 尽可能自动化

一个更简单的方案是简单地运行它并在您或您的客户找到时间时捕获错误。我个人认为这是让开发人员、经理和客户失去动力的好方法。我强烈建议您不要使用这种方法。

于 2012-08-29T03:47:22.200 回答