麦瓣健康麦瓣健康
首页
  • APP产品开发方案
  • 商业调查报告
  • 后端技术架构
  • Docker Compose部署指南
  • 技师端-功能模块与微服务对应关系
  • 数据库设计
  • 分布式事务一致性
  • 日志管理与配置
  • Netdata监控系统
  • 系统总览
  • 文档导航
  • 代码审计智能体
  • 测试生成智能体
  • 运维诊断智能体
  • APP测试智能体
  • API自动化测试多智能体协作系统
  • 项目规划
  • 开发工作手册
  • 开发周期管理
  • 任务看板总览
  • Week 3任务看板
  • Week 3周例会
  • Week 4任务看板
  • Week 5任务看板
  • Week 6任务看板
  • APP测试设备采购清单
  • 用户端APP
  • 用户端APP功能脑图
  • 技师端APP
  • 技师端APP功能脑图
  • 后台管理
  • 大数据屏幕
  • 技师端-账户系统需求明细
原型图(Demo)
GitHub
首页
  • APP产品开发方案
  • 商业调查报告
  • 后端技术架构
  • Docker Compose部署指南
  • 技师端-功能模块与微服务对应关系
  • 数据库设计
  • 分布式事务一致性
  • 日志管理与配置
  • Netdata监控系统
  • 系统总览
  • 文档导航
  • 代码审计智能体
  • 测试生成智能体
  • 运维诊断智能体
  • APP测试智能体
  • API自动化测试多智能体协作系统
  • 项目规划
  • 开发工作手册
  • 开发周期管理
  • 任务看板总览
  • Week 3任务看板
  • Week 3周例会
  • Week 4任务看板
  • Week 5任务看板
  • Week 6任务看板
  • APP测试设备采购清单
  • 用户端APP
  • 用户端APP功能脑图
  • 技师端APP
  • 技师端APP功能脑图
  • 后台管理
  • 大数据屏幕
  • 技师端-账户系统需求明细
原型图(Demo)
GitHub
  • AI智能体系统

    • /技术架构/AI智能体系统/README.html
    • AI智能体系统 - 文档导航
    • 代码审计智能体设计文档
    • 测试生成智能体设计文档
    • 运维诊断智能体设计文档
    • APP测试智能体设计文档
    • /技术架构/AI智能体系统/API自动化测试多智能体协作系统架构方案.html

APP测试智能体设计文档

智能体名称: APP自动化测试智能体 (APP Testing Agent) 优先级: ⭐⭐ (中优先级) 技术栈: Python 3.11 + LangGraph + Claude 3.5 Sonnet + Appium 文档版本: v1.0 最后更新: 2025-10-28


一、功能概述

基于LangGraph构建的移动应用自动化测试智能体,支持Android和iOS应用的UI自动化测试、功能测试和兼容性测试,通过AI分析页面结构和用户需求自动生成测试脚本。

核心价值

  • 降低门槛: 无需编写代码,自然语言描述即可生成测试
  • 提高覆盖率: 自动识别UI元素,生成全面的测试用例
  • 节省时间: 减少80%的测试脚本编写时间
  • 跨平台: 支持Android和iOS双平台

二、LangGraph工作流设计

2.1 状态定义

输入状态:

  • app_type: 应用类型(Android/iOS)
  • test_type: 测试类型(UI/功能/兼容性)
  • test_description: 测试描述(自然语言)
  • screenshots: 页面截图(可选)
  • page_hierarchy: 页面布局层次(可选)

中间状态:

  • ui_elements: 识别的UI元素列表
  • test_scenarios: 生成的测试场景
  • test_script: 生成的测试脚本
  • execution_result: 执行结果

输出状态:

  • final_test_script: 最终测试脚本
  • test_report: 测试报告
  • screenshots_on_failure: 失败时的截图

2.2 智能体节点

节点1: UI元素识别节点

  • 分析页面截图识别UI元素
  • 或解析页面层次结构(XML/JSON)
  • 提取元素属性(ID、文本、坐标、类型)

节点2: 场景理解节点

  • 理解测试需求描述
  • 识别测试步骤(登录、点击、输入、断言)
  • 生成测试场景列表

节点3: 定位策略生成节点

  • 为每个UI元素生成定位策略
  • 优先级: ID > AccessibilityId > XPath > 图像识别
  • 生成多重定位策略(fallback机制)

节点4: 测试脚本生成节点

  • 根据测试场景生成Appium脚本
  • 添加等待、断言、异常处理
  • 生成可读性强的测试代码

节点5: 脚本执行节点

  • 在真机或模拟器上执行测试
  • 捕获执行日志和截图
  • 收集测试结果

节点6: 结果分析节点

  • 分析测试失败原因
  • 生成测试报告
  • 提供优化建议

2.3 工作流流程

开始
  ↓
输入测试需求
  ↓
[1. UI元素识别] → 识别页面元素
  ↓
[2. 场景理解] → 解析测试场景
  ↓
[3. 定位策略生成] → 生成元素定位
  ↓
[4. 测试脚本生成] → 生成Appium代码
  ↓
[5. 脚本执行] → 在设备上运行
  ↓
[6. 结果分析] → 分析结果和生成报告
  ↓
结束

三、测试类型支持

3.1 UI测试

功能:

  • 基于截图识别UI元素
  • 生成点击、滑动、输入操作
  • 验证元素存在性和属性

示例需求:

测试场景: 用户登录流程
1. 打开APP
2. 点击"登录"按钮
3. 输入用户名"test@example.com"
4. 输入密码"password123"
5. 点击"登录"按钮
6. 验证登录成功,显示"欢迎"文字

生成的测试脚本 (Python + Appium):

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

