五招促進AI和ML實現自動化測試

五招促進AI和ML實現自動化測試

【51CTO。com快譯】近年來,人工智慧(AI)和機器學習(ML)技術正在蓬勃發展,諸如:自動駕駛汽車、機器人、以及Amazon的Alexa等應用,都深刻地影響和改變著我們的日常生活。當然,隨著此類智慧應用和裝置使得我們的生活越來越輕鬆,大家對於軟體產品的質量需求日益增長,並且對於產品缺陷的容忍度越來越低。一旦出現了功能或效能上的問題,使用者會很快切換到市場上的同類替代產品中。因此,面對此類苛刻的要求,應用開發公司一方面不得不根據複雜的服務流程,不斷迭代軟體結構,一方面又要以更快的交付速度,推出高質量的軟體。

對此,人工智慧和機器學習正好能夠發揮作用。它們能夠以更快的速度、更好的質量、以及更高的效率,透過高度自動化的測試方式,為企業提供合適的端到端解決方案。據此,開發團隊能夠在有限的時間範圍內,創建出專有的測試用例,以避免從頭開始編寫測試指令碼,並能夠涵蓋儘可能多的關鍵性、高風險性的測試場景。可以說,使用AI和ML進行自動化測試的方式,正在逐漸成為整個開發和測試過程中,不可或缺的一部分。

下面,我將和您討論透過使用由AI和ML帶來的自動化智慧測試技術,是如何解決傳統測試中的痛點,並協助專案團隊減少測試工作量,以及提高測試覆蓋率的。

1。針對自動化測試的自愈(Self-Healing)技術

五招促進AI和ML實現自動化測試

自動化測試自愈的流程圖

自動化測試中的自愈技術,能夠有效地解決測試指令碼的維護問題。透過基於動態定位的策略,此類自動化指令碼會在物件屬性(包括名稱、ID、CSS等)出現變化的每個階段產生中斷,以便程式能夠自動檢測到各種更改,並在無需人工干預的前提下,動態地修復它們。據此,專案團隊能夠在他們的敏捷測試中,利用左移的方法(shift-left approach),加快產品的交付速度,並提高生產率。

例如:開發人員在對HTML頁面中的各種物件識別符號進行更改時,AI將自動糾正測試用例中相應的UI識別符號。也就是說,AI引擎會在屬性發生變化時,及時找到此類元素,然後根據原始碼中的更改情況,做出相應的修改。可以說,這種自愈技術,節省了開發人員花費在識別更改,並對UI做出相應變動的大量時間。

在具體應用中,基於AI的測試平臺會按照端到端的處理流程,利用AI引擎發現那些由物件屬性的變更所導致的測試項中斷,進而憑藉著自愈技術提取整個DOM,以深入研究各個屬性。由於各項測試用例都是被自動化執行的,因此該過程無需任何人干預,便可使用動態定位策略,做出相應的更改。

2。自動生成測試指令碼

五招促進AI和ML實現自動化測試

自動生成測試指令碼

過去,當我們需要開發自動化測試指令碼時,往往需要開發人員具備Java、Python、Ruby等高階程式語言的相關技能。顯然,這是一個既耗時又耗力的過程。如今,AI和ML技術,則能夠大幅簡化測試指令碼的設計與開發全過程。

目前,市場上有許多此方面的測試工具,其中selenium是最常見的一款。使用者既能夠手動構建各種自動化的測試指令碼,又可以透過平臺去讀取、並自動生成各種自動化的指令碼。在實際應用中,它能夠透過自帶的各種AI演算法,使用自然語言處理(NLP)技術,在完成了全面、良好的訓練後,可以理解使用者的意圖,進而模仿Web應用的各種動作。值得一提的是,在整個操作過程中,使用者無需親自編寫任何程式碼。有資料表明,該工具能夠讓常規測試指令碼的設計時間和人員的工作量減少80%左右。套用當前流行的概念,此類自動化測試可被稱為“非接觸式測試(Touchless testing)”。

3。有效地利用大量測試資料

許多使用敏捷(Agile)和DevOps方法實施持續測試的組織,每天都會在其軟體開發的生命週期中,多次採用端到端的嚴格測試方法,對其軟體應用的單元、API、功能、可訪問性、整合效果等其他方面予以測試。

而相對於上述測試內容的增加,待測資料在體量上的增多,則更讓專案團隊無法透過軟體應用做出更好、更準確的決策。對此,機器學習卻能夠透過視覺化那些極不穩定的測試用例,協助開發人員輕鬆地關注大資料對於軟體關鍵功能與服務的影響。

在實際應用中,AI和ML系統能夠輕鬆地對海量資料進行切片、切塊和分析,為目標專案提供模型的解讀、業務風險的量化、以及決策過程的提速。同時,開發人員還可以用AI和ML系統,來確定有待優先處理的持續整合作業,或是發現待測環境中目標平臺的潛在錯誤,以及獲得如下方面的“測試紅利”:

測試影響分析

安全漏洞

平臺的特有缺陷

測試環境的不穩定性

測試失敗中的重複模式

應用元件的漏洞位置

4。使用自動化視覺驗證工具,執行基於影象的測試

軟體開發過程中的視覺化測試(也稱為使用者介面測試),可以確保即將構建出的Web、或移動應用的UI,能夠給使用者帶來流暢的體驗。過去此類測試往往難以實現自動化,而需要人員進行繁瑣的手動測試。如今,使用基於ML的視覺驗證工具,使得測試人員可以識別出那些,過去在手動測試過程中容易遺漏的元素。實際上,在不少自動化網路社群中,大家正在流行著利用最新的機器學習技術,以及自動化視覺驗證工具,執行基於影象的測試。

這種基於影象的測試,可以動態地改變軟體公司在任何系統中,提供自動化測試服務的方式。據此,測試專家不必再將各項輸入,隱式地插入目標系統中,而只需透過建立ML類測試,以自動化的方式,驗證待測軟體在顯示效果(或稱視覺)上的正確性,及時發現各種錯誤與不足。

5。利用AI進行爬取

如今,不少開發人員也會使用基於AI的自動化技術,採用爬取的方法,自動為應用程式編寫測試用例。也就是說,一些新穎的AI/ML工具能夠針對Web應用開啟爬網功能。

在實際爬取過程中,此類工具首先會透過類似螢幕截圖,為每個頁面下載HTML程式碼,以及測量流量負載等方式,來收集資料,並且持續重複前面的步驟。接著,它們會基於收集到的資料構建出全量資料集,並根據待測應用的預期模式和行為,去訓練出可供機器學習的模型。然後,此類工具將當前階段觀察到的模式與先前輸入的模式進行比較。如果結果出現偏差,它們會將其作為測試中的錯誤予以標記。最後,由具有該領域知識的人員,對這些標記出的問題進行驗證。可見,儘管ML工具主要負責錯誤的檢測過程,但是人工核查仍然必不可少。

小結

目前,大多數公司都已將AL和ML之類的新技術,應用到了軟體測試的自動化流程中。當然,您和您的測試團隊,應當透過學習該領域的專業知識,瞭解如何將複雜的資料結構進行分解與分析,以增強針對測試的判斷與決策能力,並提高專案的總體效率與服務水平。希望上述五點經驗,能夠更好地為您實現該目標。

原文標題:5 Great Ways To Achieve Complete Automation With AI and ML,作者:Mohit Shah

【51CTO譯稿,合作站點轉載請註明原文譯者和出處為51CTO。com】

TAG: 測試AI自動化ML能夠