1 前言

去年10月份开始,有幸加入智能硬件团队,参与设备固件端测试,主要涉及的测试类型有移动端sdk测试,设备端固件测试,sdk与设备之间的蓝牙测试以及基于业务实际场景的功能测试。对于我这样一个固件测试新手来说,刚开始的时候难免会有点不知所措,因此我写下自己对固件测试的一点经验和总结,以便后期回顾。

2 简化后的大致框架

简化一下所要测试的对象模型,大致框架图如下图,手机app下发命令给智能设备,智能设备反馈各个操作细节的信息给app,app与硬件之间的交互通过蓝牙传输;手机通过网络传输将收到的必要信息存储至服务器。

图1 简化的测试对象

固件测试主要工作是对移动端sdk和固件端sdk的测试。移动端sdk可理解为移动app与设备交互部分的api,包括安卓和ios,是交付给app开发人员使用的。固件端sdk是运行在智能设备上的软件。移动端sdk和固件端sdk之间使用蓝牙协议进行交互。sdk所在的位置标出,如下图:

图2 固件的测试范围

3 移动端sdk测试

移动端sdk测试,可实施的测试有功能测试,异常测试,api测试,压力测试等。

功能测试

功能测试主要结合智能硬件的使用场景,利用sdk下发各种命令以及命令的组合,前提是将sdk命令写成可视化界面,输入命令参数,点击发送命令即可使用。

异常测试

异常测试主要移动端sdk和设备交互过程中模拟蓝牙断开连接,移动端断网断电等,设备断电重启等各种中断异常。

sdk api测试

sdk api测试显而易见就是针对sdk的接口测试,帮助测试接口边界值以及回归时起辅助作用。

压力测试

压力测试是设置sdk向设备下发的指令条数,做到不断地让设备执行各种指令,包括单指令和多指令的组合,观察移动端sdk运行的情况。

4 固件端sdk测试

固件端sdk测试,可实施的测试有功能测试,异常测试,api测试,压力测试等。

功能测试

功能测试主要包括硬件声光交互测试,功能按键测试以及结合智能硬件使用场景的功能点测试。

异常测试

异常测试主要测试设备工作过程中各种异常中断导致设备停止工作或设备断电重启,保证异常动作结束后,设备可恢复工作,以及设备异常时可进入相应的异常处理分支。

固件api测试

固件api测试是针对设备sdk的主要接口做测试,固件代码完全由C语言编码实现,接口测试没有框架可以利用,写起来难度比较大,只能由固件开发引出几个重要的接口,并在他们工程里配置的接口测试主函数里编写测试函数和测试用例。

压力测试

压力测试是设置设备执行指令条数,并做到不断地让设备执行各种指令,包括单指令和多指令的组合,观察设备运行的情况,通过的最基本条件是设备不挂机。此外,可以配合做一些功耗测试,需要利用到专业的设备,如万用表和示波器灯。

静态代码检查

固件代码完全由c语言编写,代码量大,很容易出现代码缺陷,因此必须引入静态代码检查,有效规避内存泄漏,空指针等问题。采用cppcheck和oclint这两个成熟的c语言检查工具来做静态代码检查,cppcheck不检测代码中的语法错误,只检测那些编译器通常无法检测到的bug类型,目的是只检测代码中真正的错误。而oclint检查包含了大量语法错误的规则,以cppcheck为主,oclint为辅,二者互补,相得益彰。

固件端排查问题:

在智能硬件跑测试代码的时候,可以让它输出串口的调试信息,将所有的运行的调试信息都保存下来,方便后面定位问题。
1、在测试代码中怀疑可能有问题的地方添加串口打印信息,输出一些变量的值,大致可以判断出来是什么地方有问题,然后深度排查;
2、特殊的调试工具,使用示波器看看引脚输出的波形是不是正常的,抓高低电平的波形;万用表查看板子上的硬件电路连接是否正常,测电压电流值,然后分析出来,可能是什么地方有问题。

5 蓝牙测试

蓝牙传输属于移动端sdk和固件sdk之间下发指令和传输数据的桥梁,蓝牙传输速率和性能可靠性影响着固件测试结果。蓝牙测试可从以下几方面入手:

蓝牙协议栈最大的手机匹配数

最开始我们采用的蓝牙协议是ble,ble是低功耗但传输速率慢。后来我们改用了spp蓝牙传输协议(特定的蓝牙厂商提供),它的优点就是传输速率快,但存在蓝牙配对溢出的问题。ios端的溢出表现为n台手机与一台设备连接配对,当n超过蓝牙协议栈的最大连接数(10个)时,第11台以后的手机与设备非首次连接时,需要将原有的配对信息先忽略掉,才能成功连上设备。
后来我们联系蓝牙厂商,将规则改为采用FIFO(先进先出)的队列规则存储第10台以后连接的手机,移除队列第一台配对的手机,保证最近连接的手机非首次连接是正常的。ble没发现此类问题,这个测试点仅供参考。

图3 协议栈队列示意图

针对性测试手机蓝牙模块的数据收发情况

用特殊蓝牙工具(蓝牙厂商提供,包括pc端和移动端),测试较长时间内(1-2个小时)pc端向移动端不断发送发送数据包,发包间隔可调整,发包间隔影响数据发送速率,测试不同间隔下的数据收发情况,选择最佳发包间隔。

蓝牙断开重连等异常情况

主要围绕多台蓝牙涉笔信号干扰、远距离蓝牙自动断开、断电重启导致蓝牙断开等。

6 总结

在接触固件测试的短短半年时间内,自我感觉get到的固件测试的知识还挺丰富的,不过测试的原理还是和软件测试相差无几,以上是我在固件测试过程中总结出的一点经验,还有许多考虑不周全的测试点,还需要在后续的测试中继续加强经验和总结。

