告別人工寫腳本!多模態(tài)大模型驅(qū)動攜程UI自動化測試邁入“描述即生成”階段
作者簡介
Jessi Peng,攜程資深后端開發(fā)工程師,關(guān)注AI技術(shù)在測試領(lǐng)域的應(yīng)用。
一、引言
在傳統(tǒng)的UI自動化測試流程中,測試人員需要構(gòu)建完整的開發(fā)環(huán)境,包括Python運行環(huán)境、PyCharm集成開發(fā)環(huán)境、自動化測試框架等工具鏈的配置與部署。在用例編寫過程中,測試人員必須通過人工方式精確定位目標(biāo)UI元素,并基于自動化框架封裝的底層方法,手工編寫測試代碼。
這種傳統(tǒng)模式不僅技術(shù)門檻較高,而且在面對復(fù)雜的用戶界面時,元素定位的準(zhǔn)確性和代碼編寫的效率都難以得到有效保障,導(dǎo)致整個測試用例開發(fā)過程極為繁瑣、耗時且容易出錯。
近年來,大模型在自然語言理解、推理規(guī)劃等方面展現(xiàn)出了令人矚目的能力。特別是多模態(tài)大模型的快速發(fā)展,為UI自動化測試領(lǐng)域帶來了新的技術(shù)機遇。多模態(tài)大模型具備同時處理文本、圖像等多種數(shù)據(jù)模態(tài)的能力,能夠深度理解用戶界面的視覺特征和結(jié)構(gòu)信息,并結(jié)合自然語言描述進行智能推理。
基于這一技術(shù)趨勢,本文提出了一種基于多模態(tài)大模型的UI自動化用例生成方法。該方法以頁面截圖、DOM樹結(jié)構(gòu)以及自然語言用例描述作為輸入,充分利用多模態(tài)大模型的跨模態(tài)理解能力和邏輯推理能力,實現(xiàn)對UI元素的智能識別與定位,并自動生成可持續(xù)執(zhí)行的UI自動化測試用例。這種方法有效突破了傳統(tǒng)人工編寫模式的技術(shù)壁壘,顯著降低了UI自動化測試的實施成本和技術(shù)門檻。
二、UI自動化用例智能化生成技術(shù)演進
隨著大模型能力的持續(xù)提升,UI自動化測試領(lǐng)域正經(jīng)歷著從傳統(tǒng)規(guī)則驅(qū)動向智能化生成的重要轉(zhuǎn)變。該項目在UI自動化測試實踐中,基于不同階段大模型技術(shù)的發(fā)展水平,進行了系統(tǒng)性的技術(shù)探索與迭代優(yōu)化,形成了以下四個漸進式發(fā)展階段:

