[论文阅读] 人工智能+软件工程(软件测试) | 当大语言模型遇上APP测试:SCENGEN如何让手机应用更靠谱

当大语言模型遇上APP测试:SCENGEN如何让手机应用更靠谱?

一、论文基础信息
  • 论文标题:LLM-Guided Scenario-based GUI Testing(《大语言模型引导的基于场景的GUI测试》)
  • 作者及机构:Shengcheng Yu等(德国慕尼黑工业大学、南京大学、同济大学等)
  • 发表来源:IEEE Transactions on Software Engineering(IEEE软件工程汇刊)
  • 发表时间:2025年
二、核心问题拆解:手机APP测试的痛点与突破
1. 研究背景:为什么APP测试越来越难?

想象一下:你手机里的购物APP每次更新后,可能藏着各种“坑”——比如点击“加入购物车”没反应,或者登录时突然闪退。传统的自动化测试方法像“无头苍蝇”一样随机点击屏幕,虽然能发现部分问题,但无法理解APP的真实使用场景(比如“搜索商品→加入购物车→结算”这一系列连贯操作),导致关键功能漏测。

更麻烦的是,现有方法过度依赖代码覆盖率,却忽略了用户实际使用时的体验。比如计算器APP的测试,传统方法可能测不出“输入超长数字时崩溃”的问题,因为它没考虑到数学规则的边界条件。

2. 研究目标:让测试像人类一样“懂业务”

作者想解决的核心问题是:如何让自动化测试工具理解APP的业务逻辑,像人工测试一样按场景(如“登录”“拍照”)生成测试流程?

他们的假设是:大语言模型(LLM)能通过理解APP界面的语义(比如“搜索框”“确认按钮”的功能),结合场景目标(比如“添加商品到购物车”),生成更精准的测试操作。

3. 研究方法:五名“智能特工”协作测APP

作者开发了一个叫SCENGEN的测试框架,它像一个特工小队,由五个LLM代理分工合作:

  • Observer(观察者):用计算机视觉“看清”APP界面上的所有按钮、输入框,比如在笔记APP里找到隐藏的“新建文本笔记”按钮。
  • Decider(决策者):根据场景目标(比如“发邮件”)决定下一步点击哪个按钮,比如先点“撰写邮件”再填收件人。
  • Executor(执行者):执行点击、输入等操作,比如在搜索框里输入“T恤”。
  • Supervisor(监督者):检查操作结果是否符合预期,比如确认点击“发送邮件”后是否跳转到成功页面。
  • Recorder(记录员):记录测试过程,比如保存“点击‘购物车’→跳转失败”的日志,用于后续分析。
4. 研究结果:精准度碾压传统方法

在10种常见APP场景(如邮件、购物、天气查询)的测试中:

  • 逻辑决策准确率:初始决策正确率96.08%,修正后达97.06%。比如在“登录”场景中,97.62%的决策能正确引导输入账号密码。
  • 控件定位准确率:初始定位正确率82.69%,修正后飙升至97.76%。比如能精准找到隐藏在菜单里的“拍照”按钮。
  • 场景覆盖能力:86.87%的测试能完整覆盖目标场景,比如“添加商品到购物车”的全流程测试。
  • bug检测能力:在“翻译”“购物”等复杂场景中,比传统工具(如Monkey、Stoat)多检测出30%以上的崩溃问题。
5. 结论与影响:APP测试进入“智能场景时代”

SCENGEN的核心贡献在于:首次将大语言模型与场景化测试结合,让自动化工具能“理解”用户使用APP的目的,而不是盲目点击。这意味着未来APP更新时,测试效率会更高,用户遇到bug的概率会更低。

三、博客化表达:用生活类比让技术更亲民
类比:SCENGEN像“APP测试界的餐厅领班”
  • 传统测试工具好比“新手服务员”,只会随机推荐菜品(随机点击界面),但SCENGEN像“资深领班”:
    • Observer:观察客人(APP界面)有哪些餐桌(控件)、菜单(功能);
    • Decider:根据客人需求(测试场景,如“吃饭”)推荐菜品顺序(先点开胃菜再点主菜);
    • Executor:上菜(执行操作);
    • Supervisor:检查菜是否上对(操作结果是否正确);
    • Recorder:记录客人反馈(日志),下次服务更精准。
