就职在一家物联网平台公司,刚入职熟悉业务的时候负责过嵌入式的测试。由于嵌入式测试比较偏门,就和大家聊一聊嵌入式测试和常见的软件测试有什么区别。
-
[ ] 嵌入式产品类型
-
安防行业
- 通过车载摄像头的数据进行实时传输达到的视频云监控,对周边路口进行实时预警,盲区监测等。
- 通过采集用户生物信息达到的智能门禁识别。
- 通过5G高速网络实现的车载设备和红绿灯交互通信,摄像头对路口人员检测,让红绿灯更加高效的协调各个路口交通。
- 通过校园点位检测,人脸识别签到机,实验室气体检测报警设备达到的智能校园等等。
-
通信行业
- 路由器,本质上还是基于Linux进行二次开发,内置有DNS服务器,DHCP服务器,HTTP服务器,至于4G/5G,我认为是多了一个通信模块和降低功耗,增强信号强度等
- 交换机,上学的时候经常和这玩意打交道,思科(Cicso)和华为的设备都是基于Linux二次开发,一些命令都一样,例如:查看网卡功能ipconfig,查看路由:route 等
- 防火墙,接触过网御星云的一些防火墙,产品类型是基于Linux二次开发。举个例子,防火墙的目的是管理墙内的网络,对IP,端口,域名等进行限制,那CentOS6的iptables是不是也可以达到这样的效果?想了解防火墙的话,研究一些Linux上的防火墙就可以?四表五链,各自负责自己的功能。
-
物联网平台
- 小米全家桶,智能空调,智能音箱,智能洗衣机,智能电视等等
- 人脸支付,智能体温计等等
-
其他产品
-
[ ] 嵌入式用到技术/系统
-
Linux
-
需要做复杂的业务处理的产品,像防火墙,路由器,交换机,控制设备的主机
-
安卓
-
注重交互的产品,智能电视,路边的电子站牌,车载主机的显示屏等
-
开发板
-
注重和硬件交互,C/C#,像共享单车智能的开关,停车场道闸的升降等
-
[ ] 特有名字
-
烧录
- 像上面描述的开发板,想在上面装程序就需要用到烧录,其实是通过程序来进行安装。(如果爱搞机的水友应该知道有一种安装系统的方式就是烧录,或者是重新安装BIOS程序,就需要烧进去)
-
串口
- 用来和纯硬件程序做交互的方式,常说串口通信, 日常用作读取硬件的日志,看下发的命令和收到的日志是否正确,如果不正确,就是BUG
-
看门狗
- 重启解决80%的问题,硬件运行环境极其复杂,各种疑难杂症,为了应对这些疑难杂症,一般遇到异常之后就会自动重启,然后通过看门狗程序拉起应用(类似于检测主程序进程,如果主进程丢失,就运行启动命令)
-
[ ] 测试工具
聊嵌入式测试就不得不聊嵌入式的测试设备。
- 串口线
- 和硬件通信的工具,类似于数据线,一端USB口,另一端插在板子上
- 杜邦线
- 目的是为了让设备短路,线的两头一样
- 蓝牙烧录器
- 硬件设备很大一部分靠蓝牙通信(没接触嵌入式之前,感觉蓝牙没啥用,就只能连接蓝牙耳机一样),之前一直不明白滴滴的青桔单车开锁的时候为什么一定 要开启蓝牙,原来是因为开锁的指令是通过手机蓝牙下发给智能锁来达到开锁的效果。
- 高低温箱
- 温度对硬件的工作影响是比较大的,例如北方的共享单车用的都是低温电池,南方的共享单车用的都是常温电池;北方的车载设备内置硬盘应该都是被处理过的,南方的就是普通的,外加防震,因为低温下会降低磁盘读写速度,不然实时查看录像的时候会卡顿。
- 热熔枪
- 锡焊
- 示波器
- 万用表
- 等等
- [ ] 测试类型
- 功能测试
- 基于安卓的嵌入式应用,正常的功能测试和交互测试,其中,尤其注意安装/升级测试等。
- 基于Linux的嵌入式应用,读日志,命令控制,功能,交互测试等。
- 基于C#的嵌入式应用,根据日志来判断业务功能状态是否正确。
- 要注意的是如果测试环境中换了一个元件,需要从头再测试一遍,因为硬件的不稳定性太多太多
- 稳定性测试
- 嵌入式设备一般长期工作,7*24小时,是否存在离线的情况
- 网络波动,网络恢复后是否能修复影响
- 死机之后,看门狗是否能拉起设备
- 专项测试(尤其重要,否则可能造成大批量设备问题,修复问题成本极高)
- 高低温
- 压力测试
- 电池寿命
- 功耗高低
- 等等
总的来说,嵌入式的测试和软件的测试工作大同小异。
软件测试是根据需求文档,然后进行需求和实现的功能进行测试,测试过程中可有清晰的交互和明明白白的日志可以帮助排查问题。
嵌入式测试也是根据需求文档,然后进行需求和实现的功能进行测试。但是,基于安卓的嵌入式产品还好,如果是其他类型的产品测试,根据自己实现的操作和研发定好的协议进行对比,从头到尾都在对比日志,测试一天发现三个BUG,研发一个BUG改一天。