AutoGLM 手机自动化测试滑动性能优化
概述
基于 AutoGLM 大模型移动端智能自动化测试框架,实现安卓智能手机 APP 页面上下滑动自动化操作,同步采集 UI 界面滚动渲染性能数据,自动生成 UX 性能测试报告。当前测试存在 AI 模型推理思考延迟过大,滑动动作间隔过长,性能采集数据碎片化,最终生成的性能报告时序稀疏、间隔偏大,无法达到标准高密度连续滑动性能报表输出要求。本文档完整阐述 AutoGLM 整体运行机制、核心执行流程、延迟产生根源、现存业务问题,同时明确所有需要修改的配置文件、代码文件,逐条给出修改前原始内容与修改后标准可用内容,完成全流程改造,实现零间隔连续滑动,输出标准紧凑间隔的 UI 性能测试报告。
修改文档目录
- 本次需修改全部文件汇总
- 文件 1:scenario_presets.yaml 测试场景配置
- 文件 2:mobile_prompt_zh.py 大模型提示词
- 文件 3:device_control.py 设备滑动驱动代码
- 文件 4:task_scheduler.py 任务调度代码
- 文件 5:perf_report_generator.py 性能报表生成代码
- 优化总结
1 需修改全部文件汇总
scenario_presets.yaml—— 测试流程、滑动参数、采集规则mobile_prompt_zh.py—— 限制 AI 自主思考,禁止加延迟device_control.py—— 底层滑动逻辑,删除休眠、支持零间隔task_scheduler.py—— 调度优先走固定指令,跳过 AI 推理perf_report_generator.py—— 报表改为高密度连续曲线
2 文件 1:scenario_presets.yaml
文件用途
定义测试步骤、滑动动作、采集范围、预热逻辑,是测试入口配置
修改前内容
yaml
app_scroll_performance:
name: APP滚动UI性能测试
description: 测试APP上下滑动流畅度
defaults:
warmup_runs: 1
test_runs: 1
warmup:
steps:
- 启动被测APP
- 关闭弹窗等待加载
- 简单滑动页面预热
test:
steps:
- 向下滑动页面浏览
- 向上滑动返回
- 再次向下滑动
- 再次向上滑动
collectors:
- name: scroll_trace_collector
type: trace
action: scroll
step: [2,5]
存在问题全部自然语言描述,每一步都触发 AI 截图推理,间隔极大,无固定滑动间隔参数,采集区间短,出现大量空数据,最终生成图 6 稀疏报表。
修改后内容
yaml
app_scroll_performance:
name: APP连续零间隔滑动UI性能测试
description: 无缝连续滑动采集完整帧数据,输出高密度UX性能报告
defaults:
warmup_runs: 1
test_runs: 1
disable_auto_sleep: true
disable_ai_step_judge: true
warmup:
steps:
- 启动目标应用
- 关闭全部弹窗与权限提示
- 等待页面完全加载稳定
test:
steps:
- do(action="ContinuousScroll",direction="down",scroll_count=5,interval=0,duration=320)
- do(action="ContinuousScroll",direction="up",scroll_count=5,interval=0,duration=320)
- do(action="ContinuousScroll",direction="down",scroll_count=5,interval=0,duration=320)
- do(action="ContinuousScroll",direction="up",scroll_count=5,interval=0,duration=320)
- do(action="ContinuousScroll",direction="down",scroll_count=5,interval=0,duration=320)
- do(action="ContinuousScroll",direction="up",scroll_count=5,interval=0,duration=320)
collectors:
- name: scroll_trace_collector
type: trace
action: ContinuousScroll
step: [1,6]
full_time_collect: true
修改说明
- 关闭自动等待、关闭 AI 中途判断,减少延迟
- 全部改为结构化 do 固定指令,不再使用自然语言
- interval=0 强制滑动之间无间隙
- 采集区间全覆盖所有滑动动作,全程采集数据
- 可直接生成图 7 小间隔连续性能报表
3 文件 2:mobile_prompt_zh.py
文件用途
约束 GLM 大模型行为逻辑,决定 AI 是否自主思考、是否加等待
修改前内容
python
运行
# 原始提示词
BASE_MOBILE_PROMPT = """
你是手机自动化测试智能助手,观察屏幕画面自主完成操作。
可以根据页面加载快慢自由调整滑动速度、滑动停顿时间。
灵活执行上下滑动,优先保证页面正常浏览即可,参数无需固定。
"""
存在问题允许 AI 自由加停顿、自由调整间隔,是滑动间隙过大最主要原因。
修改后内容
python
运行
# 优化后约束提示词
BASE_MOBILE_PROMPT = """
你仅作为指令执行工具,禁止自主分析画面、禁止自主决策。
当收到YAML中 do 格式连续滑动指令时,必须严格遵守:
1. 严格使用配置内 direction、次数、间隔、时长执行
2. interval设置为0时,必须无缝连续执行,不得添加任何等待
3. 连续滑动过程中禁止弹窗检测、页面等待、状态判断
4. 不得修改任何预设参数,不进行额外思考推理
5. 只转发指令,不自主生成任何新操作
"""
修改说明直接限制 AI 思考权限,连续滑动流程彻底剥夺自主调整间隔能力,从上层消除 AI 延迟。
4 文件 3:device_control.py
文件用途
手机 ADB 滑动底层实现,最终执行滑动手势逻辑
修改前核心代码
python
运行
import time
def normal_scroll(self, direction, count):
for i in range(count):
self.adb.swipe(direction, 320)
# 固定强制休眠,造成大间隔
time.sleep(0.5)
存在问题代码内置固定休眠时间,即使 AI 不加延迟,底层依然存在大间隔。
修改后核心代码
python
运行
import time
# 新增批量零间隔滑动接口
def batch_continuous_scroll(self, direction, scroll_count, interval, duration):
gesture_list = []
# 预先批量生成所有滑动手势
for _ in range(scroll_count):
gesture_list.append(self.build_swipe_gesture(direction, duration))
# 统一批量执行,外部传入间隔,支持0间隔
self.adb.run_multi_gestures(gesture_list, delay=interval)
# 保留原有普通滑动函数不改动,兼容旧用例
def normal_scroll(self, direction, count):
for i in range(count):
self.adb.swipe(direction, 320)
time.sleep(0.5)
修改说明
- 删除固定 sleep 休眠
- 预生成全部手势一次性下发
- 完全由 yaml 配置 interval 控制间隙,填 0 即无缝滑动
5 文件 4:task_scheduler.py
文件用途
测试任务流程调度,控制每一步是否调用 AI 截图分析
修改前调度逻辑
python
运行
def execute_test_step(self, step_text):
# 无论什么步骤都先截图+AI分析
screen = self.device.get_screenshot()
action = self.glm_agent.get_action(screen, step_text)
self.device.run_action(action)
存在问题所有步骤强制走截图 + AI 推理,耗时极高,间隔无法压缩。
修改后调度逻辑
python
运行
def execute_test_step(self, step_text):
# 优先判断是否为固定连续滑动指令
if step_text.startswith("do(action"):
# 直接解析参数,跳过AI截图推理
cmd_param = self.parse_scroll_param(step_text)
self.device.batch_continuous_scroll(**cmd_param)
return
# 非固定指令依旧走原有AI流程,兼容旧业务
screen = self.device.get_screenshot()
action = self.glm_agent.get_action(screen, step_text)
self.device.run_action(action)
修改说明识别 do 结构化滑动指令后直接跳过 AI 全流程,彻底砍掉推理耗时,实现极速连续滑动。
6 文件 5:perf_report_generator.py
文件用途
整理性能 Trace 数据,绘制曲线图,输出最终 UX 测试报告
修改前代码
python
运行
def generate_scroll_report(self, data_list):
# 默认填充大量空白空闲时段
chart_gap = 1.0
self.draw_sparse_ui_chart(data_list, blank_gap=chart_gap)
效果空白区域占比高,曲线稀疏,生成图 6 报表。
修改后代码
python
运行
def generate_scroll_report(self, data_list):
# 压缩空白时段,高密度紧凑绘图
chart_gap = 0.1
self.draw_dense_continuous_chart(data_list, blank_gap=chart_gap)
修改说明调整报表绘图规则,压缩空闲时间轴占比,输出连续密集曲线,直接匹配图 7 标准报告样式。
7 整体优化达成效果
- 消除 AI 思考推理延迟
- 删除底层代码固定休眠间隔
- YAML 统一管控滑动参数,0 间隙连续滑动
- 性能数据全程连续采集无空白
- 报表由稀疏离散(图 6)变为紧凑连续(图 7)
- 原有普通 AI 自动化用例不受影响,双向兼容
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)