前沿技術實踐|軟體測試的變革:Meta 引入由 LLM 驅動的 bug 捕捉工具
(TesterHome 社群編譯整理)
傳統測試生成技術難以針對特定高影響故障(如安全、隱私問題)。近日,美國 Meta 公佈了一項新的軟體測試領域應用成果——引入由大語言模型驅動的 bug 捕捉工具,他們稱這是一次軟體測試的變革。
這一工具可以透過突變測試結合 LLM,將自然語言描述的軟體問題轉化為針對性測試用例。
它是什麼?
Meta 的自動合規性強化 (ACH) 工具是一種基於 LLM 的突變引導式測試生成系統。ACH 透過在原始碼中生成特定於特定關注領域的未檢測到的故障(突變體)並使用這些突變體生成測試來強化平臺以防止迴歸。例如,當應用於隱私時,ACH 會自動搜尋與隱私相關的故障並防止它們將來進入系統,最終強化程式碼庫以降低任何隱私迴歸的風險。
ACH 會自動生成針對特定型別故障的單元測試。Meta 用純文字向 ACH 描述他們關心的故障。描述可能不完整,甚至自相矛盾,但 ACH 仍然會生成測試,證明其能夠捕獲所描述的錯誤。
傳統上,自動化測試生成技術僅僅是為了增加程式碼覆蓋率。正如每個測試人員所知,這只是解決方案的一部分,因為增加覆蓋率並不一定能發現錯誤。ACH 完全背離了這一傳統,因為它針對的是特定錯誤,而不是未發現的程式碼,儘管它通常也會在定位錯誤的過程中增加覆蓋率。此外,由於 ACH 建立在有保證的 LLM 軟體工程原則之上,因此它可以保證其測試確實能捕獲所描述的錯誤型別。
Meta 的新研究論文 “基於變異引導的 LLM 的 Meta 測試生成” 詳細介紹了 ACH 的底層科學基礎以及如何將 ACH 應用於隱私測試,但這種方法可以應用於任何型別的迴歸測試。
工作原理
突變測試是一種故意將錯誤(突變體)引入原始碼(使用版本控制將它們排除在生產之外)以評估現有測試框架檢測這些變化的能力的方法,這種測試方法已經研究了幾十年。但是,儘管如此,突變測試仍然難以部署。
在早期的方法中,突變體本身會自動生成(通常使用基於規則的方法)。但這種方法產生的突變體在它們實際代表的關注程度方面並不特別現實。
最重要的是,即使突變體被自動生成,人類仍然必須手動編寫測試來殺死突變體(捕獲故障)。
編寫這些測試是一個艱苦而費力的過程。因此,工程師們面臨著一個雙重問題:即使完成了編寫測試以捕獲突變的所有工作,也無法保證測試能夠捕獲自動生成的突變。
透過利用 LLM,可以生成代表實際問題的突變體,同時還可以透過生成測試來自動捕獲錯誤,從而節省人力。ACH 將自動測試生成技術與大型語言模型 (LLM) 的功能相結合,以生成與測試關注領域高度相關的突變體以及保證捕獲真正重要的錯誤的測試。
總體來說,ACH 的工作分為三個步驟:
1.一位工程師描述了他們所擔心的錯誤型別。
2.ACH 使用該描述自動生成大量錯誤。
3.ACH 使用生成的錯誤來自動生成大量捕獲它們的測試。
在 Meta,目前已將 ACH 輔助測試應用於多個平臺,包括 Facebook Feed、Instagram、Messenger 和 WhatsApp。根據自己的測試得出結論,工程師發現 ACH 有助於針對特定問題強化程式碼,並且即使 ACH 生成的測試不直接解決特定問題,也發現了其他好處。
ACH 系統架構的頂層概述。該系統利用 LLM 生成故障,根據可能的等效項進行檢查,然後生成測試以捕獲這些故障。
為何重要
Meta 擁有大量的資料系統,並使用許多不同的程式語言、框架和服務來支援 Meta 的應用和產品系列。但是,Meta 遍佈全球的數千名工程師如何確保他們的程式碼可靠,並且不會產生會對應用程式效能產生負面影響的錯誤,從而導致隱私風險?答案在於 LLM。
基於 LLM 的測試生成和基於 LLM 的突變生成並非新鮮事物,但這是它們首次被結合並部署在大規模工業系統中。生成突變和測試以殺死它們傳統上是難以擴充套件的過程。由於 LLM 是機率性的,不需要依賴嚴格定義的規則來做出決策,因此它們使我們能夠非常高效地解決這個等式的兩邊——生成突變和測試以殺死它們——並且具有很高的準確性。
這種新方法大大提高了自動化測試生成形式的現代化程度,並幫助軟體工程師從各種來源(以前的故障、同事、使用者要求、監管要求等)收集關注點,並有效地將它們從自由格式的文字轉換為可操作的測試——並保證測試能夠捕捉到他們正在尋找的故障。
ACH 可應用於任何類別的故障,並對加強未來回歸和最佳化測試本身產生重大影響。
下一步
Meta 公司稱,他們的創新方法結合了基於 LLM 的測試生成和突變生成,有助於實現該領域複雜的技術組織工作流程自動化。這項創新有可能簡化風險評估、減少開發人員的認知負擔,並最終打造更安全的線上生態系統。“我們致力於擴大部署領域、開發測量突變相關性的方法以及檢測現有故障,以推動全行業採用合規的自動化測試生成。”
文章來源:TesterHome 社群微信公眾號編譯整理
https://mp.weixin.qq.com/s/F54rpO9ZkCNmTWK-fQIczw?token=139419840&lang=zh_CN外文原文連結(含論文地址):
https://engineering.fb.com/2025/02/05/security/revolutionizing-software-testing-llm-powered-bug-catchers-meta-ach/
相關文章
- 軟體測試技術及工具
- AI Agent框架(LLM Agent):LLM驅動的智慧體如何引領行業變革,應用探索與未來展望AI框架智慧體行業
- bug的一生:軟體測試員,你是如何利用專業技術修復bug的?
- 軟體業的變革推動者:東軟
- 軟體測試技術-黑盒測試
- 獨家專訪 JetBrains:技術是企業變革的助力而非驅動力AI
- 軟體測試---BUG的生命週期
- [技術思考] 軟體可測性分析和實踐
- DataOps for LLM 的資料工程技術架構實踐架構
- 變異測試是測試驅動開發(TDD)的演變
- 測試驅動開發在專案中的實踐
- 《軟體測試的技藝》一個測試工程師的二十年實踐感悟手記工程師
- 談軟體自動化測試工具的評測方法
- 新興技術驅動網路安全產業變革態勢感知技術化身“生產力”產業
- 技術前沿:AI大模型在自動化測試中的應用例項AI大模型
- 軟體自動化測試工具的那些事兒
- 軟體測試培訓分享:做軟體測試工作如何清楚的描述一個bug
- 軟體測試中bug淺析
- Parasoft軟體測試實踐:什麼是左移測試?
- RQM — 需求驅動的測試管理工具
- Rust 在 Android 的程式設計實踐——技術驅動的車雲一體化解決方案探索RustAndroid程式設計
- 軟體測試培訓分享:Bug的作用有多大?
- 軟體自動化測試工具的歷史演進
- 軟體測試常用的工具都有哪些-測試常用工具
- 軟體測試之資料庫測試技術系列七資料庫
- 介面自動化測試世界裡的“身份證”—測試工具Jmeter實踐篇JMeter
- 學會軟體測試技術以後的發展如何?
- 技術乾貨 | ToB 業務場景下自動化測試的實踐及探索
- 只有爛程式設計師才相信世界是由技術驅動的程式設計師
- 探索軟體測試的核心知識——解密第三方軟體測試中心的價值與技術解密
- AI驅動的京東端到端補貨技術建設實踐AI
- 軟體測試案例實踐:銀行如何做大規模自動化測試?
- 學習軟體測試需要掌握哪些技術?
- 軟體測試方法和技術有哪些呢?
- 軟體測試需要學習什麼技術?
- iOS自動化測試驅動工具探索iOS
- 自動化測試:Monkey工具實踐應用~
- 自動化測試的最佳實踐