争议与讨论:LLM测试的局限性
  • 依赖英语界面:目前SCENGEN更擅长英语界面的APP,中文界面的语义理解可能打折扣。
  • 成本问题:调用GPT-4V等大模型需要API费用,中小企业可能负担较重。
  • 复杂场景仍需优化:在极少数情况下(如APP有动态加载的广告弹窗),可能误判操作结果。
读者价值:你手机里的APP可能正在被它守护
  • 普通用户:下次更新APP时,遇到闪退、功能失效的概率可能降低,因为开发者可能用SCENGEN做了更全面的测试。
  • 开发者:SCENGEN能减少人工测试的工作量,尤其是复杂场景(如“跨境支付”“多账户切换”)的测试效率会大幅提升。
四、博客框架:从痛点到未来的完整叙事

标题:《告别“瞎点”测试!大语言模型让手机APP像人类一样“懂你”》

导语
你是否遇到过手机APP突然“罢工”?比如拍照时点击“保存”没反应,或者购物时结算按钮点了没动静。这些bug背后,可能是测试工具“太笨”——传统方法只会随机点击屏幕,却不懂你“拍照-修图-保存”的完整需求。最近,科学家用大语言模型(LLM)开发了SCENGEN,让测试工具能像人类一样“理解”APP的使用场景,大幅提升bug检测能力。

核心内容

  1. 问题:传统测试像“无头苍蝇”
    (用“随机点击无法覆盖真实场景”“代码覆盖率≠用户体验”举例,引用)

  2. 突破:SCENGEN的“五人特工队”
    (用餐厅领班类比,拆解五个代理的分工,引用)

  3. 效果:数据证明“智能测试”更靠谱
    (用“97%决策准确率”“多检测30%bug”等数据,引用)

现实意义

  • 对用户:更少bug,更流畅的APP体验;
  • 对企业:缩短测试周期,降低人工成本;
  • 对行业:推动AI在软件工程中的深度应用。

互动结尾
你觉得未来大语言模型还能如何优化APP测试?比如“预测用户可能遇到的隐藏bug”?欢迎在评论区分享你的想法!

五、注意事项:让技术传播更严谨
  • 术语转化:将“多模态LLM”改为“能同时理解文字和图片的AI模型”;
  • 数据可视化:建议用流程图展示五个代理的协作流程;
  • 严谨表述:注明“SCENGEN目前主要适用于英语界面APP,中文场景仍需优化”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

香橙派3B学习笔记7:snap安装管理软件包_打包程序与依赖

有时可以尝试把程文件与其依赖一块打包安装,这里就学习一下。 ssh : orangepi本地ip 密码 : orangepi 操作系统发行版: 基于 Ubuntu 20.04.6 LTS(Focal Fossa)的定制版本,专门为 Orange Pi 设备…

Playwright 测试框架 - .NET

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】

Model Context Protocol (MCP) 是一个前沿框架

微软发布了 Model Context Protocol (MCP) 课程:mcp-for-beginners。 Model Context Protocol (MCP) 是一个前沿框架,涵盖 C#、Java、JavaScript、TypeScript 和 Python 等主流编程语言,规范 AI 模型与客户端应用之间的交互。 MCP 课程结构 …

【量化】策略交易 - 均线策略(Moving Average Strategy)- 代码增强版本

策略交易 - 均线策略(Moving Average Strategy)- 代码增强版本 一、前言 本文主要是针对 【量化】策略交易 - 均线策略(Moving Average Strategy) 中的代码事例,进行逻辑的增强,添加了模拟买入和卖出逻辑&…

为什么要引入内联函数?

C 中引入内联函数主要有以下几个目的: 提高程序运行效率 - 普通函数调用会有一定的开销,如保存现场、传递参数、跳转到函数地址执行等。内联函数在编译时,会将函数体直接插入到调用处,避免了函数调用的开销,从而提高程…

C++.OpenGL (17/64)模型(Model)

模型(Model) 模型系统架构 #mermaid-svg-Zaji5BPdvnIkXIVg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Zaji5BPdvnIkXIVg .error-icon{fill:#552222;}#mermaid-svg-Zaji5BPdvnIkXIVg .error-text{fill:#55222…

【Java学习笔记】System类

System 类 常用方法 方法描述System.exit()退出当前程序System.arraycopy(源数组,源数组起始索引,目标数组,目标数组起始索引,拷贝长度)复制数组元素,比较适合底层调用System.currentTimeMillis()返回当前时间距离 1…

因泰立科技H1X激光雷达:因泰立科技为智慧工业注入新动力

