AI原生實踐:測試用例創作探索

測試用例作為質量保障的核心,影響著研發-測試-發布-上線的全過程,如單元測試用例、手工測試用例、接口自動化用例、UI 自動化用例等,但用例撰寫的高成本尤其是自動化用例,導致了用例的可持續積累、更新和迭代受到非常大制約。長久以來,我們在用例創作技術上一直未有過很大的突破,協助 QA 做好最基本的工作。

直到2023年,生成式 AI 的到來,為用例智能創作帶來了可能,借由 AI 技術,尤其是生成式 AI,一切就變得不一樣了。

我們可以通過 AI 更好地理解需求,理解 UI 頁面,理解接口訪問的含義,智能化的生成測試用例,輔助研發測試提效的同時借由數據飛輪不斷鞏固沉淀測試經驗。

為此,百度移動生態質量效能部啟動了 QAMate 用例智能創作項目,從基于需求生成腦圖用例,基于真機操作的 UI 自動化用例錄制回放,基于流量或代碼生成接口自動化用例三個場景深耕,通過 AI 技術實現測試用例的智能創作,進而輔助研發測試提效,為業務質量保駕護航。

image.png

基于需求生成腦圖用例:輸入需求,一鍵生成測試用例,2個月生成并被采納用例達2.6w 條

移動生態事業群組大部分業務都通過思維導圖(腦圖)來編輯測試用例,但是不同經驗水平同學編寫的測試用例參差不齊。業務和測試經驗越豐富的 QA 同學可以寫出更好的測試用例,反之則有可能會出現遺漏或者冗余,帶來質量問題或者降低測試效率,但遇到研發人員流動則會加劇這個問題。但好在,生成式 AI 的快速發展,使得其已經具備了處理這一復雜任務的能力,其不僅能有效持久化業務及測試經驗,輔助 QA 快速編寫完備的測試用例,還可以通過標準化的生成輸出,使得用例更易于理解及傳承。

QAMate 項目組基于文心大模型,通過構建針對測試用例智能生成的標準化開放共建的 Prompt 層,基于成熟的腦圖用例產品構建同測試人員直接閉環的數據飛輪,及測試&業務經驗外掛知識庫,實現了基于需求生成腦圖用例的能力。

  • Prompt 層開源共建:采用開放 Prompt 層同各業務同學協同共建的模式,使得分業務可以規范輸入輸出、規則明確、針對特定場景優化 Prompt,從而最大程度激發大模型效果

  • 數據飛輪構建:完成了「用例生成 -> 生成用例采納/刪除;人工修正/添加用例 -> 業務個性化模型訓練」數據飛輪的構建,經業務線評估,啟用個性化模型的生成效果會優于92%通用模型的輸出效果

  • 建構外掛知識庫:持久化測試經驗&業務知識,進一步增強了生成效果

image.png

當前 QAMate 已經支持了基于需求文本、表格及整份需求文檔生成測試用例,并支持用戶構建專屬 Prompt、業務經驗知識庫來定向提升生成效果。

APP UI 用例錄制回放:點點手機,搞定 UI 自動化用例,累計支撐1.5w 條 UI 用例編寫,平均穩定性90%+

眾所周知,移動端 APP 的 UI 測試耗時耗力,尤其是集成回歸階段,需要把 UI 測試用例做一遍遍地回歸,甚至還需要在多種不同機型上重復這個過程。為了解決這個噩夢,過去數年,不管是業界還是百度內部,都嘗試了各種方案,其中最有代表性、影響最廣的便是 Appium 自動化測試框架,但是落到實處,Appium 也只是解決了 UI 用例能不能自動化跑起來的問題,基于它構建的各類方案遠沒有真正達成為業務提效的最終目標

