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