第一階段:基于文本屬性的初步探索
在大模型技術(shù)發(fā)展的初期階段,本研究采用大模型結(jié)合頁面控件的文本屬性信息和自然語言用例描述,實現(xiàn)UI自動化用例的自動生成。該階段的核心技術(shù)路線是通過提取頁面中各UI控件的可見文本屬性(如按鈕文本、標(biāo)簽內(nèi)容、提示信息等),構(gòu)建基于文本特征的元素定位策略。
然而,該方法存在顯著的技術(shù)局限性:首先,完全依賴文本屬性的元素定位方式在面對動態(tài)內(nèi)容變化時表現(xiàn)出較差的魯棒性,導(dǎo)致生成的測試用例在后續(xù)執(zhí)行過程中穩(wěn)定性不足;其次,對于圖標(biāo)類按鈕、圖片鏈接等缺乏明確文本描述的UI控件,該方法無法實現(xiàn)有效的元素識別與定位,嚴(yán)重限制了測試用例的覆蓋范圍和適用性。
第二階段:基于唯一標(biāo)識-控件ID的規(guī)范化方案
為了解決第一階段中文本屬性依賴性過強的問題,本研究在第二階段引入了基于唯一標(biāo)識符(ID)的元素定位機制。通過為頁面中的每個UI控件分配唯一且穩(wěn)定的ID屬性,結(jié)合企業(yè)內(nèi)部埋點管理平臺對控件ID進行統(tǒng)一管理和維護,顯著提升了元素定位的準(zhǔn)確性和測試用例的穩(wěn)定性。
該方案的核心優(yōu)勢在于:
- 建立了標(biāo)準(zhǔn)化的控件標(biāo)識體系,確保元素定位的唯一性和確定性;
- 有效解決了無文本屬性控件的識別問題,擴大了測試用例的覆蓋范圍。
但同時,該方案也帶來了新的技術(shù)挑戰(zhàn):需要投入大量的人工成本進行控件ID的管理和持續(xù)維護工作,增加了系統(tǒng)開發(fā)和運維的復(fù)雜度,在一定程度上限制了方案的可擴展性和實用性。
第三階段:多模態(tài)信息融合的智能定位
隨著多模態(tài)大模型技術(shù)的快速發(fā)展,本研究進入了第三個發(fā)展階段,開始探索基于視覺信息、結(jié)構(gòu)信息和語義信息相結(jié)合的智能化元素定位方法。該階段的技術(shù)核心是利用多模態(tài)大模型同時處理頁面截圖、DOM樹結(jié)構(gòu)以及自然語言用例描述,實現(xiàn)對UI元素的智能識別與精確定位。
這一技術(shù)方案的主要創(chuàng)新點包括:
- 構(gòu)建了跨模態(tài)的UI理解框架,能夠綜合利用視覺特征和結(jié)構(gòu)特征進行元素定位;
- 消除了對人工控件ID管理的依賴,顯著降低了系統(tǒng)維護成本;
- 提升了對復(fù)雜UI界面的適應(yīng)能力,能夠處理動態(tài)生成的頁面內(nèi)容;
然而,該階段仍然要求測試人員編寫詳細且規(guī)范的用例描述文檔,明確指定每個測試步驟的具體操作和預(yù)期斷言,人工編寫成本依然較高,限制了方案的推廣應(yīng)用。
第四階段:基于自主推理的端到端智能生成
在當(dāng)前階段,本研究實現(xiàn)了從用例描述到可執(zhí)行測試代碼的端到端智能生成。該階段的核心技術(shù)是構(gòu)建了一個基于多模態(tài)大模型的自主推理與動態(tài)調(diào)試框架,能夠根據(jù)高層次的用例描述和頁面截圖信息,自動進行測試步驟的規(guī)劃和分解。
該框架的技術(shù)架構(gòu)包括以下關(guān)鍵組件:
- 智能推理引擎:基于多模態(tài)大模型的自然語言理解和邏輯推理能力,將抽象的用例描述轉(zhuǎn)化為具體的操作步驟序列;
- 動態(tài)執(zhí)行引擎:結(jié)合DOM樹結(jié)構(gòu)信息和系統(tǒng)層面封裝的UI操作接口,實現(xiàn)測試步驟的實時執(zhí)行和結(jié)果驗證;
- 自適應(yīng)調(diào)試機制:當(dāng)測試執(zhí)行失敗時,自動收集錯誤信息并反饋給大模型,實現(xiàn)測試步驟的動態(tài)優(yōu)化和調(diào)整。
該階段的技術(shù)突破在于:
- 大幅降低了對用例描述規(guī)范性和詳細程度的要求,測試人員只需提供高層次的測試目標(biāo)描述;
- 實現(xiàn)了測試用例生成過程的完全自動化,消除了人工編寫詳細步驟的需求;
- 通過動態(tài)調(diào)試和自適應(yīng)優(yōu)化,顯著提升了生成測試用例的質(zhì)量和成功率。
這一技術(shù)演進路徑充分體現(xiàn)了多模態(tài)大模型在UI自動化測試領(lǐng)域的巨大潛力,為實現(xiàn)真正意義上的智能化測試用例生成奠定了堅實的技術(shù)基礎(chǔ)。
三、基于多模態(tài)大模型的UI自動化用例生成系統(tǒng)架構(gòu)
本研究構(gòu)建了一個端到端的AI驅(qū)動UI自動化用例生成系統(tǒng),該系統(tǒng)以多模態(tài)大模型為核心,通過深度集成視覺理解、自然語言處理和動態(tài)執(zhí)行反饋機制,實現(xiàn)了從用例描述到可執(zhí)行測試代碼的全自動化轉(zhuǎn)換。系統(tǒng)設(shè)計遵循分層解耦、模塊化組合的架構(gòu)原則,旨在最大程度降低人工干預(yù)需求,顯著提升UI測試用例的生成效率和質(zhì)量穩(wěn)定性。
3.1 系統(tǒng)架構(gòu)概覽
系統(tǒng)采用五層架構(gòu)設(shè)計模式,自上而下依次為用戶交互層、API服務(wù)層、AI核心層、執(zhí)行引擎層和基礎(chǔ)設(shè)施層。各層次間通過標(biāo)準(zhǔn)化接口進行通信,確保系統(tǒng)的可擴展性和可維護性。

