譯者| 陳峻
審查| 重樓
將傳統大型主機應用的程式碼和資料遷移到現代化技術架構上,被認為是企業數位化發展的關鍵步驟。在追求效率和可擴展性的過程中,這種轉變通常涉及從傳統大型主機環境遷移到更靈活的雲端運算或內部部署方案。這樣的轉型有助於企業實現更高的靈活性和創新能力,同時降低成本並提高安全性。這種遷移還可以為企業帶來更好的資源利用率和更快的市場回應能力。企業需要謹慎規劃和執行此轉變,確保資料遷移和應用重構過程順利進行,以確保業務連續性和資料安全。透過將傳統大型主機應用遷移到現代化技術架構上,企業可以更好地適應快速變化的市場需求,實現
不過,隨著業務環境的動態變化,也會讓遷移過程變得更加複雜。這不僅是技術上的資源重新部署,而且是一種根本性的轉變,因此往往需要經歷嚴格的測試,以確保各項功能的等效,進而保持應用在運行上的完整性和性能上的標準化。
同時,在遷移之後,應用程式經常會在新的要求、業務策略的演進、以及監管標準變化的驅動下,被迫進行大量的修改。而每一次修改,無論是微小的調整、還是重大的“翻修”,都必須經過嚴密的測試。其中最關鍵的挑戰就在於,如何確保新的變化能夠與現有的功能和諧集成,而不會造成意想不到的後果或中斷。可見,驗證新功能和保留現有功能的雙重要求,凸顯了在遷移後自動化測試套件的重要性。
近年來,生成式AI(GenAI)的廣泛應用,已輻射到了各個領域。如果將其引入大型主機的現代化過程,不但有望讓企業在軟體品質、營運效率等方面取得顯著改善,而且能夠帶來軟體開發和品質保證理念上的根本轉變,進而讓企業最終獲得可觀的投資回報。
我將與您討論如何利用適當的自動化測試方法、工具和最佳實踐,確保在技術平穩過渡中維持現代化大型主機應用的固有品質和效能。
一直以來,大型主機環境並不願意接受自動化的測試方式。由Compuware和Vanson Bourne聯合開展的2019年全球調查顯示,僅有7%的受訪者為大型主機應用採用了自動化的測試案例,足以說明業界對此的態度。
作為對比,手動測試則是許多企業普遍採用的傳統方法。不過,在複雜的大型主機現代化過程中,該方法越來越顯得力不從心,而且容易出錯。畢竟,測試工程師需要手動驗證每個方案和業務規則。這個過程就充滿了人為出錯的可能性。而且,鑑於許多大型主機應用的高風險性和關鍵任務性特點,我們一旦在測試過程中忽略了某個細微的錯誤,則可能會導致嚴重的生產問題、大量的停機時間、甚至經濟損失。因此,該缺點會變得特別突出。此外,人工測試還存在以下缺陷:
1. 遺漏與不準確:手動處理大量測試案例,會增加遺漏關鍵場景、以及資料驗證不準確的風險。
2. 耗時性:手動方法需要大量時間對每個方面進行徹底測試,因此在快節奏的開發環境中效率不高。
3. 可擴充性問題:隨著應用程式的擴展和演進,手動測試所需的工作量會倍增,更無法有效地識別錯誤。
有的企業可能會直觀地想到擴大人工測試團隊。不過,這並非一個可行的解決方案。此舉既會導致成本效率的低下,又無法解決人工測試流程的固有限制。企業需要透過DevOps等現代方法,整合自動化測試流程,以提高效率並減少錯誤。
總的說來,透過在現代化大型主機應用程式中整合自動化測試流程,企業可以大幅提高遷移的效率和準確性。當然,大型主機環境中自動化測試的採用率並不高。有的企業認為這是挑戰,但也有的企業視之為巨大的轉型機會。畢竟,在測試中採用自動化不僅是一種技術升級,更是一種降低風險、節省時間和優化資源利用的策略性舉措。
對於希望在快速發展的科技環境中,保持競爭力和效率的企業來說,這項轉變至關重要。根據《DevOps狀態報告》顯示,自動化測試在優化操作工作流程和確保應用程式可靠性等方面,能夠發揮巨大的作用。
根據Atlassian的定義#,自動化測試是透過運用軟體工具,自動完成那些由手動驅動的軟體產品的審查和驗證過程。其速度、效率和精度,都超越了傳統人工測試方法的限制。也就是說,自動化測試有助於在加快應用變更的同時,確保其品質和可靠性不受影響。自動化測試不僅能夠簡化新變更的驗證過程,還可以監控現有功能的完整性,從而在現代化應用的無縫過渡和持續維護方面發揮關鍵性作用。
在追求最佳化軟體測試流程的過程中,採用自動化測試往往需要初始的人工投入,會涉及測試工程師對於應用程式底層錯綜複雜的業務邏輯的理解。這種理解對於使用Selenium等框架有效地產生自動化測試案例是至關重要的。此階段雖然會耗費大量人力,卻是基礎性工作。畢竟後續的自動化測試將大幅減少測試本身對於人工的依賴,尤其是在重複和廣泛的測試場景中。而且,自動化框架一旦建立,就會成為應用程式持續評估的強大機制。其優點在於,它善於識別因應用程式變更而可能出現的錯誤或bug。
在軟體工程領域,針對大規模的遷移或現代化大型主機應用程式的自動化測試,往往需要全面了解應用程式中的所有業務規則,以便為通常由數百萬行程式碼組成的龐大程式碼庫,產生自動化的測試案例。這是一項複雜又相當艱鉅的任務。鑑於難以達到100%的程式碼覆蓋率,我們需要在測試覆蓋深度與實際可行性之間實現平衡,以確保關鍵性的業務邏輯,能夠得到充分的測試覆蓋率。
在這種情況下,GenAI等新興技術提供了一種可能性。它能夠自動產生自動化測試腳本,以簡化大型主機現代化專案的測試流程,為軟體開發中的品質保證提供更有效率、更準確、更可擴展的方法。
在深入研究GenAI如何在大型主機現代化中實現自動化測試之前,讓我們先簡單了解GenAI。從根本上說,GenAI代表了人工智慧的一個面向。它透過生成式模型,來產生各種文字、圖像或其他媒介。這些生成式人工智慧模型善於學習輸入訓練資料的模式和結構元素,進而產生能夠反映這些特徵的新資料。顯然,這類系統主要依賴機器學習模型,尤其是深度學習領域的模型。
自然語言生成(Natural Language Generation,NLG)是與大型主機現代化強相關的一種GenAI形式。它能夠在大語言模型(large language models,LLM)的支持下,產生出類似人類的文本。通常,LLM在大量文字資料的語料庫中接受訓練,使其能夠辨別和複製語言的細微差別和結構。因此,這種訓練使得它們能夠執行各種自然語言處理任務,包括:文本生成、翻譯摘要、以及情緒分析等。值得注意的是,LLM還能夠熟練地產生準確的電腦程式碼。
目前,大語言模型的著名用例包括:GPT-3(Generative Pre-trained Transformer 3)、BERT(Bidirectional Encoder Representations from Transformers)和T5(Text-to-Text Transfer Transformer)。這些模型通常建立在深度神經網路的基礎上,尤其是那些採用了Transformer架構的模型。因此,它們在處理文字等順序資料方面,表現出了卓越的功效。大量的訓練資料(包括數百萬、甚至數十億的單字或文件)使得這些模型能夠全面掌握各種程式語言。它們不僅在產生連貫且與上下文相關的文本方面表現出色,而且在預測語言模式(如完成句子或回答查詢)方面也很優秀。
目前,某些大語言模型還可以理解和生成多種語言的文本,從而提高其在全球範圍內的實用性,從為聊天機器人和虛擬助理提供“智力”,到支援內容生成、語言翻譯與摘要等應用領域,LLM的多功能性都能夠帶來不俗的表現。
在軟體測試領域,LLM可以幫助我們從應用程式的程式碼中提取業務邏輯,並將這些規則轉換為人類可讀的格式,進而產生對應的自動化測試腳本。同時,它也能夠幫助我們遴選出必要數量的測試案例,以滿足程式碼片段的各種潛在覆蓋率要求。
通常,使用GenAI產生應用程式程式碼的自動化測試腳本,需要以下結構化的三步驟流程:
1. 使用GenAI提取業務規則:作為初始階段,我們需要使用GenAI從應用程式中提煉業務規則。此流程會對提煉到的規則按照詳細程度進行判定,並以人類可讀的格式進行詮釋。此外,GenAI也有助於全面了解給定程式碼段的所有潛在結果。這些知識對於確保創建準確、相關的測試腳本是至關重要的。
2. 利用GenAI在功能層面產生自動化測試腳本:根據提取到的業務邏輯,測試工程師能夠對應用程式的功能擁有全面的了解,以便在功能層面上利用GenAI來開發測試腳本。此步驟涉及確定所需的測試腳本數量,並識別可能被排除在外的場景。當然,這類自動化測試腳本的程式碼涵蓋範圍,往往是由團隊集體決定的。
3. 由主題專家(Subject Matter Experts,SME)進行驗證和推理添加:在最後階段,一旦提取了業務邏輯,並產生了相應的自動化測試腳本,測試專家就會驗證這些腳本,並有權進行新增、修改或刪除等操作。此類幹預解決了GenAI輸出可能產生的潛在機率錯誤,並提高了自動化測試腳本的品質確定性。
上述過程看似複雜,實際上卻能充分利用GenAI的能力,以簡化測試腳本產生的流程,並確保自動化的效率與人類專業知識的完美結合。其中,測試人員在驗證階段的參與尤其重要。這會讓人工智慧產生的輸出結果,能夠建立在實際、真實的應用知識之上,從而顯著提高測試腳本的可靠性和適用性。
綜上所述,作為一種提高效率的工具,GenAI可以透過其NLG能力產生自動化測試腳本,進而提高大型主機現代化的軟體測試過程的準確性和可靠性。同時,GenAI需要透過結構化的三步驟流程,來完善AI產生的輸出結果,並確保自動化腳本不僅在技術上合理,而且在實踐中適用,從而體現AI能力與人類專業知識的和諧統一。而這種整合對於解決現代化大型主機應用程式的複雜性和動態要求,顯然是至關重要的。
陳峻(Julian Chen),51CTO社群編輯,具有十多年的IT專案實施經驗,善於對內部和外部資源與風險實施管控,專注傳播網路與資訊安全知識與經驗。
原文標題:GenAI-Driven Automation Testing in Mainframe Modernization#,作者:sampath amatam)
以上是生產式AI驅動的主機自動化測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!