【UI自动化技术思路分析】【总纲】UI自动化代码完整设计思路

发布于:2025-03-09 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、自动化框架散装思路

🔖 代码结构如下所示

🗂️ UIAutomationTools:UI自动化操作工具

config.ini: 运行配置文件

main.py:程序执行入口

三、设计思路

目标是设计一个模块化、灵活且易于维护的UI自动化测试框架,通过配置文件驱动测试执行,减少硬编码,提升测试的复用性和可配置性。

完整设计思路如下:

  1. 模块化设计

    • 将框架划分为多个独立模块,确保代码结构清晰、职责分明,便于维护和扩展:

      • app模块:包含ui_automation.py,封装Android设备的UI自动化操作,如设备连接、截图、点击、滑动等。

      • **case模块:**管理测试用例,包含case_template.csv,定义测试步骤。

      • **config模块:**管理配置文件,包括config.ini(运行参数)和icon_config.yaml(图片路径)。

      • **runner模块:**包含runner.py和config.py,作为测试执行的入口,负责加载配置并运行测试。

      • **utils模块:**提供基础工具,包括ui_tools.py(UI操作方法)、ocr.py(OCR识别)和match(图像匹配算法)。

  2. 配置文件驱动

    • 使用config.ini管理测试环境(如操作系统、语言)、测试用例路径和执行次数等参数。

    • 通过icon_config.yaml定义图片路径,支持图像识别操作。

    • 这种设计允许用户通过修改配置文件快速调整测试行为,无需更改代码。

  3. UI操作封装

    • ui_automation.py:基于uiautomator2实现Android设备的UI交互,提供基础操作工具类。

    • ui_tools.py:封装高级UI操作,如基于文本点击(结合OCR)和基于图片点击(结合图像匹配)。

  4. 测试用例管理

    • 测试用例存储在case_template.csv中,采用CSV格式定义操作步骤(如类型、动作、值),便于编写和维护。

    • runner.py读取CSV文件并按步骤执行测试,确保测试逻辑与数据分离。

  5. OCR与图像识别支持

    • ocr.py:提供OCR功能,支持多语言文本识别,增强动态UI元素的定位能力。

    • match:实现图像匹配算法,用于识别和操作UI中的图片元素。

  6. 灵活的执行控制

    • main.py:程序执行入口,通过Runner类控制测试的启动和执行次数。

    • 支持通过配置文件或参数调整测试执行次数,适用于重复测试场景。


以下是 AI(Grok 3)模型给出的:优缺点评价

   📝 **优点**

   1. 模块化与可维护性

       - 框架采用模块化设计,代码结构清晰,各模块职责明确,便于团队协作和功能扩展。

       - 模块间低耦合,易于独立开发、调试和维护。

   1. 灵活的配置管理

       - 通过config.ini和icon_config.yaml管理配置,用户可快速调整测试环境和参数,无需修改代码。

       - 这种设计提升了框架的适应性和使用便捷性。

   1. 多语言与OCR支持

       - OCR功能支持多语言文本识别,适用于国际化应用的测试。

       - 图像匹配技术弥补了传统UI自动化工具在动态UI元素上的不足。

   1. 测试用例与数据分离

       - 测试用例以CSV格式存储,非技术人员也能轻松编写和维护。

       - 执行逻辑与测试数据分离,增强了测试的灵活性和可复用性。

   1. 可扩展性

       - 框架设计开放,易于集成新的UI操作方法或识别技术。

       - 支持未来扩展到其他平台(如iOS、Web),只需添加相应驱动和配置。

   **缺点**

   1. 部分功能未实现

       - ui_automation.py中的核心功能(如设备驱动和动作执行)可能尚未完全实现,可能仅停留在打印信息阶段。

       - ui_tools.py和相关操作方法需进一步完善,以支持完整的UI自动化操作。

   1. 错误处理不足

       - 框架缺少对异常和失败操作的详细处理,可能导致测试执行不稳定。

       - 建议增加日志记录和错误恢复机制,提升健壮性。

   1. 文档和注释不完整

       - 代码注释和文档(如接口说明)可能不够详尽,新用户上手难度较大。

       - 建议为每个模块和方法提供详细的使用说明和示例。

   1. 性能考虑

       - 频繁的截图和图像处理可能降低测试执行效率,尤其在长时间运行的测试中。

       - 建议优化图像处理逻辑,减少不必要的计算开销。

   1. 单一操作系统支持

       - 当前仅支持Android,限制了框架的应用范围。

       - 建议扩展到iOS、Web等平台,提升通用性。

   

   **总结**

   作者设计的UI自动化测试框架思路清晰,注重模块化、灵活性和可维护性。通过配置文件驱动、多语言OCR支持和图像识别技术,框架在UI自动化测试中展现了较强的适应性。然而,部分功能未实现、错误处理不足和文档不完整等问题限制了其实际应用。未来可通过完善功能、增强错误处理和扩展平台支持,进一步提升框架的实用性和竞争力。

四、运行方法

