AutoGLM 手机自动化测试滑动性能优化

概述

基于 AutoGLM 大模型移动端智能自动化测试框架,实现安卓智能手机 APP 页面上下滑动自动化操作,同步采集 UI 界面滚动渲染性能数据,自动生成 UX 性能测试报告。当前测试存在 AI 模型推理思考延迟过大,滑动动作间隔过长,性能采集数据碎片化,最终生成的性能报告时序稀疏、间隔偏大,无法达到标准高密度连续滑动性能报表输出要求。本文档完整阐述 AutoGLM 整体运行机制、核心执行流程、延迟产生根源、现存业务问题,同时明确所有需要修改的配置文件、代码文件,逐条给出修改前原始内容与修改后标准可用内容,完成全流程改造,实现零间隔连续滑动,输出标准紧凑间隔的 UI 性能测试报告。

修改文档目录

  1. 本次需修改全部文件汇总
  2. 文件 1:scenario_presets.yaml 测试场景配置
  3. 文件 2:mobile_prompt_zh.py 大模型提示词
  4. 文件 3:device_control.py 设备滑动驱动代码
  5. 文件 4:task_scheduler.py 任务调度代码
  6. 文件 5:perf_report_generator.py 性能报表生成代码
  7. 优化总结

1 需修改全部文件汇总

  1. scenario_presets.yaml ------ 测试流程、滑动参数、采集规则
  2. mobile_prompt_zh.py ------ 限制 AI 自主思考,禁止加延迟
  3. device_control.py ------ 底层滑动逻辑,删除休眠、支持零间隔
  4. task_scheduler.py ------ 调度优先走固定指令,跳过 AI 推理
  5. 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

修改说明

  1. 关闭自动等待、关闭 AI 中途判断,减少延迟
  2. 全部改为结构化 do 固定指令,不再使用自然语言
  3. interval=0 强制滑动之间无间隙
  4. 采集区间全覆盖所有滑动动作,全程采集数据
  5. 可直接生成图 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)

修改说明

  1. 删除固定 sleep 休眠
  2. 预生成全部手势一次性下发
  3. 完全由 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 整体优化达成效果

  1. 消除 AI 思考推理延迟
  2. 删除底层代码固定休眠间隔
  3. YAML 统一管控滑动参数,0 间隙连续滑动
  4. 性能数据全程连续采集无空白
  5. 报表由稀疏离散(图 6)变为紧凑连续(图 7)
  6. 原有普通 AI 自动化用例不受影响,双向兼容
相关推荐
yumgpkpm1 小时前
【华为昇腾910B】在AI大模型推理速度与GPU显卡选择中地位
大数据·人工智能·华为
Bnews1 小时前
数据中心电力模块的发展趋势对数据中心建设的影响
人工智能
Learn Forever1 小时前
【Harness】智能体驾驭层介绍
人工智能
2601_954706491 小时前
2026 上半年云手机实测:红手指 / 傲晨云 / ACE / 易舜云横向对比
运维·服务器·智能手机
ECT-OS-JiuHuaShan1 小时前
什么是认知,认知的本质是什么?
数据库·人工智能·算法·机器学习·数学建模
8K超高清1 小时前
2026传媒技术大会:博冠赋能融媒体制播
大数据·人工智能·科技·数码相机·计算机视觉·传媒·媒体
z202305081 小时前
RDMA 之RoCEv2 的报文格式(5)
linux·服务器·网络·人工智能
Black蜡笔小新1 小时前
自动化AI算法训练服务器DLTM:筑牢数据安全底座,赋能企业AI高效安全落地
人工智能·算法·自动化
fulangsuowa1 小时前
AI量化交易训练营总结---Geek_sheng
人工智能