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