如下圖所示,為文心一言輸出的,用 Appium 來編寫百度 APP 首頁搜索框 UI 自動化用例要做的事情,包括不限于:

  • 安裝和配置 Appium 環境、連接設備到 Appium 服務器等

  • 啟動 XPath 元素定位功能,查找搜索框的 XPath(類似 com.baidu.Baidu:id/search_button 這類不易理解的代號)

  • 接著編寫一大段 Python 腳本等等

image.png

image.png

其實不難看出,UI 自動化用例的撰寫成本很高,而且不僅撰寫成本高,穩定性也是影響提效的一大難題。據此前構建的 Fast UI 自動化平臺數據統計,UI 用例執行的穩定性僅70%不到,其核心問題在于 XPath 控件定位容易隨 APP 版本不同、機型不同而變得不同,導致用例執行不穩定。而 APP 業務迭代頻繁,也讓 UI 用例維護、撰寫和執行成本直線上升。

QAMate 項目組以 AI 原生為第一視角,直接拋棄了業界慣用的 XPath 的控件定位技術,基于 YOLOv5對象模型構建底層圖標&組件模型、整合 OCR 能力、多控件布局算法及多真機云控技術,實現了 APP UI 用例錄制回放能力,讓用戶只需要點點手機就能完成 UI 自動化用例的編寫,直接將單 UI 自動化用例步驟編寫的成本由40s/步驟降低至了 5s/步驟,用例整體執行的平均穩定性達到了 90%。

以視覺 AI 技術為基底,使得我們可以以人的視角自動化操控 APP,從而無視 APP 跨版本、跨機型兼容等問題,使得用例編寫成本直線下降同時用例執行穩定性直線上升。

  • 80%以上的自動化測試場景,都是非常簡單直接的單控件檢測和點擊操作。建設以視覺建模、識別能力為核心的通用控件定位算法解決。

image.png
視覺元素建模

image.png
視覺特征匹配尋址

  • 對于剩余的20%場景,往往存在大量復雜的多控件協同檢測和復雜操作方式。建設綜合使用視覺、dom 處理能力的多控件協同控件定位算法進行解決。

image.png
基于多種元素重組頁面結構建模

image.png
多控件 布局&特征 協同尋址

進一步,通過用例產品閉環用戶反饋、自動化執行結果,基于控件準召等指標實現底層視覺模型的自動迭代升級,形成數據飛輪,進而得以持續支撐快速迭代的 APP 業務。

image.png

最后,通過將錄制回放能力集成于同一工具,使得編寫及執行環境高度一致,再基于此構建穩定可靠的云真機控制系統,保障自動化用例高效穩定執行。

image.png

基于流量生成接口自動化用例:接口有流量,就有用例,用例生成占比達 76%

服務端接口自動化測試是服務端質量保障非常重要的一個手段,但是服務端接口眾多,用例編輯和維護的成本非常的高,雖然自動化手段對于質量保障行之有效,但是也帶來了很大的人力成本。

依托生成式 AI,QAMate 實現了基于線上流量的接口自動化用例生成能力,讓服務端 QA 同學不用再花費大量人力去補充接口自動化回歸用例,只要有線上流量進來,自動生成接口自動化用例。

image.png

▎關鍵實踐

基于多種引流方式構建流量接入->分析->用例生成的端到端全流程自動化解決方案,用例編寫維護成本節省70%

  • 低成本:eBPF 實時引流方式,用戶僅需知道 BNS 就可以配置生成任務,一鍵完成總引流到生成case的工作,無需任何開發工作

  • 多渠道:提供 eBPF 流量實時錄制、XSTP GoReplay 引流、用戶流量文件上傳等流量接入方式,覆蓋不同業務形態的模塊

  • 能力強:突破長連接、SSE、chunked 等接口引流能力,支持點到點、inbound 錄制模式,提供單接口錄制上限等接口錄制豐富度相關配置

