TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

用树莓派搭建UI自动化测试环境:从零开始的实践指南

2025-07-17
/
0 评论
/
2 阅读
/
正在检测是否收录...
07/17

去年接手公司移动端项目时,我发现团队每天要花费2小时进行重复的UI回归测试。作为嵌入式开发出身的工程师,我决定用闲置的树莓派搭建自动化测试环境。经过三周的实践验证,这套成本不足500元的方案完美替代了价值上万元的云测试服务。

一、硬件选择的权衡

在树莓派3B+和4B之间,我最终选择了4B/4G内存版本。实测证明这个选择非常关键:
- 3B+运行Chromium时内存经常爆满(峰值占用1.8GB)
- 4B的USB3.0接口使测试截图保存速度提升3倍
- 额外配置的32GB TF卡用于存储测试日志更可靠

小贴士:务必使用官方电源,我在测试过程中因使用劣质电源导致系统崩溃7次

二、系统环境的精简化配置

采用Raspberry Pi OS Lite版本,通过SSH远程操作节省图形界面资源。关键配置步骤:

bash

安装必要组件

sudo apt-get install -y xvfb chromium-browser chromium-chromedriver

虚拟显示环境配置

Xvfb :99 -screen 0 1024x768x24 &
export DISPLAY=:99

这个配置让树莓派能在无显示器情况下运行浏览器测试,内存占用降低40%。有趣的是,Chromium的--no-sandbox参数在树莓派上是必须的,这与常规Linux环境不同。

三、Python环境的特殊处理

使用pyenv管理多版本Python时遇到glibc兼容问题,最终采用系统自带Python3.7的方案:

python

requirements.txt精选组合

selenium==3.141.0
Pillow==8.1.2 # 用于截图对比
pytest-html==3.1.1

特别注意:安装selenium时要用pip install --no-binary selenium编译安装,直接安装二进制包会导致元素定位失效。

四、实战中的性能优化

通过分析htop数据发现,Chromium的GPU进程会占用额外30%CPU。添加这些参数后测试速度提升明显:

python chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--disable-software-rasterizer')

测试用例设计时采用分层等待策略
1. 固定等待:time.sleep(0.5)
2. 显式等待:WebDriverWait(driver,10)
3. 隐式等待:driver.implicitly_wait(5)

这种组合使测试稳定性从72%提升到98%。

五、持续集成方案对比

尝试过三种方案后,最终选择轻量级的方案:
1. Jenkins+Docker:资源消耗过大
2. GitHub Actions:网络延迟高
3. Systemd定时任务:最适合树莓派

创建/etc/systemd/system/ui_test.service

ini
[Unit]
Description=UI Auto Test

[Service]
ExecStart=/usr/bin/python3 /home/pi/tests/main.py
WorkingDirectory=/home/pi/tests
User=pi

[Install]
WantedBy=multi-user.target

配合journalctl -u ui_test -f查看实时日志,这种方案已经稳定运行8个月。

六、避坑指南

  1. 元素定位失效:树莓派渲染速度慢,所有定位器前强制等待0.3秒
  2. 中文乱码:安装wqy-zenhei字体并重启
  3. 随机崩溃:添加swap分区并设置vm.swappiness=10

最近我将这套方案扩展到了触摸屏测试领域,通过增加USB转TTL模块实现了硬件级触控模拟。这个过程中最意外的发现是:树莓派的GPIO引脚可以直接模拟电容屏的I2C信号,这为特殊场景的自动化测试打开了新思路。

树莓派4BUI自动化SeleniumHeadless模式Chromium浏览器Python脚本Jenkins集成
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/33059/(转载时请注明本文出处及文章链接)

评论 (0)