免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐

更多网易技术、产品、运营经验分享请访问网易云社区。

相关文章:
【推荐】 Foxman,基于微核架构的Mock解决方案
【推荐】 Google准实时数据仓库Mesa(一)

转载于:https://www.cnblogs.com/zyfd/p/10113771.html

简单聊聊智能硬件的固件测试相关推荐

  1. 智能硬件如何进行测试?

    智能硬件的测试需要遵循以下步骤: 1.需求分析:了解硬件的功能和性能需求,制定测试计划. 2.测试设计:根据需求编写测试用例,确定测试流程.数据和环境. 3.测试执行:按照测试计划进行测试,包括功能测 ...

  2. 如何计算sdk占用内存_智能硬件sdk测试初探

    近期公司推出了某款智能录音笔,需要对录音笔笔端一些应用的sdk进行测试.因为之前对关于sdk测试的了解并不是很多,所以在本次测试中边测试.边了解.边学习,总结了一些过程和方法,在这里和大家交流分享一下 ...

  3. 百度软件测试工程师 智能硬件面试,百度智能硬件质量白皮书(1)

    云设备测试组从2013年7月组建,先后负责了小度wifi.小度TV伴侣.小度路由器.小度i耳目.智能手环等一系列智能硬件产品的测试:同时在dulife厂商合作中体验了多款智能硬件产品,包括智能家居.医 ...

  4. 百度智能硬件质量白皮书

    http://www.51testing.com/html/33/n-1271933.html 云设备测试组从2013年7月组建,先后负责了小度wifi.小度TV伴侣.小度路由器.小度i耳目.智能手环 ...

  5. 智能家居刚刚起步 为什么智能硬件成为热潮?

    先简单解释一下什么是智能硬件,其实没有统一的说法,我个人的理解,第一是传统硬件或者物件的智能化,比如说空调智能化.床垫智能化.枕头智能化等.第二是新型的智能硬件.手机已经是一个有很多年历史的东西,现在 ...

  6. 【Android智能硬件开发】【001】APK自启动

    前言 智能硬件不同于普通安卓手机,由于部署在工地现场,大多不会有专人维护 所以必须具备开机自启动.远程自动升级.自动重启.状态自动上报等功能 这篇博客,我们首先解决最简单的,开机自启动问题 注册权限 ...

  7. android 智能电视 电视盒子 安卓嵌入式硬件LAN压力测试

    android 智能电视 电视盒子 安卓嵌入式硬件LAN压力测试 android 智能电视 电视盒子 安卓嵌入式硬件LAN压力测试 android环境下部分必须用到的查询命令 操作命令 LAN口使用a ...

  8. 智能硬件的一些框架性内容

    按照软件进行分类 android设备系列:包括智能手机,智能电视,智能手表,连接云的汽车,智能导航设备 智能导航设备之智能骑行设备: 智能导航设备之步行导航设备 ios设备系列,主要是苹果系的产品. ...

  9. 车联网(智能车机)测试行业解决方案

    智能车机系统行业解读 汽车智能车机核心系统由信息系统娱乐系统(IVI系统).导航系统.智能网联系统.安全系统四个子系统组成,为用户提供信息娱乐.导航定位.安全监测.数据交互.云服务等多样性服务的综合性 ...

  10. 众筹倒闭始末:他8岁学编程14岁开公司,40岁败在智能硬件

    众筹倒闭始末:他8岁学编程14岁开公司,40岁败在智能硬件 投递人 itwriter 发布于 2016-02-05 15:57 评论(2) 有186人阅读 原文链接 [收藏] « » 一万多名众筹支持 ...

最新文章

  1. 经典网络VGGNet介绍
  2. JVM垃圾回收机制总结(5) :JDK垃圾收集器的配置命令
  3. HNOI2013 游走
  4. delete不调用析构函数的两种情况
  5. Nashorn如何在新层面上影响API的发展
  6. mongodb MapReduce
  7. 微信小程序开发的学习资料收集
  8. 微信PC版的API接口
  9. access网格线方向微为垂直_设置ACCESS2010背景和网格线
  10. 深大计算机与软件学院学生,深圳大学
  11. AI助力智能安检,基于目标检测模型实现X光安检图像智能检测分析
  12. 学习-Python列表之列表应用之降序排列
  13. 你的前500位种子用户是怎么来的?
  14. 芝法酱躺平攻略(5)—— SpringBoot编写公主连结公会战报刀工具
  15. 水星路由器短信认证配置流程
  16. colorkey口红怎么样_colorkey镜面唇釉怎么样
  17. iphone6 续航 测试软件,iPhone 6s电池续航能力究极测试 1715毫安电池逆天了
  18. win10安装GPU版tensorflow
  19. 帝国CMS内容页调栏目名称和栏目地址
  20. 公司于我有恩,辞职让我怎么说出口???

热门文章

  1. hαbits的意思_h【snail吧】_百度贴吧
  2. akb48_原AKB48成员板野友美结婚了!闪嫁23岁职棒球员高桥奎二
  3. 616nyoj 新手dp
  4. mysql 数据库安装命令_Mysql数据库的安装
  5. php对接海康视频教程_手把手教你php对接海康api
  6. 小牛uqi几个版本区别_川崎ZX25R便宜版本长这样?
  7. 【UVA10652】Board Wrapping(凸包+坐标旋转+多边形面积)
  8. 【2019银川网络赛A:】Maximum Element In A Stack(动态求栈中最大值)
  9. micro macro 区别和详解
  10. php连接云数据库语法,云水日记-PHP——连接数据库