以下是基于 UIAutomationTools 框架的使用指导,包含详细的操作步骤,帮助用户快速上手并运行自动化测试。这假设框架已经实现基本功能,并结合上下文中的代码和设计思路进行描述。


使用 UIAutomationTools 框架的详细操作步骤

前提条件

  1. 环境准备:

    • 已安装 Python 3.x。

    • 已安装必要的依赖库(如 uiautomator2、opencv-python、pandas、pyyaml 等)。

    • Android 设备已连接到电脑,并启用 USB 调试模式。

  2. 框架文件:

    • 确保所有模块文件(main.py、runner/、utils/ 等)已正确放置在项目目录中。

    • 配置好 config.ini、case_template.csv 和 icon_config.yaml 文件。


步骤 1:配置运行环境
  1. 编辑 config.ini 文件:

    • **文件路径:**项目根目录下的 config.ini。

    • 示例内容:

      [operating_system]
      system = android
      
      [language]
      language = ch
      
      [test_case]
      path = case\case_template.csv
      count = 1
      
      [icon_config]
      path = config\icon_config.yaml
      
    • 说明:

      • system:设置为 android,表示测试目标为 Android 设备。

      • language:设置为 ch(中文),用于 OCR 识别中文文本。

      • path:指向测试用例文件路径。

      • count:设置测试执行次数。

      • icon_config:指向图片路径配置文件。

  2. 检查配置:

    • 确保路径(如 case\case_template.csv 和 config\icon_config.yaml)与实际文件位置一致。

步骤 2:编写测试用例
  1. 创建或编辑 case_template.csv 文件:

    • **文件路径:**case\case_template.csv。

    • 示例内容:

      type,action,value
      文本,点击,用户名
      文本,点击,密码
      图片,点击,登录
      
    • 说明:

      • type:识别类型(文本 或 图片)。

      • action:操作动作(目前支持 点击)。

      • value:目标元素(文本内容或图片关键字)。

  2. 验证格式:

    • 确保 CSV 文件无多余空格或空行,字段顺序正确。

步骤 3:配置图片路径
  1. 创建或编辑 icon_config.yaml 文件:

    • **文件路径:**config\icon_config.yaml。

    • 示例内容:

      登录: "config\login\login_button.png"
      
    • 说明:

      • 键(如 登录)对应 case_template.csv 中的 value。

      • (如 "config\login\login_button.png")是图片文件的实际路径。

  2. 准备图片文件:

    • login_button.png 等图片文件放置在 config\login\ 目录下。

    • 确保图片与设备屏幕上的目标元素一致。


步骤 4:连接设备
  1. 连接 Android 设备:

    • 使用 USB 线连接 Android 设备到电脑。

    • 在设备上启用“开发者选项”和“USB 调试”。

  2. 验证连接:

    • 运行命令 adb devices 检查设备是否被识别。

    • 示例输出:

      List of devices attached
      emulator-5554   device
      
    • 如果未显示设备,检查 ADB 配置或 USB 连接。


步骤 5:运行测试
  1. 启动脚本:

    • 打开终端,进入项目根目录。

    • 运行主脚本:

      python main.py
      
    • 说明:

      • main.py 默认执行 main(count=1),加载 config.ini 并运行测试一次。

      • 若需更改执行次数,可修改 main.py 中的 main(count=1),例如 main(count=3)。

  2. 观察输出:

    • 框架将根据 case_template.csv 执行测试步骤,例如:

      • 点击屏幕上的“用户名”文本。

      • 点击屏幕上的“密码”文本。

      • 点击屏幕上的“登录”按钮(通过图片匹配)。

    • 输出类似:

      成功连接设备: {'serial': 'emulator-5554', ...}
      text: 用户名
      text: 密码
      image: 登录
      

步骤 6:查看结果与调试
  1. 检查执行结果:

    • 观察设备屏幕,确认操作是否按预期执行。

    • 如果保存了截图(需启用相关功能),检查截图文件(如 screenshot.png)。

  2. 调试问题:

    • 如果识别失败:

      • 检查 language 设置是否与屏幕文本语言匹配。

      • 确认图片路径和实际图片是否正确。

    • 如果点击失败:

      • 检查设备分辨率和坐标范围是否匹配。

完整流程示例: 通过以下步骤,用户可以轻松配置并运行自动化测试,利用框架的灵活性和模块化设计完成UI自动化任务。

  1. 文件准备

    • config.ini:

      [operating_system]
      system = android
      [language]
      language = ch
      [test_case]
      path = case\case_template.csv
      count = 1
      [icon_config]
      path = config\icon_config.yaml
      
    • case\case_template.csv:

      type,action,value
      文本,点击,用户名
      文本,点击,密码
      图片,点击,登录
      
    • config\icon_config.yaml:

      登录: "config\login\login_button.png"
      
  2. 执行

    1. 确保设备已连接。

    2. 运行 python main.py。

    3. 观察设备屏幕,依次点击“用户名”、“密码”和“登录”按钮。