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