《王哲-AIAgents在軟件測試中的落地實踐智能化測試新時代.pdf》由會員分享,可在線閱讀,更多相關《王哲-AIAgents在軟件測試中的落地實踐智能化測試新時代.pdf(41頁珍藏版)》請在三個皮匠報告上搜索。
1、AI Agents在軟件測試中的落地實踐智能化測試新時代王哲|百度演講嘉賓王哲百度資深測試工程師2017年畢業加入百度,先后負責百度基礎架構、AI 產品等多個核心業務的質量保障工作、并負責百度技術中臺群組測試環境治理等工作、目前主要負責 AI 驅動的智能化測試解決方案的設計與實施落地。在測試智能化、自動化測試、測試工具建設以及云原生等方面有著深刻的見解和豐富的實踐經驗。目 錄CONTENTS1.智能化測試的重要性與挑戰2.智能化測試整體架構3.AI Agents 在測試環節的應用實踐4.總結與展望智能化測試的重要性與挑戰PART 01軟件測試智能化的重要性1.互聯網企業精細化發展,降本增效&效
2、率提升是核心任務2.軟件復雜度上升,研發模式變革(低代碼、零代碼、AI生成),傳統測試模式容易成為整個研發環節的效率瓶頸3.ChatGPT 等生成式 AI 能力高速發展,給軟件測試變革帶來了巨大的機遇。測試智能化過程遇到的問題 雖然看起來單項任務難度相對更低,但是涉及面更多更廣。想要輔助生成部分代碼&用例設計相對更簡單,但是想要徹底完成某項任務其實更難。QA 與 RD 工作的對比 Copilot 模式在測試場景中接受度低(例如在接口測試場景,輸入詳細的測試步驟生成初版代碼,人工進行細節調整后再進行調試執行)核心原因是測試場景單項任務復雜度較低,僅做代碼生成、續寫或部分工作無法滿足需求,不如直接
3、參考歷史用例進行復制粘貼并修改。在收益不明顯的情況下,改變習慣的工作模式難度大。因此,需要端到端帶來足夠的變化+收益才能快速應用落地Copilot模式在測試場景的應用 由于測試場景的復雜性,現階段讓 AI 徹底替代 QA 不現實,需要人與 AI 協作才能取得更好的效果 協作模式可以是 AI 完成基礎版本,人來 Review 結果并通過人工指導或少量調整達到希望結果 這就要求 AI 來適配人的習慣,生成的基礎版本盡可能與人的期望一致AI 現階段徹底替代 QA 的可行性AI Agents 在測試領域的應用場景用例設計更加準確即更理解業務背景、測試場景覆蓋更全、生成用例設計更加符合QA書寫習慣接口自
4、動化端到端完成測試任務打通生成、合并、執行、修復、提交等環節WEB UI 測試智能化基于用例設計快速實現 WEB UI 智能化測試,包括智能測試&自動化代碼生成與維護AI Agents 需要解決的核心問題一、QA作為對整個項目全局最了解的人,如何讓 AI Agent 對項目有足夠了解,從而生成的內容更準二、如何讓 Agent 獨立完成某類工作,避免頻繁的進行任務A-任務B-任務C的任務轉化,從而有效提升QA工作的效率智能化測試整體架構PART 02AI Agents 需要理解哪些業務知識AI Agents加持的智能化測試工作流智能化測試系統架構圖AI Agents在測試環節的應用實踐PART
5、03AI Agents 需要理解業務哪些內容入職第一周:1.了解系統的基本概念&功能范疇2.作為用戶熟悉整個系統的功能使用3.了解當前系統的測試流程&規范4.熟悉測試自動化編寫&執行規范等日常迭代測試:1.參與需求評審,了解需求迭代功能2.閱讀 PRD、UI/UE、技術方案等全面了解本次變更3.根據研發接口文檔設計&編寫接口自動化測試4.通過 CodeReview 了解本次變更影響面全局知識工作正常啟動的前提在日常測試的各個環節中體現需求級知識日常迭代過程中核心輸入不同的類型的知識在不同測試環節中的依賴程度有一定差異全局知識構建(文檔/API)文檔類:包含純文本文檔和圖片類,其中圖片類先通過
6、OCR 和多模態模型理解轉為文字類,整體通過 GraphRAG 進行索引構建并用于后續檢索增強,從而提升檢索準確度API 類:統一在 API 管理平臺納管,底層提供結構化存儲和向量化存儲兩種能力,支持結構化檢索和語義檢索全局知識構建(代碼)代碼解析與 API 類似,代碼管理平臺默認支持了基于 AST 解析的 SourceGraph 檢索能力和基于 embedding 的語義檢索能力,同時,結合測試代碼庫的典型特征,我們進一步對測試代碼庫的代碼段進行分類,并針對其中 API 調用的代碼進行了結構化信息的提取。需求級知識構建與全局知識不同,需求級知識往往是本次測試任務中各個環節的核心輸入,且上下文
7、內容有限。因此,在數據的處理上更多的是對知識的關聯綁定,便于對相關數據的規則檢索;此外,針對 UI&UE 稿等圖片信息,與全局知識類似,也會進行一些預處理,包括圖片理解等操作;同時,針對 PRD 文檔會進行一些結構化拆分,例如思維腦圖轉化,用于后續用例設計等環節。知識檢索與應用能力我們建設了統一的檢索服務打通各類知識檢索,通過統一檢索&問答 API 來面向上層的各類測試場景智能體提供服務;同時,針對一些簡單問答場景,也提供了開箱即用的 ChatBot,可以針對項目知識、需求迭代細節等內容提供問答服務。傳統智能化用例設計的局限需求+多級檢索 Chunks 生成用例設計多級檢索 Chunks 構建
8、多級 Chunks 檢索局限:1.多級 Chunks 檢索后得到的原始片段作為模型輸入的一部分,存在導致模型幻想發揮的可能;2.針對圖片類的信息無法有效利用,導致生成用例不完整;3.需求-用例的單步推理模式很難控制用例拆解的粒度,通常需要人工介入提前把完整需求拆分成若干個子需求;4.用例生成符合業務規范難以保證,絕大部分場景需要人工介入對結果進行調整;用例設計Agent目標一、盡可能端到端完成用例生成任務二、優化 RAG 策略,減少幻想問題,提升生成準確率三、提升業務側滿足度,尤其是用例規范&風格等要求用例設計Agent Workflow設計需求智能拆解將非結構化的 PRD 等文檔經過模型理解
9、,轉化為結構化的思維腦圖測試點智能提取為思維腦圖中提取出一組相對獨立的測試點,每個測試點后續會展開為若干個用例按需檢索通過 Agent 模式,讓 LLM 針對測試點中的模糊內容發起提問,通過問答模式實現檢索增強測試點用例設計利用 LLM 能力,通過測試點及檢索增強整合后的內容生成對應的測試用例用例規范優化將模型生成的測試用例按照各個業務線的用例編寫規范進行優化&改寫用例設計Agent效果演示接口測試Agent目標一、盡可能端到端完成接口測試任務,包括生成&合并&調試等環節。二、在整體能力可復用的前提下,靈活支持業務場景的自定義擴展,滿足不同類型的項目需求接口測試Agent之用例生成一、針對輸入
10、參數識別用例編寫場景(新增&改寫&等)和所屬業務,從而支持按需參數&實現方法加載;二、靈活的模塊化設計+完善的基礎能力實現,業務側既可以通過輕量級配置模式,也可以通過自定義實現模式讓生成效果更match業務預期接口測試Agent之用例合并&執行用例合并Agent 定義(簡化版)用例合并工具集合用例執行針對指定類型用例調用標準執行工具執行即可,并產出標準格式報告用于后續用例分析&修復場景。接口測試Agent之用例問題定位&修復用例的定位&修復是日常接口自動化相關工作中的重頭戲,也是涉及相對較廣的工作。測試用例異常的原因可能很多,包括:1.用例本身的語法問題&邏輯問題2.服務端本身的穩定性&功能問
11、題3.服務端 API 變更,與之前不兼容,導致用例失敗4.服務端內部有隱藏邏輯校驗,測試代碼沒有考慮兼容等讓 Agent 能夠完成任務的前提是 Agent 能夠通過工具獲取到我們日常問題定位需要的內容,因此,我們需要提供一系列工具來完成相關任務。接口測試Agent效果演示WEB UI測試典型特征&核心目標WEB UI 測試典型特征:1.對于用戶產品而言,工作量大,幾乎所有的改動都需要從 WEB 端進行相關的驗證&回歸。2.自動化成本編寫&維護成本高,每個操作對應的元素都需要人工設計&編寫元素定位表達式,同時一次組件升級或頁面優化都可能導致原有自動化代碼不可用。傳統錄制&回放方案弊端:1.傳統的
12、錄制&回放方案僅解決了首次元素定位的成本,但是往往元素定位的方式并不魯棒,導致頁面稍有細微調整都會導致自動化測試代碼失效,維護成本更大。2.無論是新增用例,還是原有用例失效,都需要重新進行一次錄制,而錄制過程其實是純人工操作,額外增加一系列錄制成本,隨著用例的增多,維護成本不斷線性增長。WEB UI 智能化核心目標:1.利用大模型的能力,智能化生成元素定位方式(例如 ID,XPATH,CSS Selector等),并保證元素定位表達式盡可能簡潔&魯棒。2.新增場景基于用例設計或簡要截圖說明自動執行智能化測試并生成自動化測試代碼,回歸等原有用例調整環節自動完成用例代碼修復,全流程盡可能降低人工參
13、與的操作成本。WEB UI測試Agent建設歷程-可行性驗證HTML 壓縮基于 LLM 的元素定位通過 HTML 壓縮和基于 LLM 的元素定位,可以實現基本的可行性驗證,通過基礎的驗證集合驗證,75%的元素定位完全正確,且符合專業標準,初步證明了整體方案的可行性。WEB UI測試Agent建設歷程-初版架構在初步可行性驗證完成后,我們希望快速搭建一個 Demo 系統來跑通一個完整的流程:即輸入完整的測試步驟描述,通過AI Agents 來自動完成整個瀏覽器的操作,并在操作完成后基于操作的步驟生成自動化 WEB UI 測試代碼。涉及到的模塊:1.HTML 壓縮模塊:參考可行性驗證,負責 HTM
14、L 壓縮2.元素定位:參考可行性驗證,負責找出對應的操作元素的元素定位表達式3.瀏覽器執行模塊:以 Selenium 為基礎,提供了一套通用的瀏覽器操作接口并實現瀏覽器操作4.測試代碼生成模塊:簡單的 prompt 推理,傳遞測試場景和瀏覽器執行的操作動作歷史即可WEB UI測試Agent建設歷程-基于準確率提升的架構優化問題&挑戰:輸入的操作步驟要求過高,實際落地困難1.每個用戶描述的操作步驟需要嚴格對應瀏覽器的操作步驟,任何一步沒有對應上大概率任務就跑飛了。2.對于操作失敗的場景性兼容不夠,任何一步沒有達到預期效果時,應該重新思考執行對應步驟,但目前會自動跳過,導致大概率后續的動作全部失敗
15、了。brain像人在 WEB 交互一樣,在當前的瀏覽器狀態下,下一步需要進行的操作是什么,并通過簡單的文本描述輸出即可。而通過在 brain 中整體放入一個多輪對話場景中,可以在 brain 推理的環節中更加準確的理解全局任務、歷史動作和當前操作的關系等。在 brain 推理時,需要從當前瀏覽器頁面的真實狀態出發來判斷下一步的操作以及最近一步操作的結果,僅僅通過 HTML 文件其實是幾乎做不到的,更加直觀的方式就是通過瀏覽器截圖。在 brain 的每一輪新的對話中,我們會傳當前瀏覽器最新狀態的頁面的截圖。location_element單純僅負責一件事,就是找出 brain 拆解出的操作對象的
16、元素定位方式即可。WEB UI測試Agent建設歷程-工程優化應用HTML 二次壓縮XPATH 自動優化策略問題&挑戰:1.成本問題:HTML壓縮效率有限,每輪元素定位的輸入token約為30-80K,成本過高2.效果問題:元素定位成功率不夠高(約90%),元素定位的XPATH或CSS Selector有時冗余,影響優雅度和魯棒性,頁面結構調整后,定位容易受影響操作對象:【姓名】的輸入框核心區域:針對當前核心區域向父標簽連找三級,并保留當前三級父標簽下的至多五級子元素,以及從根節點到三代父標簽的路徑。/divclass=container/formid=login-form/inputtype
17、=text and name=username and placeholder=Enter username模型輸出的元素定位表達式/formid=login-form/inputname=usernameStep1:將 XPATH 表達式拆解了 N 個 AND 條件組合,例如:1.元素是input標簽2.元素的type屬性為text3.元素的name屬性為username4.元素的placeholder屬性為Enter username5.元素位于id為login-form的form標簽內6.元素位于class為container的div標簽內Step2:逐個刪除 AND 條件,如果刪除某個
18、條件后,元素定位不唯一,則保留該條件,直到所有條件全部簡化驗證完成。WEB UI測試Agent建設歷程-人機交互范式問題&挑戰:在一系列優化后,仍然還有一些 corner case 無法正常處理,需要引入人工交互指引或者歷史經驗引導。典型場景:例如 svg,img 等圖片&圖標,單獨依賴 HTML 內容找到對應操作元素的難度通常很大。優化一:在嘗試操作失敗后,不直接終止,而是進入人工支持在之前的流程中,一旦測試場景中任意一步異常,會導致整個流程終止。如果希望調整描述步驟等信息重試,需要重新開始,使用體驗和效率都很差。通過加入人工支持環節,可以在遇到疑難場景后,人工進行指導來進行后續操作,從而通
19、過簡單的人工交互讓整體流程跑通,大幅提升體驗。同時,在人工支持的場景中,既可以簡單通過文字描述下一步的操作場景來糾正步驟規劃問題,也可以通過直接給出元素定位方式來解決元素定位失敗的問題,具體以實際的出錯原因進行指導。優化二:引入歷史經驗,在元素定位時優先參考歷史經驗在整個測試任務執行成功后,自動將其中涉及到的一系列元素操作的元素定位表達式進行持久化保存,在后續元素定位時,如果涉及到的頁面 URL 中有歷史元素定位方式,則優先從歷史經驗加載。一方面可以提升整體準確率,也可以降低一定的 token 消耗(歷史經驗的token長度通常遠小于壓縮后的HTML內容的token長度)WEB UI測試Age
20、nt建設歷程-自動修復能力WEB UI 自動化用例的維護成本一貫在 WEB UI 自動化中占比很高,智能化能力需要覆蓋 WEB UI 自動化用例的維護&更新。自動修復能力還是以 WEB UI 智能生成能力為核心,在這個基礎上增加了測試代碼到操作動作的轉化、正常動作的快速回放能力以及后置的代碼diff分析與更新能力。此外,為了避免頻繁轉化,我們也提供了一套基于 Action 格式的數據驅動模式的 WEB UI 自動化框架,可以無縫實現智能執行+修復,適合 WEB UI 自動化從零開始的新業務。WEB UI測試Agent效果演示總結與展望PART 04總結1.AI Agents 給測試環節帶來了新
21、的可能,它一定會顛覆傳統的測試流程,形成 10 x 倍提效;2.AI Agents 在落地過程中,需要解決好兩類問題,一是讓 Agent 足夠理解業務、打通業務私域知識;二是結合業務實際情況,讓 Agents 能盡可能端到端完成任務,從而實現模式變更和效率提升3.AI Agents 在很多環節都有充分的想象空間,包括但不限于用例設計、接口測試、WEB 測試等4.AI Agents 等智能化解決方案在落地過程中,要循序漸進,從小規模試點開始,看到收益和變革后再逐步擴大應用范圍;5.加強團隊的 AI 原生應用思維對于智能化測試的落地有著重要的影響。展望1.強化多模態數據理解能力2.代碼&文檔&設計圖等各類知識一體化3.智能知識迭代,時刻理解項目最新進展&功能1.模塊化組合,個性化定制,快速搭建符合業務流程的 AI Agents 生態2.更精準的效果、更獨立的處理能力,進一步簡化測試工作流程。利用AI技術深化計算機對現實世界的理解推動研發進入智能化時代