AI技術(shù)在軟件測試領(lǐng)域的應(yīng)用比軟件開發(fā)早。早在上個世紀(jì)七、八十年代,軟件測試就開始應(yīng)用采用遺傳算法生成測試數(shù)據(jù),到九十年代,其研究和應(yīng)用逐漸增多,從單元測試、接口測試到GUI的系統(tǒng)測試,提供自動化的測試用例生成、自動化的測試執(zhí)行和評估等功能,取得了不少成功的實例,幫助研發(fā)團(tuán)隊節(jié)省了大量時間和成本,提高了測試的質(zhì)量和可靠性。
1. 單元測試中的應(yīng)用AI:AI技術(shù)可以幫助自動生成單元測試用例。通過使用機(jī)器學(xué)習(xí)和符號執(zhí)行等技術(shù),AI算法可以分析代碼和程序的結(jié)構(gòu)、邏輯,AI算法可以自動識別潛在的邊界條件、異常情況和路徑覆蓋需求,并生成相應(yīng)的測試用例自動生成覆蓋率較高的單元測試用例,從而提高單元測試的效率和準(zhǔn)確性。例如智能測試工具evoSuite就是其中的一個代表,國內(nèi)也有公司推出智能單元測試工具:smartUnit。
除了開源的evoSuite,Microsoft開發(fā)了一個名為SAGE的自動化測試工具,它使用了AI技術(shù)來生成和執(zhí)行單元測試用例。SAGE能夠自動分析代碼和執(zhí)行路徑,生成具有高覆蓋率的測試用例,并發(fā)現(xiàn)潛在的錯誤和異常。
大模型推出之后,AI賦能單元測試,其能力有了明顯的提升,根據(jù)實驗評測結(jié)果:ChatGPT 生成測試的覆蓋率與人工編寫的測試相接近,并高于現(xiàn)有的測試生成技術(shù);而且ChatGPT 生成的測試具有良好的可讀性,與人工編寫的測試相比具有相近的可讀性水平(詳見論文:No More Manual Tests? Evaluating and ImprovingChatGPT for Unit Test Generation)。但受Test Oracle制約,其生成腳本在執(zhí)行時容易出錯,主要由于ChatGPT生成的錯誤斷言語句導(dǎo)致的。加上人工檢查,容易修正斷言的問題。
2. 接口測試中應(yīng)用AI,我們可以通過使用機(jī)器學(xué)習(xí)和模型驅(qū)動測試等技術(shù),AI算法可以分析系統(tǒng)的結(jié)構(gòu)和接口,自動生成集成測試用例,并自動執(zhí)行和評估測試結(jié)果,從而提高集成測試的效率和覆蓋率。也可以借助NLP技術(shù),分析接口測試文檔,從而生成接口測試數(shù)據(jù),從而高效、全自動地完成接口測試。
3. GUI系統(tǒng)測試中的應(yīng)用AI:通過使用圖像識別和自然語言處理等技術(shù),AI算法可以自動分析和識別GUI界面的元素和操作,自動生成測試用例,并自動執(zhí)行和評估測試結(jié)果,從而提高GUI系統(tǒng)測試的效率和準(zhǔn)確性。
之前,智能模糊測試工具也具有代表性,如Facebook(Meta)的Sapienz就是基于搜索的“遺傳算法”(GA)來實現(xiàn)的,只是指導(dǎo)GA算法進(jìn)化的適度函數(shù)(fitness function)非常復(fù)雜:有多個目標(biāo),由“帕累托最優(yōu)”(Pareto optimality)交織在一起,每一次成功的進(jìn)化都必須實現(xiàn)這些目標(biāo),效果不錯,但不能用在功能測試上,而是穩(wěn)定性測試上。
之后,深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)技術(shù)在GUI測試中的應(yīng)用得到了廣泛關(guān)注,我們可以使用深度學(xué)習(xí)模型來分析GUI界面的特征和行為,生成測試用例,檢測異常和錯誤,并優(yōu)化測試過程;我們使用強(qiáng)化學(xué)習(xí)算法來學(xué)習(xí)最佳的用戶交互策略,從而自動生成各種用戶交互和操作序列,以測試GUI應(yīng)用程序的各種功能和用戶體驗,以最大化測試的效果和覆蓋率。
大模型發(fā)布之后,軟件測試的智能化明顯得到提升,想象空間迅速擴(kuò)大。
例如,我自己親自嘗試用GPT完成驗收標(biāo)準(zhǔn)、測試用例生成等工作,詳情見:又一次被震驚:從生成和細(xì)化需求到應(yīng)用各種方法設(shè)計測試用例。這樣例子很多,最近,我看到一篇論文(Fill in the Blank- Context-aware Automated Text Input Generation for Mobile GUI Testing),是由中科院軟件所研究團(tuán)隊寫的,他們借助GPT進(jìn)行Android的功能測試,開發(fā)了基于大模型的測試工具GPTDroid,在這216個應(yīng)用程序中,發(fā)現(xiàn)了135個漏洞,涉及115個應(yīng)用程序。其中,48個漏洞涉及39個應(yīng)用程序是新發(fā)現(xiàn)的。令人更為關(guān)注的是,這些新的漏洞并未被之前的靜態(tài)分析工具所發(fā)現(xiàn)。這48個漏洞提交給開發(fā)人員,他們已修復(fù)了其中的31個,確認(rèn)存在的有17個,但沒有一個被拒絕。這進(jìn)一步證明GPT的能力是最強(qiáng)的。
審核編輯:劉清
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4773瀏覽量
100880 -
GUI
+關(guān)注
關(guān)注
3文章
662瀏覽量
39753 -
ai技術(shù)
+關(guān)注
關(guān)注
1文章
1280瀏覽量
24348 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22052 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1563瀏覽量
7796
原文標(biāo)題:AIGC時代,軟件測試智能化到底會怎樣?
文章出處:【微信號:軟件質(zhì)量報道,微信公眾號:軟件質(zhì)量報道】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論