4. 测试执行与监控:自动化脚本、并行策略与实时看板
好,咱们进入第四章。这一章讲的是测试真正跑起来之后的事。说白了,就是怎么让机器替你干活,怎么让一堆机器同时干活,以及怎么盯着它们别出乱子。
我个人习惯把测试执行分成三个阶段:脚本化、并行化、可视化。缺一个,后面都会很痛苦。
4.1 自动化测试脚本编写——别用手点,用代码跑
我见过太多测试员,每天上班第一件事就是打开终端,手动敲命令,然后盯着屏幕等结果。嗯,这其实是在浪费生命。
自动化脚本的核心就一句话:把重复的操作写成代码,让机器替你执行。
4.1.1 脚本的基本结构
不管用什么语言,一个靠谱的测试脚本通常包含这几块:
- 初始化:清理环境、加载配置、连接设备
- 执行:发送指令、采集数据、等待结果
- 断言:判断结果是否符合预期
- 清理:恢复环境、关闭连接、记录日志
给你看个简单的例子。这是我当年在产线调试时用的一个Python脚本片段:
import serial
import time
def test_wifi_module(port):
# 初始化
ser = serial.Serial(port, 115200, timeout=2)
ser.write(b'AT+WIFI_SCAN\r\n')
time.sleep(1)
# 执行与断言
response = ser.read_all().decode()
if 'OK' in response and 'SSID' in response:
print('[PASS] WiFi模块扫描正常')
return True
else:
print('[FAIL] WiFi模块无响应')
return False
# 清理
ser.close()
你看,结构很清晰。我在项目中遇到过有人把清理步骤忘了,结果第二天所有串口都被占着,谁也连不上。从那以后,我写脚本第一件事就是先写清理逻辑。
4.1.2 脚本编写的避坑指南
我曾经踩过的坑:
- 超时设置太短:设备启动慢,脚本已经报错了,设备才刚起来。建议超时时间设为正常执行时间的3倍。
- 日志不完整:只打印了PASS/FAIL,出了问题根本不知道哪一步挂了。一定要把关键变量和中间结果都打出来。
- 硬编码路径:换台电脑就跑不了。用配置文件或者环境变量。
4.2 并行测试策略——让时间变短的艺术
单台设备测,一天测100台。十台设备并行测,一天就是1000台。你想想看,这个效率差距有多大。
但并行不是简单的「多开几个窗口」。搞不好,资源抢起来,测试结果全是假的。
4.2.1 并行策略的三种模式
| 模式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 多进程 | CPU密集型测试 | 充分利用多核 | 内存开销大 |
| 多线程 | I/O密集型测试 | 轻量、切换快 | 有GIL限制 |
| 分布式 | 大规模产线 | 可横向扩展 | 需要网络基础设施 |
我个人习惯:产线测试首选分布式。为什么?因为一台机器挂了,不影响其他机器继续跑。多进程和多线程适合在单台工控机上跑少量设备。
4.2.2 并行执行的关键参数
这里有个公式,我一直在用:
并行数 = min(CPU核心数 * 2, 设备总数, 带宽上限)
举个例子:你有一台8核的工控机,要测20台设备。理论上可以开16个进程。但如果你用的是USB转串口,USB带宽可能撑不住。我建议先测5台,看CPU和带宽占用,再逐步增加。
小技巧:用 timeout 命令给每个并行任务设置最大执行时间。我曾经遇到过某个设备卡死在测试中,结果整个进程池都被它拖住了。加上超时后,问题迎刃而解。
4.3 实时监控看板搭建——别等报告,要实时
测试跑起来了,然后呢?你总不能一直盯着终端吧。
实时监控看板,说白了就是把测试状态用图表展示出来。哪个在跑、哪个过了、哪个挂了、哪个超时了,一眼就能看到。
4.3.1 看板的核心指标
- 总测试数:今天计划测多少台
- 已完成:已经跑完的
- 通过率:PASS / 总完成数
- 失败率:FAIL / 总完成数
- 平均测试时长:每台设备平均耗时
- 当前活跃设备:正在测试中的设备数量
4.3.2 用SVG画一张监控看板布局图
下面这张图,是我自己设计的看板布局。你照着搭,基本够用。
这张图里,顶部是核心指标,中间是设备实时状态,右侧是通过率趋势。你想想看,如果产线组长看到这个看板,是不是比看Excel表格爽多了?
4.3.3 搭建看板的工具推荐
- 轻量级:用Python的
Flask+Chart.js,半小时就能搭一个 - 企业级:Grafana + InfluxDB,适合大规模产线
- 临时方案:直接用
tmux分屏,配合watch命令实时刷新
核心要点:
脚本要稳定、并行要可控、看板要实时。这三件事做好了,测试执行阶段基本不会出大问题。
嗯,这一章的内容就这些。记住,自动化不是目的,效率才是。别为了自动化而自动化,先想清楚你要解决什么问题。
公众号:蓝海资料掘金营,微信deep3321