2012-08-29 71 views
2

我被要求評估我們是否可以安全地升級我們生產部署的Web應用程序之一的Java版本。代碼庫相當大,我們希望避免迴歸測試所有東西(可悲的是沒有自動化測試),但是在一些手動測試中我們已經遇到至少一個問題(XmlStringReader.getLocalName現在在它用於返回時拋出IllegalStateExeption null),而上級對升級非常緊張。如何評估java版本升級的風險?

當前建議的方法是對每個版本的JDK源進行源比較並評估這些更改以查看哪些可能會產生影響,但看起來有很多更改要經過(並且提到了代碼庫有點大)。查看每個版本的java版本更改是否安全且更簡單?還是有更簡單的方法來進行這種評估?

編輯:我忘了提及的版本升級被認爲是一個小版本升級,即1.6.10到33年6月1日

+9

瀏覽JDK源代碼聽起來很瘋狂。你如何確定一個源變化是否會影響你?無論您的應用程序有多大,這聽起來都比運行應用程序的另一個實例並手動測試以進行迴歸測試要困難得多。 – sjr

+0

希望增量發行說明就足夠了。 – EthanB

+0

發行說明將不夠用。他們會這樣說:「Class.getMethods現在以與先前的JDK不同的順序返回結果」。如果你不測試它,你怎麼知道你的應用程序仍然可以使用它?你確定*你不依賴於舊的行爲?硬着頭皮。測試應用程序。 :) – sjr

回答

6

沒有什麼會取代在實際系統中測試它。您可能能夠在bug報告或視覺檢查中看到明顯的東西,但檢測由於更復雜的相互作用而導致的變化是不可能的。甚至檢測其改變看似簡單的變化,GC是如何影響你的跑步應用程序或熱點如何優化你的代碼(你檢查C++代碼太,右)或一些關鍵算法如何執行...

+0

+1 *沒有任何內容更換測試* - 制定測試計劃和當前系統的已知結果進行比較。 – MadProgrammer

+0

甚至在我問這個問題之前,我已經同意這一點。只是希望有人可以有另一種選擇。我會在幾個小時內將此標記爲答案。 –

1

由於@jtahlborn說:沒有什麼會取代正確的測試。

我會走得更遠,並說沒有自動化,那麼這是成本,你會一次又一次地發生。

正確的答案是

  1. 定義迴歸
  2. 運行(驗證)
  3. 自動化儘可能地爲你去通過它

一個更簡單的方案是簡單地運行它並捕捉錯誤是您或您的客戶找到時間。我個人認爲這是讓失去動力的開發人員,管理人員和客戶的好方法。我強烈建議你不要使用這種方法。