加油
努力

使用阿里云部署手机模拟器做自动化测试有哪些步骤?

使用阿里云部署手机模拟器进行自动化测试,通常涉及环境准备、实例配置、软件安装、网络优化、脚本调试及持续集成等关键步骤。以下是详细的操作流程和建议:


一、前期规划与选型

  1. 明确需求

    • 操作系统:Android(主流)或 iOS(注意:阿里云官方不支持直接运行真实iOS设备模拟,需通过第三方方案如Mac mini集群或云端iOS服务)。
    • 分辨率/版本:需要哪些Android版本(如7.0, 10.0, 12.0)和分辨率?
    • 并发数量:单台服务器能跑多少个模拟器?(建议每台ECS最多部署5~8个轻量级模拟器,避免资源耗尽)。
    • 带宽要求:是否需要高带宽用于视频流输出或大规模数据传输?
  2. 选择阿里云产品组合

    • 核心计算资源:ECS(弹性云服务器),建议选择GPU型高性能通用型(如ecs.g7.xlarge以上),确保CPU核数 ≥ 4,内存 ≥ 8GB。
    • 存储:ESSD云盘,保证I/O性能。
    • 网络:VPC内网通信,若需公网访问,配置EIP或SLB。
    • 可选辅助服务
      • OSS:存放APK、截图、日志文件。
      • SLS(日志服务):集中收集测试日志。
      • RDS/MongoDB:存储测试结果数据。

二、创建并配置 ECS 实例

  1. 购买 ECS

    • 地域选择:尽量靠近测试人员所在地或应用目标用户区域。
    • 镜像选择:推荐 Ubuntu 20.04 LTSCentOS 7/8(社区支持好,文档丰富)。
    • 安全组规则:开放 SSH(22)、VNC/RDP(如需图形界面)、以及测试框架所需端口(如Appium默认4723)。
  2. 远程连接

    • 使用 SSH 工具(如 PuTTY、Terminal)登录服务器。

三、安装 Android 模拟器环境

⚠️ 注意:云服务器无物理GPU,需启用 KVM 虚拟化提速。

方式一:使用开源轻量级模拟器(推荐,资源占用低)

1. 安装依赖包
# Ubuntu 示例
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils 
    android-tools-adb git curl wget unzip python3-pip

# 安装 Python 虚拟环境
pip3 install virtualenv
virtualenv venv
source venv/bin/activate
2. 安装 Android SDK & Platform Tools
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
unzip platform-tools-latest-linux.zip
export PATH=$PWD/platform-tools:$PATH
3. 安装 AVD Manager 并创建虚拟设备
# 安装 command-line tools
wget https://dl.google.com/android/repository/commandlinetools-linux-xxx.zip
unzip commandlinetools-linux-xxx.zip -d sdk-tools
export ANDROID_HOME=$PWD/sdk-tools
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH

# 接受许可
sdkmanager --licenses

# 安装系统镜像(以 Android 12 为例)
sdkmanager "system-images;android-31;google_apis;x86_64"

# 创建 AVD(名称为 test_avd)
avdmanager create avd -n test_avd -k "system-images;android-31;google_apis;x86_64" --device "pixel_4"
4. 启动模拟器(无头模式 Headless,节省资源)
emulator -avd test_avd -no-window -gpu swiftshader_indirect -no-audio -no-boot-anim &

验证是否启动成功

adb devices
# 应显示类似:emulator-5554 device

方式二:使用商业云手机服务(更简单,但成本较高)

  • 阿里云本身不直接提供“云手机”产品,但可通过市场购买第三方解决方案(如红手指、雷电云、AWS Device Farm 替代方案等),或通过 API 调用其提供的远程真机/模拟器集群。
  • 优点:无需运维底层虚拟化;缺点:定制性差,费用高。

四、安装自动化测试框架

Appium + Python 为例:

  1. 安装 Appium Server

    npm install -g appium
    appium driver install uiautomator2
  2. 启动 Appium Server

    appium --address 0.0.0.0 --port 4723
  3. 编写测试脚本(Python)

    
    from appium import webdriver
    from appium.options.android import UiAutomator2Options

options = UiAutomator2Options()
options.platform_name = "Android"
options.device_name = "emulator-5554"
options.app_package = "com.example.myapp"
options.app_activity = ".MainActivity"

driver = webdriver.Remote("http://localhost:4723/wd/hub", options=options)
print(driver.current_activity)
driver.quit()


4. **运行测试**
```bash
python test_script.py

五、网络与性能优化

  1. 关闭不必要的服务

    • 禁用桌面环境(headless 模式),减少内存消耗。
    • 停止非必需后台进程。
  2. 调整模拟器参数

    • 使用 -gpu swiftshader_indirect 提升渲染效率。
    • 限制 CPU 核心数和内存分配(在 .android/avd/test_avd.avd/config.ini 中修改 hw.cpu.ncore=2, hw.ramSize=1024)。
  3. 多模拟器并行策略

    • 每个模拟器绑定不同端口:-port 5554, -port 5556 等。
    • 使用线程池或分布式框架(如 pytest-xdist)实现并发执行。
  4. 监控资源使用情况

    top -c
    free -h
    nproc

    确保 CPU 使用率 < 80%,内存充足。


六、持久化与自动化调度

  1. 设置开机自启

    • 使用 systemdcron 脚本自动启动模拟器 + Appium。
    • 示例 systemd 服务文件 /etc/systemd/system/appium.service
  2. 接入 CI/CD 平台

    • 将测试代码上传至 GitLab/GitHub。
    • 配置 Jenkins/GitLab CI 触发流水线:
      stages:
      - build
      - test
      jobs:
      run_tests:
       stage: test
       script:
         - pip install -r requirements.txt
         - python -m pytest tests/ --junitxml=report.xml
       artifacts:
         reports:
           junit: report.xml
  3. 结果归档

    • 将截图、视频、日志上传至 OSS。
    • 推送通知到钉钉/企业微信/Slack。

七、常见问题与注意事项

问题 解决方案
模拟器启动失败 检查 KVM 是否启用(egrep -c '(vmx|svm)' /proc/cpuinfo 应为 >0)
ADB 连接超时 重启 adb server:adb kill-server && adb start-server
性能瓶颈 减少模拟器数量,或使用更低分辨率设备配置
网络延迟 使用 VPC 内网 IP 连接 Appium Server,避免公网波动
许可证问题 确保已接受 Android SDK License

八、替代方案对比

方案 优点 缺点
自建 ECS + QEMU/KVM 成本低,灵活可控 运维复杂,需手动调优
阿里云函数计算 FC + Lambda 按量付费,免运维 不适合长时间运行的 UI 测试
第三方云测平台(如 Testin、WeTest) 开箱即用,覆盖机型广 成本高,数据隐私顾虑
AWS Device Farm / Firebase Test Lab 全球节点,稳定性高 国际访问慢,国内合规风险

✅ 总结最佳实践路径:

  1. 小规模试点:先用一台中等配置 ECS 部署 2~3 个模拟器,验证流程。
  2. 容器化封装:将模拟器+Appium打包成 Docker 镜像,便于扩展。
  3. 引入监控告警:使用 Prometheus + Grafana 监控 CPU/内存/ADB 状态。
  4. 逐步扩容:根据测试用例复杂度增加实例或采用 Kubernetes 编排。

如需进一步帮助(如具体 Dockerfile 编写、Jenkins Pipeline 配置),可提供更多细节继续深入探讨。

云服务器