Parasoft Jtest——如何征服遺留程式碼

ymy_666666發表於2019-02-26

Parasoft Jtest是一款能夠無縫整合Parasoft SOAtest的Java自動化測試工具,重點應用於針對Java程式碼的靜態分析、程式碼審查、單元測試和執行時錯誤檢測。當您處理遺留程式碼時,通常需要一種可持續的方式來管理程式碼的變更。您可以通過利用適當的技術來克服遺留程式碼給敏捷和DevOps所帶來的阻礙

Parasoft Jtest——如何征服遺留程式碼

什麼是遺留程式碼

許多人使用遺留程式碼來表示舊程式碼,但舊和遺留在一些層面上有一定的區別。本文用遺留程式碼定義團隊裡知識有限的任何現有程式碼。

由於以下幾個原因,有關程式碼的知識可能不完整,例如:

  • 團隊從該組織的另一部分獲得了一個專案。
  • 原作者離開了團隊,很有可能一起帶走了只有他才瞭解的那部分程式碼。
  • 程式碼提供的功能不再是保持不變的業務優先順序,導致忘記了程式碼的詳細資訊。

首先要明確一點,遺留程式碼是規則而不是例外。當今世界上的許多軟體基礎架構都執行在遺留程式碼上。那麼當我們需要進行更改時,如何降低與遺留程式碼相關的風險變得至關重要。

傳統程式碼是敏捷和DevOps的障礙

遺留程式碼的問題不在於它存在的時間,而是您不瞭解更改它會如何影響現有功能。如果您正在轉換到新的開發方法,例如敏捷或DevOps,那麼與遺留程式碼相關的知識差距可能會成為障礙。

敏捷和DevOps已經成為建立軟體的主要方法,因為它們可以幫助團隊在最小的市場特性準備就緒後快速迭代和釋出應用程式。短暫而頻繁的開發週期是迭代開發方法的標誌,但是當您處理遺留程式碼時,這些方法不會為減輕可能存在問題留出空間,嘗試快速迭代您不理解的程式碼可能會引入新問題。

現實情況是,在開始新專案時,這些技術更容易應用。對於已經存在一段時間的專案而言,團隊通常使用涉及遺留程式碼的系統。開發人員可能不知道現有程式碼庫如何工作,但仍必須修復缺陷或擴充套件功能而不會引入新問題。看似微小的變化也會對應用程式產生重大影響。

更新舊程式碼的3個步驟

建立基線並將質量活動的範圍縮小到受計劃更改影響的程式碼區域,而不是嘗試在巨集觀層面上工作。在進行測量以評估程式碼的範圍和狀態之後,您應該建立捕獲當前行為的測試,以便團隊可以瞭解更改如何影響現有功能。

然後您可以利用一系列技術來幫助您在重構遺留程式碼時收集分析,並確保您對程式碼更改的投入可以提高遺留系統的安全性、保密性和可靠性。

1、定義範圍

瞭解如何影響系統行為至少需要一個資料點,首先選擇基線構建並開始跟蹤指標,設定範圍並檢視遺留程式碼的三個特徵:

  • 靜態分析違規程度。
  • 目前的測試覆蓋範圍。
  • 清理代價

Parasoft Jtest提供了一個功能強大的分析平臺,用於捕獲、關聯和分析報告程式碼中的違規、測試結果、覆蓋率和其他軟體質量資料。該平臺超越了靜態報告,它還應用了額外的分析來幫助您識別受變更影響的應用程式部分。

利用資源組的概念,您可以識別一組特定的檔案或目錄、覆蓋範圍、靜態分析違規以及指向這些特定資源的指標資料。此資訊可幫助您在程式碼庫的這些部分進行更改之前為程式碼庫區域建立基線。

2、捕獲行為

有了初始資料點的幫助,下一步通過建立測試開始捕獲系統的當前行為。構建高質量的迴歸套件不僅可以捕獲現有行為,還可以提高覆蓋率,作為確保更改不會破壞功能的安全網。

Parasoft Jtest可以使您能夠基於現有程式碼批量建立JUnit測試的基線和斷言。Jtest還包括建立直接訪問私有方法的測試的能力,以便在遺留程式碼最初編寫時不考慮可測試性。

最好通過有意義的測試來擴充套件覆蓋範圍。在分析覆蓋差距期間,Jtest可以識別現有程式碼中未經測試的克隆和變異的部分。Parasoft在建立現有測試方面做了大量工作,Jtest中的克隆和變異功能增加了建立測試投資的回報。

3、改進隔離的遺留程式碼

通過捕獲系統的行為,您可以開始修復違規、解決PR或應用您想要關注的更改,同時將破壞現有功能的風險降至最低。Parasoft可以幫助您管理現有的技術債務,並將資料(如靜態分析違規)放入適當的工作流程中,以便輕鬆地重新確定優先順序,抑制或解決這些資料,從而提高應用程式的整體質量。

解決遺留程式碼中技術債務的最佳時機是在進行更改時。報告的資料應包括在有關專案的整體統計資訊中。技術債務可能不會立即對應用程式產生影響,但您應該應用最佳實踐來系統地包含和管理它。您需要在進行更改時重構遺留程式碼,將有助於您逐步減少技術債務。

確保修改程式碼的覆蓋範圍

此過程有助於確保更改範圍不會對現有功能產生負面影響,但您還需要確保團隊遵循前進的良好實踐。隨著程式碼的發展,繼續保持高水平的覆蓋率並編寫或更新測試需要在知識層面上獲得支援。

通過分析指定基線構建之間的變化,您可以專注於監控整個程式碼庫中的變化。在整個程式碼庫中實現100%的覆蓋率是不切實際的,但通過監控修改後的程式碼的覆蓋範圍,團隊可以專注於正在積極處理的程式碼部分,並確保所有更改都經過測試。

總結

世界的軟體執行目光正在從團隊傳遞到團隊的程式碼上,處理遺留程式碼是一種常見的需求。關於程式碼的知識差距提示了潛在的風險,因為開發人員需要進行更改以維護或擴充套件功能,而本文提及的Parasoft Jtest對遺留程式碼的處理流程和技術可以幫助使用者獲得推進團隊中任何程式碼庫的信心。

相關文章