# 初始化driver
desired_caps = {
    "platformName": "Android",
    "deviceName": "emulator-5554",
    "appPackage": "com.maiban.app",
    "appActivity": ".MainActivity"
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)

# 测试步骤
driver.find_element(AppiumBy.ID, "btn_login").click()
driver.find_element(AppiumBy.ID, "input_username").send_keys("test@example.com")
driver.find_element(AppiumBy.ID, "input_password").send_keys("password123")
driver.find_element(AppiumBy.ID, "btn_submit").click()

# 断言
assert "欢迎" in driver.page_source

driver.quit()

3.2 功能测试

功能:

  • 基于需求文档生成测试场景
  • 覆盖核心业务流程
  • 包含正常流程和异常流程

示例需求:

功能: 预约服务
正常流程:
1. 选择服务类型"按摩"
2. 选择技师"张三"
3. 选择时间"2025-10-29 14:00"
4. 确认预约
5. 验证预约成功

异常流程:
1. 时间已被预约
2. 验证显示"该时间段已满"提示

3.3 兼容性测试

功能:

  • 在多设备上执行测试
  • 检测屏幕适配问题
  • 验证不同系统版本的兼容性

设备配置:

devices:
  - name: "Samsung S21"
    platform: Android
    version: "11"
  - name: "Xiaomi 12"
    platform: Android
    version: "12"
  - name: "iPhone 13"
    platform: iOS
    version: "15.0"

四、UI元素识别

4.1 基于截图识别

输入: 页面截图(PNG/JPG) 输出: UI元素列表(按钮、输入框、文本等)

使用Claude Vision:

分析以下APP截图,识别所有UI元素:

[截图]

识别:
1. 所有按钮及其文字
2. 所有输入框及其提示文字
3. 所有可点击元素
4. 元素的相对位置

输出JSON格式:
{
  "elements": [
    {
      "type": "button",
      "text": "登录",
      "position": {"x": 100, "y": 200},
      "size": {"width": 200, "height": 50}
    }
  ]
}

4.2 基于页面层次识别

Android (XML层次):

<hierarchy>
  <android.widget.LinearLayout>
    <android.widget.Button resource-id="btn_login" text="登录"/>
    <android.widget.EditText resource-id="input_username" hint="用户名"/>
  </android.widget.LinearLayout>
</hierarchy>

iOS (XCUIElement层次):

{
  "type": "XCUIElementTypeButton",
  "label": "登录",
  "identifier": "btn_login",
  "frame": {"x": 100, "y": 200, "width": 200, "height": 50}
}

五、测试框架集成

5.1 Appium集成

Android配置:

desired_caps = {
    "platformName": "Android",
    "platformVersion": "11",
    "deviceName": "emulator-5554",
    "appPackage": "com.maiban.app",
    "appActivity": ".MainActivity",
    "automationName": "UiAutomator2",
    "noReset": True
}

iOS配置:

desired_caps = {
    "platformName": "iOS",
    "platformVersion": "15.0",
    "deviceName": "iPhone 13",
    "bundleId": "com.maiban.app",
    "automationName": "XCUITest",
    "noReset": True
}

5.2 设备管理

真机管理:

  • 使用adb管理Android设备
  • 使用ios-deploy管理iOS设备
  • 设备池管理(设备注册、健康检查、分配)

云测平台:

  • 集成Sauce Labs
  • 集成BrowserStack
  • 支持并行测试

六、触发方式

6.1 CLI命令触发

# 生成测试脚本
maiban-ai app-test generate \
  --platform android \
  --app-package com.maiban.app \
  --test-description "测试用户登录流程"

# 执行测试
maiban-ai app-test run \
  --script tests/login_test.py \
  --device emulator-5554

6.2 CI/CD集成

# .gitlab-ci.yml
app-ui-test:
  stage: test
  script:
    - maiban-ai app-test generate --platform android
    - maiban-ai app-test run --all
  artifacts:
    reports:
      junit: test-results/*.xml
    paths:
      - screenshots/

七、测试报告

7.1 报告格式

# APP自动化测试报告

**测试时间**: 2025-10-28 16:00:00
**测试平台**: Android 11
**设备**: Samsung S21

---

## 测试概览

| 测试场景 | 通过 | 失败 | 耗时 |
|---------|------|------|------|
| 用户登录 | ✅ | - | 15s |
| 预约服务 | ✅ | - | 30s |
| 订单支付 | ❌ | 1 | 25s |

**总计**: 3个场景, 2个通过, 1个失败

---

## 失败详情

### ❌ 订单支付场景失败

**失败原因**: 支付按钮不可点击

**失败步骤**:
1. ✅ 选择服务
2. ✅ 确认订单
3. ❌ 点击支付按钮 - 元素找不到

**错误截图**:
![失败截图](screenshots/payment_failure.png)

**修复建议**:
- 检查支付按钮的ID是否变更
- 添加等待时间,确保页面加载完成
- 验证支付功能是否正常

---

八、成本控制

成本目标: <$3/次生成

优化策略:

  1. 缓存UI元素识别结果(24小时)
  2. 批量识别多个页面
  3. 使用Claude Sonnet(图像分析使用Vision API)
  4. 测试脚本模板复用

九、挑战与限制

技术挑战:

  • 动态ID元素定位困难
  • 页面加载时间不确定
  • 设备兼容性差异

应对措施:

  • 多重定位策略(ID + XPath + 图像)
  • 智能等待机制
  • 设备特征库和适配规则

文档维护者: AI团队 技术负责人: 待定 创建日期: 2025-10-28 最后更新: 2025-10-28

在 GitHub 上编辑此页
最后更新: 2025/11/10 10:53
贡献者: David, Claude Code
Prev
运维诊断智能体设计文档
Next
/技术架构/AI智能体系统/API自动化测试多智能体协作系统架构方案.html