五招促進AI和ML實現(xiàn)自動化測試
譯文【51CTO.com快譯】近年來,人工智能(AI)和機器學習(ML)技術正在蓬勃發(fā)展,諸如:自動駕駛汽車、機器人、以及Amazon的Alexa等應用,都深刻地影響和改變著我們的日常生活。當然,隨著此類智能應用和設備使得我們的生活越來越輕松,大家對于軟件產(chǎn)品的質量需求日益增長,并且對于產(chǎn)品缺陷的容忍度越來越低。一旦出現(xiàn)了功能或性能上的問題,用戶會很快切換到市場上的同類替代產(chǎn)品中。因此,面對此類苛刻的要求,應用開發(fā)公司一方面不得不根據(jù)復雜的服務流程,不斷迭代軟件結構,一方面又要以更快的交付速度,推出高質量的軟件。
對此,人工智能和機器學習正好能夠發(fā)揮作用。它們能夠以更快的速度、更好的質量、以及更高的效率,通過高度自動化的測試方式,為企業(yè)提供合適的端到端解決方案。據(jù)此,開發(fā)團隊能夠在有限的時間范圍內(nèi),創(chuàng)建出專有的測試用例,以避免從頭開始編寫測試腳本,并能夠涵蓋盡可能多的關鍵性、高風險性的測試場景。可以說,使用AI和ML進行自動化測試的方式,正在逐漸成為整個開發(fā)和測試過程中,不可或缺的一部分。
下面,我將和您討論通過使用由AI和ML帶來的自動化智能測試技術,是如何解決傳統(tǒng)測試中的痛點,并協(xié)助項目團隊減少測試工作量,以及提高測試覆蓋率的。
1.針對自動化測試的自愈(Self-Healing)技術
自動化測試自愈的流程圖
自動化測試中的自愈技術,能夠有效地解決測試腳本的維護問題。通過基于動態(tài)定位的策略,此類自動化腳本會在對象屬性(包括名稱、ID、CSS等)出現(xiàn)變化的每個階段產(chǎn)生中斷,以便程序能夠自動檢測到各種更改,并在無需人工干預的前提下,動態(tài)地修復它們。據(jù)此,項目團隊能夠在他們的敏捷測試中,利用左移的方法(shift-left approach),加快產(chǎn)品的交付速度,并提高生產(chǎn)率。
例如:開發(fā)人員在對HTML頁面中的各種對象標識符進行更改時,AI將自動糾正測試用例中相應的UI標識符。也就是說,AI引擎會在屬性發(fā)生變化時,及時找到此類元素,然后根據(jù)源代碼中的更改情況,做出相應的修改。可以說,這種自愈技術,節(jié)省了開發(fā)人員花費在識別更改,并對UI做出相應變動的大量時間。
在具體應用中,基于AI的測試平臺會按照端到端的處理流程,利用AI引擎發(fā)現(xiàn)那些由對象屬性的變更所導致的測試項中斷,進而憑借著自愈技術提取整個DOM,以深入研究各個屬性。由于各項測試用例都是被自動化運行的,因此該過程無需任何人干預,便可使用動態(tài)定位策略,做出相應的更改。
2.自動生成測試腳本
自動生成測試腳本
過去,當我們需要開發(fā)自動化測試腳本時,往往需要開發(fā)人員具備Java、Python、Ruby等高級編程語言的相關技能。顯然,這是一個既耗時又耗力的過程。如今,AI和ML技術,則能夠大幅簡化測試腳本的設計與開發(fā)全過程。
目前,市場上有許多此方面的測試工具,其中selenium是最常見的一款。用戶既能夠手動構建各種自動化的測試腳本,又可以通過平臺去讀取、并自動生成各種自動化的腳本。在實際應用中,它能夠通過自帶的各種AI算法,使用自然語言處理(NLP)技術,在完成了全面、良好的訓練后,可以理解用戶的意圖,進而模仿Web應用的各種動作。值得一提的是,在整個操作過程中,用戶無需親自編寫任何代碼。有數(shù)據(jù)表明,該工具能夠讓常規(guī)測試腳本的設計時間和人員的工作量減少80%左右。套用當前流行的概念,此類自動化測試可被稱為“非接觸式測試(Touchless testing)”。
3.有效地利用大量測試數(shù)據(jù)
許多使用敏捷(Agile)和DevOps方法實施持續(xù)測試的組織,每天都會在其軟件開發(fā)的生命周期中,多次采用端到端的嚴格測試方法,對其軟件應用的單元、API、功能、可訪問性、集成效果等其他方面予以測試。
而相對于上述測試內(nèi)容的增加,待測數(shù)據(jù)在體量上的增多,則更讓項目團隊無法通過軟件應用做出更好、更準確的決策。對此,機器學習卻能夠通過可視化那些極不穩(wěn)定的測試用例,協(xié)助開發(fā)人員輕松地關注大數(shù)據(jù)對于軟件關鍵功能與服務的影響。
在實際應用中,AI和ML系統(tǒng)能夠輕松地對海量數(shù)據(jù)進行切片、切塊和分析,為目標項目提供模型的解讀、業(yè)務風險的量化、以及決策過程的提速。同時,開發(fā)人員還可以用AI和ML系統(tǒng),來確定有待優(yōu)先處理的持續(xù)集成作業(yè),或是發(fā)現(xiàn)待測環(huán)境中目標平臺的潛在錯誤,以及獲得如下方面的“測試紅利”:
- 測試影響分析
- 安全漏洞
- 平臺的特有缺陷
- 測試環(huán)境的不穩(wěn)定性
- 測試失敗中的重復模式
- 應用組件的漏洞位置
4.使用自動化視覺驗證工具,執(zhí)行基于圖像的測試
軟件開發(fā)過程中的可視化測試(也稱為用戶界面測試),可以確保即將構建出的Web、或移動應用的UI,能夠給用戶帶來流暢的體驗。過去此類測試往往難以實現(xiàn)自動化,而需要人員進行繁瑣的手動測試。如今,使用基于ML的視覺驗證工具,使得測試人員可以識別出那些,過去在手動測試過程中容易遺漏的元素。實際上,在不少自動化網(wǎng)絡社區(qū)中,大家正在流行著利用最新的機器學習技術,以及自動化視覺驗證工具,執(zhí)行基于圖像的測試。
這種基于圖像的測試,可以動態(tài)地改變軟件公司在任何系統(tǒng)中,提供自動化測試服務的方式。據(jù)此,測試專家不必再將各項輸入,隱式地插入目標系統(tǒng)中,而只需通過創(chuàng)建ML類測試,以自動化的方式,驗證待測軟件在顯示效果(或稱視覺)上的正確性,及時發(fā)現(xiàn)各種錯誤與不足。
5.利用AI進行爬取
如今,不少開發(fā)人員也會使用基于AI的自動化技術,采用爬取的方法,自動為應用程序編寫測試用例。也就是說,一些新穎的AI/ML工具能夠針對Web應用開啟爬網(wǎng)功能。
在實際爬取過程中,此類工具首先會通過類似屏幕截圖,為每個頁面下載HTML代碼,以及測量流量負載等方式,來收集數(shù)據(jù),并且持續(xù)重復前面的步驟。接著,它們會基于收集到的數(shù)據(jù)構建出全量數(shù)據(jù)集,并根據(jù)待測應用的預期模式和行為,去訓練出可供機器學習的模型。然后,此類工具將當前階段觀察到的模式與先前輸入的模式進行比較。如果結果出現(xiàn)偏差,它們會將其作為測試中的錯誤予以標記。最后,由具有該領域知識的人員,對這些標記出的問題進行驗證。可見,盡管ML工具主要負責錯誤的檢測過程,但是人工核查仍然必不可少。
小結
目前,大多數(shù)公司都已將AL和ML之類的新技術,應用到了軟件測試的自動化流程中。當然,您和您的測試團隊,應當通過學習該領域的專業(yè)知識,了解如何將復雜的數(shù)據(jù)結構進行分解與分析,以增強針對測試的判斷與決策能力,并提高項目的總體效率與服務水平。希望上述五點經(jīng)驗,能夠更好地為您實現(xiàn)該目標。
原文標題:5 Great Ways To Achieve Complete Automation With AI and ML,作者:Mohit Shah
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】