在当今工业领域,精准测量与高效作业是推动产业升级的关键因素。因泰立科技推出的H1X三维轮廓扫描激光雷达,凭借其卓越的性能和广泛的应用场景,正成为智慧工业中不可或缺的高科技装备。 产品简介 H1X三维轮廓扫描激光雷达是因泰立科技基于二维…

【threejs】每天一个小案例讲解:创建基本的3D场景

代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone&#xff0c;无需安装依赖&#xff0c;直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 核心运行代码 <!DOCTYPE html><html><head><t…

微软PowerBI考试 PL300-使用 Power BI 准备数据以供分析【提供练习数据】

微软PowerBI考试 PL300-使用 Power BI 准备数据以供分析 您将了解如何使用 Power Query 从不同的数据源中提取数据&#xff0c;选择存储模式和连接性类型。 您还将了解在对数据进行建模之前&#xff0c;如何分析、清理数据以及将数据加载到 Power BI 中。 在 Power BI 中获取…

Linux与Windows切换使用Obsidian,出现 unexplained changes 问题的解决

如果你的Obsidian文档在Linux与Windows间来回切换&#xff0c;可能会涉及到文件的保存换行符问题&#xff0c;但这样的话就容易导致一个问题&#xff0c;那就是内容无差异&#xff0c;Obsidian却提示unexplained changes&#xff0c;Windows系统下的解决方法如下&#xff0c;找…

Python爬虫-爬取各省份各年份高考分数线数据,进行数据分析

前言 本文是该专栏的第60篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者将基于Python爬虫,爬取各省份历年以来的“各年份高考分数线”进行数据分析。 废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看…

基于cornerstone3D的dicom影像浏览器 第三十章 心胸比例测量工具CTRTool

文章目录 前言一、实现过程1. 学习CobbAngleTool源码2. 新建CTRTool.js文件3. 重写constructor函数4. 重写defaultGetTextLines函数5. 增加_calculateLength函数6. 重写_calculateCachedStats函数7. 重写renderAnnotation函数 二、使用步骤1.引入库2. 添加到cornerstoneTools3.…

[嵌入式AI从0开始到入土]18_Ascend C算子开发环境(S5赛季)

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

《前端面试题:JavaScript 闭包深度解析》

JavaScript 闭包深度解析&#xff1a;从原理到高级应用 一、闭包的本质与核心概念 闭包&#xff08;Closure&#xff09;是 JavaScript 中最强大且最常被误解的概念之一。理解闭包不仅是掌握 JavaScript 的关键&#xff0c;也是区分初级和高级开发者的重要标志。 1. 什么是闭…

【FPGA开发】DDS信号发生器设计

一、常见IP模块介绍 IP(IntellectualProperty)原指知识产权、著作权等&#xff0c;在IC设计领域通常被理解为实现某种功能的设计。IP模块则是完成某种比较复杂算法或功能&#xff08;如FIR滤波器、FFT、SDRAM控制器、PCIe接口、CPU核等&#xff09;并且参数可修改的电路模块&a…

板凳-------Mysql cookbook学习 (九--3)

4.3 使用临时表 Drop table 语句来删除表&#xff0c; 选择使用create temporary table 语句&#xff0c;创建的是一张临时表。 Create temporary table tb1_name(…列定义…) 克隆表 Create temporary table new_table like original_table 根据查询结果建表 Create temporary…

Python Web项目打包(Wheel)与服务器部署全流程

目录 一、本地开发环境准备二、创建setup.py打包配置三、创建WSGI入口文件四、打包生成Wheel文件五、服务器端部署流程1. 传输文件到服务器2. 服务器环境准备3. 配置生产环境变量4. 使用Gunicorn启动服务 六、高级部署方案&#xff08;Systemd服务&#xff09;1. 创建Systemd服…

c++ 基于openssl MD5用法

基于openssl MD5用法 #include <iostream> #include <openssl/md5.h> using namespace std; int main(int argc, char* argv[]) { cout << "Test Hash!" << endl; unsigned char data[] "测试md5数据"; unsigned char out[1024…

如何通过外网访问内网服务器?怎么让互联网上连接本地局域网的网址

服务器作为一个数据终端&#xff0c;是很多企事业单位不可获缺的重要设备&#xff0c;多数公司本地都会有部署服务器供测试或部署一些网络项目使用。有人说服务器就是计算机&#xff0c;其实这种说法不是很准确。准确的说服务器算是计算机的一种&#xff0c;它的作用是管理计算…