- 用戶交互層:作為系統(tǒng)的前端門戶,提供直觀友好的人機交互界面,支持用戶輸入目標(biāo)URL、自然語言用例描述等。同時提供生成結(jié)果的可視化展示、人工審核、人工編輯等后處理功能。通過模塊化的界面設(shè)計,有效降低了用戶的使用門檻,提升了系統(tǒng)的易用性和用戶體驗。
- API層:提供標(biāo)準(zhǔn)化的服務(wù)接口,承擔(dān)連接前端交互和后端AI處理的橋梁作用。調(diào)試代碼生成服務(wù)負責(zé)根據(jù)用戶輸入自動生成預(yù)執(zhí)行代碼,與自動化執(zhí)行平臺深度集成實現(xiàn)設(shè)備啟動和頁面導(dǎo)航。AI運行服務(wù)提供與多模態(tài)大模型的通信接口,與執(zhí)行設(shè)備進行實時連接和數(shù)據(jù)傳輸。該層確保了系統(tǒng)各組件間的高效協(xié)作和數(shù)據(jù)流的穩(wěn)定傳遞。
- AI核心層:AI核心層是整個系統(tǒng)的智能大腦,基于先進的多模態(tài)大模型技術(shù)實現(xiàn)復(fù)雜的推理決策和代碼生成任務(wù)。該層利用大模型的邏輯推理能力,將頁面截圖的視覺信息自然語言用例描述進行深度融合,將高層次的測試目標(biāo)自動分解為具體的操作步驟序列。動態(tài)代碼生成模塊采用模板化和參數(shù)化的代碼生成策略,根據(jù)推理結(jié)果和當(dāng)前頁面狀態(tài)實時生成符合自動化測試框架規(guī)范的可執(zhí)行Python代碼。生成過程中建立了基于強化學(xué)習(xí)的反饋優(yōu)化機制,當(dāng)執(zhí)行失敗時能夠分析失敗原因(如元素未找到、斷言失敗等),動態(tài)調(diào)整推理策略、修正元素定位方法或重新規(guī)劃操作步驟,實現(xiàn)測試用例的迭代優(yōu)化和成功率提升。
- 執(zhí)行引擎層:執(zhí)行引擎層負責(zé)AI生成代碼的實際執(zhí)行和智能化的環(huán)境管理,通過多模態(tài)元素定位技術(shù)實現(xiàn)對UI控件的精準(zhǔn)識別和操作。該層集成了DOM樹結(jié)構(gòu)化分析、視覺坐標(biāo)索引建立和坐標(biāo)定位校準(zhǔn)等關(guān)鍵技術(shù),確保元素定位的準(zhǔn)確性和穩(wěn)定性。自適應(yīng)執(zhí)行引擎提供連續(xù)失敗檢測、頁面狀態(tài)變化監(jiān)測和智能重試等機制,有效處理執(zhí)行過程中的各種異常情況。通過實時的結(jié)果反饋機制,將執(zhí)行狀態(tài)、錯誤信息和頁面變化等關(guān)鍵數(shù)據(jù)及時傳遞給AI核心層,支持動態(tài)調(diào)整和持續(xù)優(yōu)化。
- 基礎(chǔ)設(shè)施層:基于公司的基礎(chǔ)框架,為整個系統(tǒng)提供穩(wěn)定可靠的運行基礎(chǔ)和技術(shù)保障。
3.2 智能化生成流程
整個流程以文本用例管理平臺為起點,經(jīng)過預(yù)處理、智能推理、實時執(zhí)行和動態(tài)調(diào)整等關(guān)鍵階段,最終輸出高質(zhì)量的UI自動化測試代碼。

流程起始于文本用例管理平臺,該平臺承載著測試需求的初始輸入,包括目標(biāo)頁面信息、自然語言用例描述和相關(guān)測試數(shù)據(jù)。系統(tǒng)首先通過UI用例生成平臺的調(diào)試代碼生成服務(wù),根據(jù)目標(biāo)頁面信息自動生成預(yù)執(zhí)行代碼。隨后,UI腳本運行平臺接收預(yù)執(zhí)行代碼,完成真實設(shè)備的自動化啟動、進入目標(biāo)頁面,為后續(xù)的AI分析提供標(biāo)準(zhǔn)化的執(zhí)行環(huán)境。
系統(tǒng)啟動AI生成服務(wù)模塊,開始核心的智能生成流程。該階段首先進行多模態(tài)信息的實時采集,包括當(dāng)前頁面的截圖(經(jīng)過工程處理后包含控件標(biāo)注信息)、簡化后的DOM樹結(jié)構(gòu)以及用戶數(shù)輸入的用例描述信息。利用多模態(tài)大模型的邏輯推理能力,將高層次的用例描述分解為具體的操作步驟序列。每個規(guī)劃步驟中,系統(tǒng)執(zhí)行獲取當(dāng)前步驟目標(biāo)元素操作,通過多模態(tài)元素定位技術(shù)精確識別當(dāng)前步驟所需操作的UI控件。基于識別結(jié)果,系統(tǒng)進行生成當(dāng)前步驟代碼處理,實時輸出符合測試框架規(guī)范的可執(zhí)行Python代碼片段。
生成的代碼片段立即在真實設(shè)備環(huán)境中執(zhí)行,系統(tǒng)通過執(zhí)行成功判斷機制進行實時驗證。若當(dāng)前步驟執(zhí)行成功,系統(tǒng)進入執(zhí)行完成判斷流程,評估整個測試用例是否已完全生成;若執(zhí)行失敗,系統(tǒng)啟動智能容錯機制,分析失敗原因并嘗試重新生成優(yōu)化后的代碼。為避免無效循環(huán)和資源浪費,當(dāng)連續(xù)失敗次數(shù)超過預(yù)設(shè)閾值時,系統(tǒng)觸發(fā)拋出異常流程,記錄詳細的失敗信息并通過消息通知服務(wù)進行實時告警。對于成功完成的測試用例,系統(tǒng)執(zhí)行輸出完整代碼操作,生成結(jié)構(gòu)化的、可直接執(zhí)行的完整測試腳本。
生成的完整測試代碼同時輸出到UI用例生成平臺,通過人工審核環(huán)節(jié),確保生成代碼的質(zhì)量和業(yè)務(wù)邏輯的正確性。審核通過的用例自動提交到UI自動化用例倉庫,用于后續(xù)版本迭代回歸的持續(xù)運行。
四、實踐案例展示
本案例以攜程酒店訂單詳情申請退款場景為例,該場景具有界面元素豐富、交互邏輯復(fù)雜、數(shù)據(jù)驗證嚴(yán)格等特點,能夠全面展示系統(tǒng)從自然語言用例描述到可執(zhí)行測試代碼的端到端智能化生成能力。
實踐場景:酒店訂單詳情,不可取消場景,用戶想申請退款,到退款頁面核對退款信息,以及退款明細信息。
自然語言用例描述:
- 用戶訂單為不可取消策略
- 用戶進入申請退款頁面
- 頁面展示退款金額,退款金額下方展示提示"若審核成功,錢款原路退回"
- 用戶點擊退款金額右側(cè)的icon,彈出退款明細浮層
頁面信息:

