看到这个问题,我的第一反应是:终于有人开始认真思考这件事了。
做了三年手工测试,想往自动化转,这个方向是对的。但更重要的是,你已经意识到了一个很多测试工程师都没意识到的问题:如何提升自己的核心竞争力,让自己变得更“值钱”。

手工测试不是不好,但天花板确实太低了。
我见过太多做了五年、十年手工测试的人,工资还是那么点,想跳槽都没人要。为什么?因为纯手工测试的可替代性实在太强了,随便培训一个应届生,三个月基本就能熟练上手。
但自动化测试不一样。
咱先来说说嵌入式软件测试的自动化,到底能做到什么程度。很多人以为自动化测试就是写几个脚本、跑跑用例,其实远不止于此。嵌入式的自动化测试,涉及到硬件控制、通信协议、数据采集、结果判断……每一个环节都有技术含量。
你提到的那些接口,像 DI/DO、CAN、485、网口,其实都是可以自动化的,关键在于怎么做。
第一步,硬件接口的自动化控制。
DI/DO 最简单,找个支持 GPIO 控制的设备就行。比如树莓派、Arduino,或者专业点的数据采集卡。借助 Python 通过串口或者网络控制这些设备,模拟输入信号,读取输出状态。
我之前做过一个类似的项目,测试一个电源控制器。我们用了 NI 的数据采集卡,通过 Python 的 PyDAQmx 库来驱动,可以模拟各种开关量输入,读取继电器输出状态。整个测试流程自动化之后,原来要一天的测试,半小时就跑完了。
CAN 和 485 稍微复杂点,但也不难。市面上有很多 USB 转 CAN、USB 转 485 的设备,Python 有现成的库可以用。比如 python-can 这个库,兼容市面上主流的 CAN 适配器,无论是发送还是接收报文都极其方便。
我记得当年测试汽车电子的时候,就是用 Python 写脚本,通过 CAN 总线发送各种控制指令,然后读取设备的响应,判断功能是否正常。这种测试如果手工做,一个用例可能要十几分钟;自动化之后,几秒钟就搞定。
网口就更简单了。Socket 编程,或者直接利用 requests 库发送 HTTP 请求,模拟上位机和设备通信。你说的上传后台,应该是通过网络上报数据吧?这个完全可以自动化验证。
第二步,测试框架的搭建。
光有硬件控制还不够,你得有个框架把这些东西组织起来。在这一点上,我极力推荐 pytest,它是 Python 生态中最流行的测试框架,灵活、强大、生态好。
你可以把每个测试用例写成一个函数,用 pytest 的 fixture 做前置和后置处理,用参数化实现数据驱动测试。跑完之后,pytest 还能生成详细的测试报告,哪些用例过了,哪些失败了,一目了然。
我自己做自动化测试的时候,就是这么搞的。把所有的硬件控制都封装成类,测试用例调用这些类的方法,整个结构清晰、易维护。后来团队其他人要加新用例,只需翻阅一下我的代码框架就能快速上手,根本不需要我手把手教。
第三步,持续集成和自动化执行。
测试脚本写好了,总不能每次都手动去执行吧?得搭建一套持续集成环境,让测试自动跑起来。
如果你们公司有 Jenkins 或者 GitLab CI,可以配置成每次代码提交后自动触发测试。如果没有,至少也要写个定时任务,每天晚上自动跑一遍回归测试。
我在外企的时候,我们的测试环境就是这样。每天晚上 12 点,Jenkins 自动拉取最新代码,编译、烧录、跑测试,第二天早上来看报告就行。如果有问题,邮件自动发给相关的人。整个流程完全自动化,省了大量的人力。
但是,嵌入式自动化测试也有它的难点。
最大的难点是硬件依赖。不像 Web 测试,开个浏览器就能跑;嵌入式测试需要真实的硬件设备,需要各种接口、传感器、负载……这些硬件环境的搭建和后期维护,都是一笔不小的成本。
我见过有些团队,为了做自动化测试,专门搭了一个测试台架,各种设备、线缆一大堆,看着就头疼。但没办法,这是嵌入式测试的特点,根本绕不开。
另一个难点是测试环境的稳定性。硬件设备会老化、会故障,通信会丢包、会超时……这些都会导致测试结果不稳定。你必须在脚本里做好周全的异常处理,加上重试机制,记录详细的日志,才能保证测试的可靠性。
我当年就遇到过这种问题。有次自动化测试跑了一晚上,早上来一看,失败了一大堆。仔细查日志,发现是 CAN 适配器松了,通信断断续续。后来我在脚本里加了连接检测,发现断开就自动重连,问题才解决。
说回你的问题:Python 和 C 都接触过,用哪个做自动化测试?
不是说 C 不行,而是 Python 更适合。Python 的库多、开发快、调试方便,做自动化测试效率高。C 虽然性能好,但写起来太繁琐,不适合快速迭代的测试场景。
至于 LabVIEW,这个工具在工控领域用得比较多,主打图形化编程,上手非常快。但说实话,灵活性不如 Python,而且生态没那么好。如果你们公司内部已经有了 LabVIEW 的环境积累和经验,可以用;如果是从头开始,我还是推荐 Python。
最后说说职业发展。
嵌入式软件测试 的自动化是个好方向,但不要只停留在写脚本的层面。你要往更深的方向走:测试架构设计、性能测试、安全测试、甚至测试开发。
我见过一些优秀的测试工程师,他们不只是写测试用例,还能设计整个测试体系,能开发测试工具,能分析系统性能瓶颈……这样的人,在市场上是抢手货。
你已经有三年的行业经验,对电源系统的理解够深,这是你的优势。如今再叠加自动化测试的技能,你的竞争力会上一个台阶。
但记住,技术只是工具,解决问题才是核心。
不要为了自动化而自动化,要想清楚哪些测试真的需要自动化,哪些手工做更合适。把时间花在刀刃上,才能体现你的价值。顺带一提,像 云栈社区 这样的优质开发者聚集地,经常会有软硬件测试的深度讨论与资源分享,感兴趣的话不妨去看一看。