將傳統(tǒng)大型主機應用的代碼和數(shù)據(jù)遷移到現(xiàn)代化技術架構(gòu)上,被業(yè)界認為是企業(yè)信息系統(tǒng)數(shù)字化發(fā)展的關鍵階段。尤其是在追求提高效率和可擴展性的過程中,這種轉(zhuǎn)變通常會涉及到從傳統(tǒng)的大型主機環(huán)境,轉(zhuǎn)移到更加靈活的云計算、或是在內(nèi)部部署方案中。
不過,隨著業(yè)務環(huán)境的動態(tài)變化,也會使得遷移過程變得更加復雜。這不僅僅是技術上的資源重新部署,而且是一種根本性的轉(zhuǎn)變,因此往往需要經(jīng)歷嚴格的測試,以確保各項功能的等效,進而保持應用在運行上的完整性和性能上的標準化。
同時,在遷移之后,應用程序經(jīng)常會在新的要求、業(yè)務戰(zhàn)略的演變、以及監(jiān)管標準變化的驅(qū)動下,被迫進行大量的修改。而每一次修改,無論是微小的調(diào)整、還是重大的“翻修”,都必須經(jīng)過嚴密的測試。其中最關鍵的挑戰(zhàn)就在于,如何確保新的變化能夠與現(xiàn)有的功能和諧集成,而不會造成意想不到的后果或中斷??梢姡炞C新功能和保留現(xiàn)有功能的雙重要求,凸顯了在遷移后自動化測試套件的重要性。
近年來,生成式AI(GenAI)的廣泛應用,已輻射到了各個領域。如果將其引入大型主機的現(xiàn)代化過程,不但有望讓企業(yè)在軟件質(zhì)量、運營效率等方面取得顯著改善,而且能夠帶來軟件開發(fā)和質(zhì)量保證理念上的根本轉(zhuǎn)變,進而讓企業(yè)最終獲得可觀的投資回報。
下面,我將和您探討如何通過合適的自動化測試方法、工具和最佳實踐,實現(xiàn)在技術平穩(wěn)過渡中,確?,F(xiàn)代化大型主機應用的固有質(zhì)量和性能。
傳統(tǒng)的手動測試理念
一直以來,大型主機環(huán)境并不愿意接受自動化的測試方式。由Compuware和Vanson Bourne聯(lián)合開展的2019年全球調(diào)查顯示,僅有7%的受訪者為大型主機應用采用了自動化的測試用例,這足以說明業(yè)界對此的態(tài)度。
手動測試的困境
作為對比,手動測試則是許多企業(yè)普遍采用的傳統(tǒng)方法。不過,在復雜的大型主機現(xiàn)代化過程中,該方法越來越顯得力不從心,而且容易出錯。畢竟,測試工程師需要手動驗證每個方案和業(yè)務規(guī)則。這一過程就充滿了人為出錯的可能性。而且,鑒于許多大型主機應用的高風險性和關鍵任務性特點,我們一旦在測試過程中忽略了某個細微的錯誤,則可能會導致嚴重的生產(chǎn)問題、大量的停機時間、乃至經(jīng)濟損失。因此,該缺點會變得尤為突出。此外,人工測試還存在著如下缺陷:
1.遺漏與不準確:手動處理大量測試用例,會增加遺漏關鍵場景、以及數(shù)據(jù)驗證不準確的風險。
2.耗時性:手動方法需要大量時間對每個方面進行徹底測試,因此在快節(jié)奏的開發(fā)環(huán)境中效率不高。
3.可擴展性問題:隨著應用程序的擴展和演進,人工測試所需的工作量會成倍增加,更無法有效地識別錯誤。
有的企業(yè)可能會直觀地想到擴大人工測試團隊。不過,這并非一個可行的解決方案。此舉既會導致成本效率的低下,又無法解決人工測試流程的固有局限性。企業(yè)需要通過DevOps等現(xiàn)代方法,來整合自動化測試流程,以提高效率并減少錯誤。
測試自動化的必要性
總的說來,通過在現(xiàn)代化大型主機應用程序中集成自動化測試流程,企業(yè)可以大幅提高遷移的效率和準確性。當然,大型主機環(huán)境中自動化測試的采用率并不高。有的企業(yè)認為這是挑戰(zhàn),但也有的企業(yè)視之為巨大的轉(zhuǎn)型機遇。畢竟,在測試中采用自動化不僅僅是一種技術升級,更是一種降低風險、節(jié)省時間和優(yōu)化資源利用的戰(zhàn)略舉措。
對于希望在快速發(fā)展的技術環(huán)境中,保持競爭力和效率的企業(yè)來說,這一轉(zhuǎn)變至關重要。根據(jù)《DevOps狀態(tài)報告》顯示,自動化測試在優(yōu)化操作工作流程和確保應用程序可靠性等方面,能夠發(fā)揮巨大的作用。
什么是自動化測試?
根據(jù)Atlassian的定義,自動化測試是通過運用軟件工具,自動完成那些由人工驅(qū)動的軟件產(chǎn)品的審查和驗證過程。其速度、效率和精度,都超越了傳統(tǒng)人工測試方法的局限性。也就是說,自動化測試有助于在加快應用變化的同時,確保其質(zhì)量和可靠性不受影響。自動化測試不僅能夠簡化新變化的驗證過程,也可以監(jiān)控現(xiàn)有功能的完整性,從而在現(xiàn)代化應用的無縫過渡和持續(xù)維護方面發(fā)揮關鍵性作用。
在追求優(yōu)化軟件測試流程的過程中,采用自動化測試往往需要初始的人工投入,會涉及到測試工程師對于應用程序底層錯綜復雜的業(yè)務邏輯的理解。這種理解對于使用Selenium等框架有效地生成自動化測試用例是至關重要的。該階段雖然會耗費大量人力,卻是一項基礎性工作。畢竟后續(xù)的自動化測試將大幅減少測試本身對于人工的依賴,尤其是在重復和廣泛的測試場景中。而且,自動化框架一旦被建立,就會成為對應用程序進行持續(xù)評估的強大機制。其優(yōu)勢在于,它善于識別因應用更改而可能出現(xiàn)的錯誤或bug。
大型主機現(xiàn)代化過程中的自動化測試方法
在軟件工程領域,針對大規(guī)模的遷移或現(xiàn)代化大型主機應用程序的自動化測試,往往需要全面了解應用程序中的所有業(yè)務規(guī)則,以便為通常由數(shù)百萬行代碼組成的龐大代碼庫,生成自動化的測試用例。這是一項復雜而又相當艱巨的任務。鑒于難以實現(xiàn)100%的代碼覆蓋率,我們需要在測試覆蓋深度與實際可行性之間實現(xiàn)平衡,以確保關鍵性的業(yè)務邏輯,能夠得到充分的測試覆蓋。
在這種情況下,GenAI等新興技術提供了一種可能性。它能夠自動生成自動化測試腳本,以簡化大型主機現(xiàn)代化項目的測試流程,為軟件開發(fā)中的質(zhì)量保證提供一種更高效、更準確、更可擴展的方法。
GenAI的廣泛利用
在深入研究GenAI如何在大型主機現(xiàn)代化中實現(xiàn)自動化測試之前,讓我們簡單了解一下GenAI。從根本上說,GenAI代表了人工智能的一個方面。它通過生成式模型,來生成各種文本、圖像或其他媒介。這些生成式人工智能模型善于學習輸入訓練數(shù)據(jù)的模式和結(jié)構(gòu)元素,進而生成能夠反映這些特征的新數(shù)據(jù)。顯然,此類系統(tǒng)主要依賴機器學習模型,尤其是深度學習領域的模型。
自然語言生成(Natural Language Generation,NLG)是與大型主機現(xiàn)代化強相關的一種GenAI形式。它能夠在大語言模型(large language models,LLM)的支持下,產(chǎn)生出類似人類的文本。通常,LLM在大量文本數(shù)據(jù)的語料庫中接受訓練,使之能夠辨別和復制語言的細微差別和結(jié)構(gòu)。因此,這種訓練使得它們能夠執(zhí)行各種自然語言處理任務,包括:文本生成、翻譯摘要、以及情感分析等。值得注意的是,LLM還能夠熟練地生成準確的計算機程序代碼。
目前,大語言模型的著名用例包括:GPT-3(Generative Pre-trained Transformer 3)、BERT(Bidirectional Encoder Representations from Transformers)和T5(Text-to-Text Transfer Transformer)。這些模型通常建立在深度神經(jīng)網(wǎng)絡的基礎上,尤其是那些采用了Transformer架構(gòu)的模型。因此,它們在處理文本等順序數(shù)據(jù)方面,表現(xiàn)出了卓越的功效。大量的訓練數(shù)據(jù)(包括數(shù)百萬、甚至數(shù)十億的單詞或文檔)使得這些模型能夠全面掌握各種編程語言。它們不僅在生成連貫且與上下文相關的文本方面表現(xiàn)出色,而且在預測語言模式(如完成句子或回答查詢)方面也很優(yōu)秀。
當前,某些大語言模型還可以理解和生成多種語言的文本,從而提高其在全球范圍內(nèi)的實用性,從為聊天機器人和虛擬助手提供“智力”,到支持內(nèi)容生成、語言翻譯與摘要等應用領域,LLM的多功能性都能夠帶來不俗的表現(xiàn)。
如何使用GenAI生成自動化測試腳本
在軟件測試領域,LLM可以幫助我們從應用程序的代碼中提取業(yè)務邏輯,并將這些規(guī)則轉(zhuǎn)化為人類可讀的格式,進而生成相應的自動化測試腳本。同時,它也能夠幫助我們遴選出必要數(shù)量的測試用例,以滿足代碼片段的各種潛在覆蓋率要求。
通常,使用GenAI生成應用程序代碼的自動化測試腳本,需要如下結(jié)構(gòu)化的三步流程:
1.使用GenAI提取業(yè)務規(guī)則:作為初始階段,我們需要使用GenAI從應用程序中提煉業(yè)務規(guī)則。該流程會對提煉到的規(guī)則按照詳細程度進行判定,并以人類可讀的格式進行詮釋。此外,GenAI也有助于全面了解給定代碼段的所有潛在結(jié)果。這些知識對于確保創(chuàng)建準確、相關的測試腳本是至關重要的。
2.利用GenAI在功能層面生成自動化測試腳本:根據(jù)提取到的業(yè)務邏輯,測試工程師能夠?qū)贸绦虻墓δ軗碛腥娴牧私猓员阍诠δ軐用嫔侠肎enAI來開發(fā)測試腳本。該步驟涉及到確定所需的測試腳本數(shù)量,并識別可能被排除在外的場景。當然,此類自動化測試腳本的代碼覆蓋范圍,往往是由團隊集體決定的。
3.由主題專家(Subject Matter Experts,SME)進行驗證和推理添加:在最后階段,一旦提取了業(yè)務邏輯,并生成了相應的自動化測試腳本,測試專家就會驗證這些腳本,并有權(quán)進行添加、修改或刪除等操作。此類干預解決了GenAI輸出可能產(chǎn)生的潛在概率錯誤,并提高了自動化測試腳本的質(zhì)量確定性。
上述過程看似復雜,實際上卻能充分利用GenAI的能力,以簡化測試腳本生成的流程,并確保自動化的效率與人類專業(yè)知識的完美結(jié)合。其中,測試人員在驗證階段的參與尤為重要。這會讓人工智能生成的輸出結(jié)果,能夠建立在實際、真實的應用知識之上,從而顯著提高測試腳本的可靠性和適用性。
小結(jié)
綜上所述,作為一種提高效率的工具,GenAI可以通過其NLG能力生成自動化測試腳本,進而提高大型主機現(xiàn)代化的軟件測試過程的準確性和可靠性。同時,GenAI需要通過結(jié)構(gòu)化的三步流程,來完善AI生成的輸出結(jié)果,并確保自動化腳本不僅在技術上合理,而且在實踐中適用,從而體現(xiàn)AI能力與人類專業(yè)知識的和諧統(tǒng)一。而這種融合對于解決現(xiàn)代化大型主機應用程序的復雜性和動態(tài)要求,顯然是至關重要的。