ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

五月自动化热词速览:工控、测试与运维的工程化融合

五月自动化热词速览:工控、测试与运维的工程化融合 这个五月自动化圈的搜索热词密集程度有点超出预期。从 pytest、Appium 到工控、UDS 诊断再到影刀、AI 办公自动化一堆词扎堆往眼前蹦。作为一个常年混迹在自动化测试、工业自动化和运维自动化交叉领域的人我翻了一遍这个月的热搜词和技术社区讨论最大的感受是自动化正在从“单点工具”走向“全链路工程化”工控侧和 IT 侧的自动化语言也在加速互通。这篇“大事速览”不是新闻联播式的官方盘点而是从实操视角出发把 5 月自动化及工控领域最值得关注的方向、工具、落地经验和常见坑重新捋了一遍。无论你是做 PLC 和汽车电子的工控工程师还是写 pytest、Ansible 的开发运维这篇内容里应该都能找到对你有用的线索。1. 五月自动化圈到底在聊什么先把这个月的高频关键词摊开看你会发现它们其实分属三条完全不同的技术线工业控制、软件测试自动化、运维与办公自动化。可它们又在同一时间段集中爆发背后一定有些共同信号值得琢磨。1.1 从热搜关键词看趋势我随手整理了一下这个月刷屏频率比较高的词大概分成了三类。你不用把它们当成严格的分类标准重点是看关键词背后的需求方向。方向代表性热词我理解的潜台词软件测试自动化pytest、appium、playwright、maestro、接口自动化、uds自动化测试测试团队在从手工点点点转向平台化、数据驱动、AI 辅助运维与系统自动化ansible、网络设备自动化运维脚本、windows自动化、ios自动化运维工程师在批量处理重复配置网络设备成了新的自动化主战场工控与办公自动化工控、非标自动化、canoe自动化读取did、影刀、ai自动化办公工业场景开始大量引入数字化手段RPA 与 AI 结合解决非结构化数据处理这几个方向能不能用一个共同逻辑串起来我觉得可以——“自动化”这个词正在从动词变成形容词。以前我们说“写个脚本自动化一下”现在讨论的是“这套体系是不是自动化的”。工具链、平台、AI 能力、数据闭环成了新一轮竞争的焦点。1.2 为什么五月份值得单独拿出来说可能有人会问月度速览这种东西是不是有点水我的看法是五月份在自动化领域确实有它的特殊性。一方面很多企业和团队在年中做第一轮项目复盘该踩的坑上半年基本踩完了该总结的经验也到了沉淀期。你会看到大量“上半年实践复盘”类的文章和技术分享这些内容比年底的宏大叙事实在得多。另一方面工具版本的迭代通常会集中在春夏之交。pytest、Playwright、Ansible 这些活跃项目都有较密集的版本发布新特性、新插件一批一批往外冒。如果你关注的是“怎么用”而不是“怎么吹”五月恰恰是信息密度最高的时段。再加上不少程序员和工程师会在年中考虑换赛道社区里“自动化测试面试题”“接口自动化框架怎么搭”“工控人怎么转 IT”这类内容就会集中冒出来。所以这篇速览也带有一定的求职备战参考价值。2. 工控方向非标自动化与汽车电子总线自动化先说工控因为这是标题里最显眼的部分。这个月工控相关的热词里“非标自动化”和“canoe 自动化读取 did”特别显眼。前者代表着传统制造业的设备升级需求后者代表着汽车电子研发测试中的高频痛点。2.1 CANoe 自动化读取 DID为什么大家都在搜这个做过汽车电子测试的人都知道DIDData Identifier是 UDS 诊断协议里的数据标识符。想读取某个 ECU 里的 VIN 号、软件版本号、标定数据靠的就是 DID。而 CANoe 作为 Vector 家的老牌总线开发测试工具几乎是汽车电子工程师的标配。“CANoe 自动化读取 DID”这个搜索词背后其实是两个层面的需求叠加。第一层是“读 DID”本身。UDS 诊断里读取 DID 用的服务是 0x22ReadDataByIdentifier请求格式很简单0x22 DID两个字节。比如想读 ECU 的软件版本DID 可能是 0xF187。但实际项目里一个 ECU 往往有几十上百个 DID靠手工在诊断控制台里一个个点效率极低。第二层是“自动化”。测试工程师真正想要的是一键遍历所有 DID、自动解析响应、自动生成测试报告。这就需要用 CAPL 脚本或者 CANoe 的 XML Test Module 节点来做。我见过不少人卡在使用 CAPL 通过诊断服务发送请求却拿不到响应数据。核心问题通常是诊断请求/响应的交互方式没配对。在 CANoe 的 CAN 通道上诊断请求一般通过 Network-Based 方式发送用DiagSetParameter、DiagSendRequest这类函数而响应事件的捕获则需要把诊断层和 CAPL 的on DiagResponse事件绑定起来。下面是一个简化思路的 CAPL 示例框架on start { // 初始化诊断请求对象 diagRequest req diagGetObject(MyECU, ReadDataByIdentifier); diagSetParameter(req, subFunction, 0x22); diagSetParameter(req, dataIdentifier, 0xF187); diagSendRequest(req); } on diagResponse MyECU::ReadDataByIdentifier { // 在这个事件里解析响应 byte dataArray[8]; diagGetParameterArray(this, dataIdentifier, dataArray); write(DID value: %02x %02x, dataArray[0], dataArray[1]); }这个框架看起来简单实际项目里比这复杂得多。DID 表往往要维护在 Excel 或者 CSV 里脚本要循环读取、判断响应状态。而且 CANoe 仿真节点的调度模式、诊断服务是否被 ECU 正确支持都会影响结果。我的一个建议是在写自动化之前先用诊断控制台手动验证你要读的 DID 能够正常通信再上 CAPL。手工都读不出来的 DID脚本只会帮你更快地确认失败。2.2 非标自动化从“造一台机器”到“做一个数据节点”非标自动化这个词传统意义上指的是针对特定工艺定制的自动化设备比如流水线上的组装机、检测机、焊接专机。这个月它频繁出现在热搜里我认为不是因为非标设备本身变了而是非标设备的数据环境变了。过去做一台非标设备机械结构、气动元件、PLC 程序、触摸屏界面是核心交付物。客户关注节拍、良率、稳定性。而现在越来越多的客户会问三个新问题设备数据能不能上传 MES能不能跟生产管理系统做对接报警信息能不能推送这就逼着非标自动化团队在 PLC 程序之外还要考虑通信协议和数据格式。最常见的数据联通方案有两种。一种是走 OPC UA把 PLC 里的变量映射成标准信息模型另一种是走 MQTT设备端用网关采集数据上抛到边缘服务器或工业互联网平台。从我个人经验看OPC UA 适合工厂内部局域网环境实时性和信息模型完备性都更好MQTT 适合跨车间、跨厂区的数据汇聚部署更轻便但实时性需要根据网络环境谨慎评估。做非标自动化的朋友不管你是电气工程师还是上位机开发五月份这个节点特别适合做的事是把已有设备的通信协议文档整理一遍。很多项目的痛点是设备早就验收了但协议文档早就丢了。等到客户提数据对接需求又要重新逆向报文极其痛苦。2.3 工控与 IT 融合OT 设备的“可编程性”在提高另一个趋势也值得在速览里提一句工控侧的设备正在变得越来越“可编程”。产线上的 PLC 网关、工业相机、扫码枪、传感器很多都开始支持开放的 SDK 和 API 接口。这意味着传统的 IT 自动化工具Python 脚本、Node-RED、Ansible也开始能直接操作 OT 设备。比如某些工业相机产品本身就提供 Python SDK。你可以用 Python 写视觉定位、读取检测结果、触发 PLC 信号整个闭环已经不需要额外的“中间人”。又比如有些支持 OPC UA 的 PLCPython 端的opcua库可以直接读写节点数据。这些能力配合 pytest、自动化测试框架甚至可以做到对设备固件的自动化回归测试。所以如果你发现这个月“工控”和“自动化测试”两个关键词经常同时出现不必奇怪。制造业软件化的过程本质上就是把传统设备改造成软件系统的一部分。这种趋势对从业者的影响是懂 IT 协议的工控工程师或者懂工业协议的开发者未来在项目中的话语权会越来越高。3. 软件测试自动化pytest、Playwright 与接口自动化的集中爆发这一块是这个月热词密度最高的区域。pytest 自动化测试框架、playwright 自动化框架、appium 自动化测试、maestro 自动化教学视频、java 接口自动化测试框架……搜索量全线拉满。我的判断是测试开发这个岗位已经彻底从“会写脚本”进化到了“搭建框架、整合生态、服务业务”的阶段。3.1 pytest测试圈子里的基建工程pytest 早就不是那个“比 unittest 好用一点”的小工具了。这个月围绕 pytest 的热度集中在插件的工程化组合上。让我列一个我实际项目中比较顺手的组合pytest pytest-html / allure-pytest pytest-xdist pytest-rerunfailures pytest-mockpytest-xdist 搞定用例并行执行尤其是接口自动化场景下几十个用例并行跑能省一半时间。pytest-rerunfailures 处理不稳定用例但要慎用。重试机制用多了会掩盖真实缺陷建议只对网络超时或等待类问题开启。pytest-mock 用来做单元测试的依赖隔离模拟外部接口调用。pytest 的 fixture 机制是核心scope 参数决定了 fixture 的生命周期。很多测试新手容易把 fixture 写成“函数内共享”而忽略了 session 级别的前置操作。比如一个登录态的 token如果每个用例都重新登录效率很差如果直接做成scopesession的 fixture整个测试周期只登录一次效率就会好很多。在工程实践上我习惯把用例数据放到 Excel、YAML 或者 JSON 里用 pytest 的参数化去驱动。参数化除了pytest.mark.parametrize还可以通过自定义 hook 读取外部数据源。为了让测试报告直观Allure 报告是刚需里面不仅能看每条用例的通过失败还能挂接截图、请求日志和关键断言。这个月在社区里讨论度最高的就是“如何把接口返回数据自动挂到 Allure 报告里”核心做法就是在 fixture 的 yield 前后收集 request 和 response通过 allure.attach 挂上去。3.2 Playwright 与 UI 自动化为什么它能压过 SeleniumPlaywright 这个月在搜索词里频繁出现我认为有一个很直接的原因它解决了很多 Selenium 时代的老大难问题。自动等待机制。不再需要手写sleep和WebDriverWaitPlaywright 在元素操作前会自动等待元素可交互。影子 DOM 原生支持。过去用 Selenium 碰上 Shadow DOM 要写复杂的 JS 执行器现在 Playwright 可以直接穿透。多浏览器、多设备模拟。桌面端 Chromium、Firefox、WebKit移动端模拟都内置支持。从项目落地的角度Playwright 特别适合端到端测试和中后台系统的回归测试。它的代码生成器可以先录一个脚本再手改成结构化用例上手成本极低。不过要注意UI 自动化最忌讳的是把全部希望寄托在一个框架上。产品页面频繁变化、元素不可靠、数据环境污染这些问题不是换 Playwright 就能解决的。UI 自动化项目的健康度我建议用一个指标衡量自动化用例的稳定性是否长期超过 90%。低于这条线团队会开始不信赖自动化结果用例会越来越没人维护。与其不断追加新用例不如先解决稳定性问题。3.3 接口自动化、移动自动化与 AI 测试的新思路接口自动化是这个月很多测试开发分享的主题。Java 技术栈的朋友问得最多的是框架选型我给的答案通常是把RestAssured或HttpClient封装在自己的测试框架里配合 TestNG/JUnit 做断言管理再用 Maven/Gradle 做依赖管理。如果项目是 Python 技术栈requests结合 pytest 就是最轻便的方案。把接口地址、参数、预期结果放到 YAML 文件里通过pytest.mark.parametrize动态加载既能应对接口数量的快速增长也能让不懂代码的测试人员参与用例维护。这才是接口自动化框架设计的核心目标。移动自动化方面Appium 在搜索热词里依然坚挺但它的“重”也是众所周知的。Appium 需要本地服务、依赖一堆驱动和权限配置跑在真实设备上很容易遇到不稳定问题。相比之下Maestro 的轻量式移动自动化在社区里讨论度在上升它把流程定义成 YAML 文件语法简洁上手门槛低特别适合做冒烟测试和核心路径回归。AI 辅助自动化测试也在五月升温。现在一些工具已经尝试用大模型生成测试用例、分析失败原因、自动补断言。我的态度是AI 短期内替代不了测试人员但能明显降低测试用例的编写成本。把它当成一个“给测试团队的初级成员当副驾”的工具价值是能落地的。比如用大模型把接口文档转换成 pytest 用例再人工审查比手写快 3 到 5 倍是真实存在的效果。4. 运维与网络自动化Ansible 和网络设备脚本的实操视角运维自动化相关的热词在这个月同样不少Ansible 自动化运维、网络设备自动化运维脚本、Windows 自动化都出现在搜索列表里。这些词的背后是大量运维工程师在消化一个问题如何把重复的劳动变成模板和流程。4.1 Ansible从“能跑 playbook”到“能维护整套体系”Ansible 的优点一句话就能概括用 SSH 就能干活不需要在目标机器上安装 agent。但实际项目中真正拉开差距的不是会不会写 playbook而是能不能维护一套高质量的角色体系。我见过不少团队把几十个 playbook 堆在一个目录里里面的 task 重复度低得可怜变量到处硬编码。这种项目跑一次两次没问题一旦管理的机器上百台绝对是灾难。一些值得注意的实践细节Inventory 一定要分组清晰。按业务、环境、角色划分主机组变量使用层次结构覆盖别把线上配置写到 playbook 中间。优先使用 Ansible Galaxy 的角色结构。roles 的默认目录结构可以让 tasks、handlers、templates、vars 分层管理复用性高。敏感信息用 Ansible Vault 加密。密钥、口令、私钥不要直接写在文件里。用 ansible-lint 做静态检查。就像写 Python 用 flake8 一样它可以在跑起来之前发现很多低级错误。幂等性也是 Ansible 里一个非常重要的概念。好的 playbook 无论执行一遍还是十遍系统最终状态是一致的。很多初学者写 shell 命令时没有结合creates、changed_when这类参数导致每次执行都报 changed。这在审计和排查时会带来很大噪音。4.2 网络设备自动化脚本的典型场景“网络设备自动化运维脚本”这个热词的含义比较广涉及路由器、交换机、防火墙的配置备份、批量配置下发、状态巡检等。对于网络工程师来说最常用的自动化方式是 SSH 到设备执行命令。这里推荐两个层次的工具。如果你是 Python 工程师Netmiko是最容易上手的库它统一了各种厂商设备的 SSH 交互方式。如果你想更进一步可以用NAPALM它把配置获取和配置下发抽象成了两个简单方法适合做合规检查和批量变更。一个最基础也最实用的场景是设备配置定期备份。大致流程是用 Netmiko 连接设备 → 执行 show 命令 → 把输出保存到本地文件 → 推送到 Git 仓库。这样每次配置变更都能看到 diff回滚也有据可依。下面这段是我常用来给大家做起步参考的代码from netmiko import ConnectHandler device { device_type: cisco_ios, host: 192.168.100.1, username: admin, password: password, secret: enable_password, } with ConnectHandler(**device) as conn: conn.enable() output conn.send_command(show running-config) with open(backup/192.168.100.1.cfg, w, encodingutf-8) as f: f.write(output)这段代码看着简单但真正放到生产环境里要补的东西很多多厂商设备适配、并发连接控制、连接失败重试、配置脱敏、告警通知。可以把它当作一个起点而不是终点。4.3 运维自动化与测试自动化的共通点我为什么把运维和测试放在同一篇速览里讲因为这两个领域现在越来越像了。运维自动化也讲究用例、断言和报告测试自动化也讲究环境一致性、可重复、可回滚。Ansible 的 playbook 其实就像测试用例集它的 handler 像断言它的报告输出就像测试报告。而 pytest 和 Ansible 可以组合使用用 pytest 编写验证脚本检查配置变更后的系统状态是否恢复了预期。这个月很多人搜“网络设备自动化运维脚本”本质上是想从“纯手工敲命令”过渡到“用代码管理网络”。我的建议是不要一上来就搞特别宏大的自动化平台。先从“备份配置”这种高频、低风险、收益明显的场景切入跑顺了之后再加配置下发和合规检查。5. RPA 与 AI 办公自动化影刀与智能办公的组合打法办公自动化相关的热词在这个月同样活跃影刀自动化扩展程序下载、AI自动化办公、Windows 自动化、iOS 自动化都在列表里。RPA 这个词这几年被反复提起到今年已经脱离“模拟按键”的原始阶段进入 AI 增强的新阶段了。5.1 影刀为什么会被频繁搜索影刀是我在国内 RPA 产品里看到比较多、口碑也比较扎实的一款。它最大的特点是编辑器对中文用户友好流程录制和组件封装做得不错普通办公用户也能绕开代码去做一些基础的自动化流程。做 RPA 选型的时候我建议从三个方面考察指令稳定性、生态扩展和市场普及度。影刀在这方面比较占优它的应用市场里有大量现成的组件比如 Excel 处理、邮件操作、网页自动化、ERP 数据写入能显著减少从头开发的工作量。但这里必须提醒一句RPA 不是万能的。它的自动化本质是对界面元素进行操作所以它强依赖界面稳定性。任何频繁改版的系统都是 RPA 的噩梦。上 RPA 之前应当先判断业务流程适不适合自动化比如页面是否稳定、操作是否有固定规则、异常分支是否可控。5.2 AI自动化办公解决“半结构化数据”难题“AI自动化办公”这个组合词今年讨论热度异常高。RPA 擅长处理确定流程但对 PDF 里的表格、邮件里的非固定话术、扫描件上的印章位置这类数据过去要么需要人工二次确认要么直接放弃自动化。现在有了大模型的支持这类半结构化数据也能被自动解析了。举一个我最近做的例子业务人员每天会收到各类供应商发来的报价单格式各不相同内容包含产品名、规格、价格、有效期。过去要么人工录入 ERP要么写死正则去匹配。现在用 RPA 抓取邮件附件用大模型解析关键字段并输出 JSON再回填到 ERP 草稿。整个流程节省的人力非常可观。但落地时不要天真地以为“RPA 几个指令加一个 API 调用就完事了”。大模型的输出有概率性错误所以流程里必须加入有效的人机协同节点。比如自动解析完成后弹出一个确认框让业务人员快速核对。完全的“无人值守”反而风险更高。成熟的 AIRPA 方案核心是“自动化优先人来兜底”。5.3 Windows 与 iOS 自动化通用办公场景的补充Windows 自动化和 iOS 自动化也频繁出现在热词里。Windows 自动化最常见的场景包括桌面软件的数据录入、文件批量重命名、定时执行计划任务iOS 自动化则更多用于真机 App 的冒烟测试或者重复操作。工具层面Windows 上可以用 PowerShell 脚本、AutoHotkey、或者 RPA 产品的 Windows 录制器。iOS 端裸机自动化相对麻烦通常依赖 Appium 或私有 API稳定性会受到系统版本影响。如果你的主要诉求是 iOS 端的自动化测试我更推荐在稳定版本的测试机上跑并且一定要做好设备管理避免多台设备同时连接时发生冲突。这一块的共同点是自动化的收益和流程的重复度成正比。在做任何办公自动化之前先统计一下这个操作每天要花多少时间。如果一条流程每天只要 5 分钟又不再增长那就没必要用一整天去自动化它。把投入产出比算清楚比掌握任何工具都重要。6. 五月实操复盘我踩过的坑和排查技巧既然是“速览”最后还是回到实操。这个月我在带项目的过程中也在不同技术方向里趟了几个坑顺手整理成几个小技巧。如果你刚好在类似问题上卡住可以参考一下。6.1 自动化测试稳定性问题排查思路症状常见原因排查与解决思路用例偶发失败重试后就通过元素等待时间不足、环境数据不一致先看失败时刻的截图和日志区分是同步问题还是数据污染接口自动化返回结果和手工请求不一致请求头缺默认参数、token 过期在 fixture 里统一处理请求头token 用 session 作用域刷新UI 自动化在 CI 上比本地慢CI 机器性能、无头浏览器渲染差异手动跑一次带录制观察是网络慢还是渲染慢多设备并行执行 iOS 自动化时冲突多个设备连接同一台 Mac 导致端口冲突用设备管理工具隔离 UDID并为每个 worker 分配独立端口6.2 工控数据对接的排查心得在 CANoe 里读 DID 遇到最多的问题是诊断响应的解析失败。很多人以为是脚本写法错了实际是 ECU 的会话没有切换。UDS 诊断里普通功能一般只能在默认会话执行有些 DID 必须切到扩展会话或编程会话才能读取。排查路径建议是检查诊断控制台里的会话状态用手册确认 DID 对应的会话权限检查是否在读取前发送了正确的会话切换请求0x10 服务确认发送的 DID 字节序是否正确有些 ECU 是高字节在前有些是低字节在前。这类问题的排查思路放到非标自动化场景也一样适用——通信不上先查物理层连接再查协议配置最后才查应用层逻辑。不要一上来就怀疑程序写得不对。6.3 运维自动化回滚的教训Ansible 和网络脚本不止一次提醒过我自动化跑得再顺也要留回滚路径。比如批量下发配置时如果只执行了下发命令没有备份 old config设备出了问题后的恢复会非常痛苦。我在自己的项目里已经养成了习惯变更前先自动备份变更后自动做关键状态校验校验失败立即告警。这跟测试自动化的断言思想其实没有任何区别。最后再分享一点个人体会五月份看下来自动化、工控、测试、运维这些领域的热词虽然各不相同但底层逻辑越来越统一把可重复的、有规则的事情交给机器和脚本把人留在判断和决策层。作为一个长期折腾自动化的人我最大的经验不是会很多工具而是能分辨哪些流程值得自动化、哪些流程强行自动化是给自己挖坑。这个月如果你也正好准备启动一个新自动化项目我建议你先别急着选工具先花半天把业务流程的具体步骤画出来标出重复度、异常率和价值量。磨刀不误砍柴工这一步做完后面选框架、写脚本、做调试都会顺畅很多。工具可以慢慢学做事的思路才是底层的核心竞争力。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进