提供配置化的流量采樣和用例生成策略能力,生成用例的覆蓋率超過人維護用例

  • 流量采樣策略:提供精簡采樣、優先采樣、普通采樣、高覆蓋采樣4種標準采樣模式

  • case 生成策略:提供枚舉值遍歷、邊界值異常、必填項異常、枚舉值異常、字段類型異常等多種異常策略

  • 相對原人工維護 case,自動生成的 case 函數覆蓋率從14.8%->46.7%,行覆蓋率從9.9%->34.7%。單 API 行覆蓋率從66%->74.3%

基于文心大模型和業務外掛知識庫實現個性化的測試訴求識別和用例轉化能力,生成的用例直接滿足業務訴求,無需再人工調整

  • 簡單的 LUI 支持復雜的用例修改能力:通過 LUI 和 LLM 技術識別用戶對于流量用例請求參數、響應斷言以及特定場景的復雜修改訴求,保證用例在其他環境的可運行性和問題攔截能力

  • 業務知識庫:構建業務知識庫存儲不同業務的 case 特征,在生成過程中通過檢索業務知識,轉化為生成訴求的方式,實現生成出滿足業務訴求的用例

image.png
LUI 使用案例

基于接口/代碼生成接口用例:

有了接口文檔/代碼,就能生成用例

以上基于流量的用例生成只能解決回歸測試用例編寫和維護的問題,在全新功能的場景下需要尋找其他的解決方案。我們針對這一場景實現了基于代碼分析和接口文檔變更篩選&生成待測試用例的方案,在研發自測、服務端新功能迭代測試等階段應用,輔助 RD 和 QA 高效完成新功能自測和測試,提升用例規范性、和測試質量。

image.png

▎關鍵實踐

  • 接口文檔生成:基于調用鏈、大模型、業務變更代碼影響的接口分析能力,支持直接從變更代碼挖掘出影響的接口文檔,使得沒有標準化、平臺化的接口文檔管理能力的業務也可接入

image.png

  • 業務知識庫:通過離線的歷史 case 分析和手動錄入的方式構件字段字典信息、斷言和參數特征等業務知識,解決新接口難以生成正確參數值的問題

  • 端到端方案:生成推薦過程融入業務 RD 和 QA 的日常工作流程中,業務無需調整或增加流程,在原有工作流程中就能直接使用到生成好的用例結果

image.png

總結

回顧既有的工作,我們認為,一個 AI 原生的產品,一定要找到自己的數據飛輪,通過數據讓自己的能力不斷迭代升級,而不是純靠人工迭代;一定要拋棄方向上的慣性思維,用 AI 手段從人的視角上找解法;此外,還需要想方設法打磨好產品體驗,降低用戶使用成本,這樣才有機會讓能力落地,讓用戶用起來,從而讓飛輪轉起來。

展望測試用例智能創作方向,能用 AI 技術重構的,遠遠不止于測試用例的智能生成。測試用例落到研發測試環節,存在一個自有的生命周期:測試用例新引入階段(新功能或者回歸用例的撰寫/生成)->執行階段(新功能/回歸用例的簽章執行)-> 入庫階段(用例正式入到回歸用例集合)-> 回歸用例集合(通過篩選進入到當次正式的回歸用例集合)->消亡階段(隨著項目的下線或者更改,用例從回歸用例集合中刪除),這樣形成了用例的生命周期。

AI 技術不僅能重塑用例撰寫過程,我們相信,未來 AI 還能輔助用例的執行、轉化、更新和消亡等過程,進而為研發測試保質提效。

image.png

(本文由百度移動生態質量效能部分享)

——————END——————

推薦閱讀

基于afx透明視頻的視覺增強前端方案

百度一站式數據自助分析平臺(TDA)建設

淺析如何加速商業業務實時化

登錄系統演進、便捷登錄設計與實現

一文帶你完整了解Go語言IO基礎庫

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12217.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python并發編程 05 鎖、同步條件、信號量、線程隊列、生產者消費者模型