最終生成代碼:
def runTest(self):
"""初始任務(wù)描述:
Given用戶訂單為不可取消策略
When用戶進入申請退款頁面
Then頁面展示退款金額,退款金額下方展示提示"若審核成功,錢款原路退回"
And用戶點擊退款金額右側(cè)的icon
Then彈出退款明細浮層
"""
# 點擊協(xié)商取消按鈕
self.click(self.findAnyElement("協(xié)商取消按鈕"), index=0)
# 點擊“去申請”按鈕
self.click(self.findAnyElement("去申請按鈕"), index=0)
# 選擇取消原因“行程改變/訂錯”
self.click(self.findAnyElement("行程改變/訂錯"), index=0)
# 點擊“確認”按鈕
self.click(self.findAnyElement("確認"), index=0)
# 斷言頁面展示退款金額
self.assert_exist(self.findAnyElement("申請退款¥8840"), descriptinotallow="頁面展示退款金額")
# 斷言頁面展示提示“若審核成功,錢款原路退回”
self.assert_exist(self.findAnyElement("若申請成功,錢款原路退回"), descriptinotallow="頁面展示提示“若審核成功,錢款原路退回”")
# 點擊退款金額右側(cè)的icon
self.click(self.findAnyElement("退款金額信息icon"), index=0)
# 斷言彈出退款明細浮層
self.assert_exist(self.findAnyElement("退款明細浮層"), descriptinotallow="彈出退款明細浮層")本系統(tǒng)已成功集成至某團隊的前端測試流程中,經(jīng)過持續(xù)驗證和優(yōu)化迭代,取得了顯著的應(yīng)用成效。
截至目前,該團隊累計自動生成UI測試用例數(shù)7000+,整體生成成功率達到80%以上,UI自動化用例覆蓋率達到80%左右;通過智能化生成的UI自動化測試用例在2025年上半年共發(fā)現(xiàn)前端缺陷個數(shù)300+,其中包括交互邏輯錯誤、數(shù)據(jù)顯示問題等多種類型。這些缺陷的及時發(fā)現(xiàn)和修復(fù),有效避免了潛在的生產(chǎn)環(huán)境故障,為該團隊前端業(yè)務(wù)系統(tǒng)的穩(wěn)定運行提供了重要保障。
五、未來規(guī)劃
UI自動化用例智能生成系統(tǒng)在測試流程中的深度應(yīng)用過程中,基于當(dāng)前應(yīng)用實踐中的經(jīng)驗積累和技術(shù)瓶頸分析,未來會繼續(xù)精進系統(tǒng)的成功率、穩(wěn)定性,以及對生成成本的有效控制。
如果您對多模態(tài)大模型驅(qū)動的 UI 自動化用例生成流程的落地實施方面有更多見解與實戰(zhàn)經(jīng)驗,歡迎在評論區(qū)留言交流。期待與更多業(yè)內(nèi)人士碰撞思想、共享成果,共同推動 AI 賦能軟件測試領(lǐng)域的持續(xù)創(chuàng)新與進步。





