文章目錄 一、基礎概念二、同步鎖三、線程死鎖和遞歸鎖四、同步條件(event)五、信號量六、線程隊列(queue)1、常用方法2、queue模塊的三種模式(1)FIFO隊列(2)LIFO隊列(3&…

【JS面試題】原型原型鏈

一、面試真題展示: 1. 如何準確判斷一個變量是不是數組? ① 使用instanceof進行判斷:a instanceof Array ② 使用Array.isArray()進行判斷:Array.isArray(a) 2. 手寫一個簡易的jQuery,考慮插件和擴展性? …

內網工具之LDP的使用

LDP 是微軟自帶的一款活動目錄信息查詢工具,在域控的 cmd 窗口執行 ldp 命令即可打開 LDP 工具。普通域成員主機默認是沒有 LDP 工具的,可以自行上傳ldp.exe 工具上去查詢活動目錄信息。不在域內的機器,也可以通過上傳 ldp.exe 工具上去執行。…

tomcat--目錄結構和文件組成

目錄結構 目錄說明bin服務啟動,停止等相關程序和文件conf配置文件lib庫目錄logs日志記錄webapps應用程序,應用部署目錄workjsp編譯后的結果文件,建議提前預熱訪問 /usr/local/apache-tomcat-8.5.100/work/Catalina/localhost/ROOT/org/apac…

c++string類型

概述 string類型是c的字符串類型&#xff0c;其繼承自basic_string類。使用string需要導入頭文件#include <string>,并且在命名空間std下。cstring是否是寫時復制? (像Qt的string一樣)? 經過自己的測試&#xff0c;推斷&#xff0c;c的方式不是寫時復制&#xff0c;其在…

PingCAP 戴濤:構建面向未來的金融核心系統

作者&#xff1a;戴濤 導讀 近日&#xff0c;平凱星辰解決方案技術部總經理戴濤在 2024 數據技術嘉年華活動中&#xff0c;做了主題為“構建面向未來的金融核心系統”的分享&#xff0c;本文為戴濤演講實錄的全文。 文章分析了中國金融行業的發展趨勢&#xff0c;并且基于這…

在 Mac OS 上使用 Homebrew 打造便捷的軟件安裝體驗:apt-get install 就是brew install:

標題&#xff1a;在 Mac OS 上使用 Homebrew 打造便捷的軟件安裝體驗 在 Mac OS 系統中&#xff0c;雖然不支持 apt-get install&#xff0c;但我們有幸擁有 Homebrew 這樣出色的包管理器。它為我們在 Mac 上安裝各種所需軟件提供了極大的便利。 一、安裝 Homebrew 要安裝 Home…

算法提高之加成序列

算法提高之加成序列 核心思想&#xff1a;迭代加深 dfs 從上往下逐漸增大depth 這樣下面沒有用的方案就不用遍歷了 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 110;int n;int path[N];//當前求哪個位置…

PDF編輯閱讀器PDF Expert for Mac v3.10.1中文激活版

PDF Expert for Mac是一款易于使用的 PDF 編輯器和注釋器&#xff0c;專為 Mac 設備設計。它允許用戶輕松查看、編輯、簽名、注釋和共享 PDF。該軟件使用戶能夠向他們的 PDF 添加文本、圖像、鏈接和形狀&#xff0c;突出顯示和標記文本&#xff0c;填寫表格以及簽署數字文檔。它…

STL----resize

resize的作用 設置容器元素個數和初始值。 resize和reserve resize即改變容器元素個數&#xff0c;也改變容器容量。 reserve只改變容器容量&#xff0c;不改變容器元素個數。 reserve有什么用 reserve---存儲&#xff0c;容量&#xff0c;保留。 1&#xff0c;設置容器容…

Python實現麥克風錄音保存到wav

功能展示&#xff1a; 運行環境&#xff1a; Python: 3.10.4 64-bit 操作系統&#xff1a; 截圖環境&#xff1a;win10 64-bit 視頻錄屏環境&#xff1a;win10 64-bit 功能說明&#xff1a; 點擊界面開始按鈕開始錄音&#xff0c;點擊停止按鈕結束錄音。 源碼文件列表&…

十二生肖Midjourney繪畫大挑戰:釋放你的創意火花

隨著AI藝術逐漸進入大眾視野&#xff0c;使用Midjourney繪制十二生肖不僅能夠激發我們的想象力&#xff0c;還能讓我們與傳統文化進行一場新式的對話。在這里&#xff0c;我們會逐一提供給你創意滿滿的繪畫提示詞&#xff0c;讓你的作品別具一格。而且&#xff0c;我們還精選了…

掃碼槍與Input的火花

文章目錄 前言一、需求&#xff1a;交互細節二、具體實現兩個核心的函數&#xff1a;自動聚焦 三&#xff0c;擴展知識input 與 change的區別 前言 在瀏覽器掃描條形碼獲取條形的值&#xff0c;再操作對應的邏輯。這是比較常見的業務&#xff0c;這里記錄實際操作。 其中PC端…

2023年國賽高教杯數學建模C題蔬菜類商品的自動定價與補貨決策解題全過程文檔及程序

2023年國賽高教杯數學建模 C題 蔬菜類商品的自動定價與補貨決策 原題再現 在生鮮商超中&#xff0c;一般蔬菜類商品的保鮮期都比較短&#xff0c;且品相隨銷售時間的增加而變差&#xff0c;大部分品種如當日未售出&#xff0c;隔日就無法再售。因此&#xff0c;商超通常會根據…

JSON 轉為json串后出現 “$ref“

問題描述 轉為JSON 串時出現 "$ref":"$.RequestParam.list[0]" $ref&#xff1a; fastjson數據重復的部分會用引用代替&#xff0c;當一個對象包含另一個對象時&#xff0c;fastjson就會把該對象解析成引用 “$ref”:”..” 上一級 “$ref”:”” 當前對…

2、架構-服務間的通信

遠程服務將計算機程序的工作范圍從單機擴展至網絡&#xff0c;從本地延 伸至遠程&#xff0c;是構建分布式系統的首要基礎。而遠程服務又不僅僅是為 分布式系統服務的&#xff0c;在網絡時代&#xff0c;瀏覽器、移動設備、桌面應用和服 務端的程序&#xff0c;普遍都有與其他設…

分布式搜索-elaticsearch基礎 安裝es

這里是在虛擬機的Linux系統里安裝es的教程: 1.創建網絡 在Finashell終端輸入指令 docker network create es-net 2.將es.tar安裝包放入tmp的目錄下 輸入指令加載鏡像&#xff1a;docker load -i es.tar 3.再運行docker 命令 docker run -d \--name es \-e "ES_JAVA_O…

UE4_照亮環境_光束light beam

學習筆記&#xff0c;不喜勿噴&#xff0c;侵權立刪&#xff01;祝愿生活越來越好&#xff01; 光束&#xff1a;模擬大氣中散射的光線。利用定向光源模擬真實曙暮光效果或大氣散射的陰影&#xff0c;即可生成 光束 。這些光線為場景添加深度和真實度。 一&#xff1a;一些參數…

RabbitMQ部署指南.md

RabbitMQ部署指南 1.單機部署 我們在Centos7虛擬機中使用Docker來安裝。 1.1.下載鏡像 方式一&#xff1a;在線拉取 docker pull rabbitmq:3.8-management方式二&#xff1a;從本地加載 在課前資料已經提供了鏡像包&#xff1a; 上傳到虛擬機中后&#xff0c;使用命令加載…

ASP.NET銀行大廳自助信息系統的開發與實現

摘 要 本畢業設計在基于銀行業務大廳現有業務的基礎上&#xff0c;針對自助銀行的概念和其獨有特點&#xff0c;通過.NETSQL技術&#xff0c;開發一個簡單的銀行大廳自助信息系統&#xff0c;完成一些自助銀行的業務需求如帳戶信息查詢、帳戶掛失、自助交費、留言、新聞查詢…