Android BLE自动测试系统与框架

实际开发中,因为需要对不同的BLE设备进行测试。包括语音遥控器,OTA,模组,ble mesh等设备的不同功能进行兼容与稳定性测试,而使用人工测试非常的缓慢且消耗人力。因此开发了一个测试系统用来做自动测试。

同时这个自动测试,可以和CI结合起来,完成DevOps的构建。而且本套系统可以非常好的扩展到嵌入式中的其他测试,也包括其他的IoT RF测试。同时还可以与IC测试结合起来。

演示效果

youku视频: https://v.youku.com/v_show/id_XMzcxNTA2OTQ4NA==.html?spm=a2h3j.8428770.3416059.1

<embed src=’http://player.youku.com/player.php/sid/XMzcxNTA2OTQ4NA==/v.swf’ allowFullScreen=’true’ quality=’high’ width=’480′ height=’400′ align=’middle’ allowScriptAccess=’always’ type=’application/x-shockwave-flash’></embed>

另外一个比较完整的,但是有些程序有些老的测试Demo视频:

https://v.youku.com/v_show/id_XMzcxNTIwNTMxNg==.html?spm=a2h3j.8428770.3416059.1

GIF演示,比较大,需要在新标签中打开才能自动播放(对着下面的图片右键–>在新Tab中打开):

系统构成

这个系统的组成如下:

为了尽可能的复用,系统分为了多个子系统。

有通讯用的Socket.IO, 有Appium python测试脚本,有用来做模拟人操作硬件的继电器模组以及引出GPIO来控制继电器的嵌入式开发板。

系统的主要模块为:

  1. Appium:用于Android与iOS的自动化测试
  2. Android中的APK开发,这包括key测试,OTA等
  3. ARM开发板中的GPIO控制与SocketIO通讯,接收命令与反馈结果
  4. Module等设备的Qt上位机开发,用于控制USB与串口设备,同时通过SocketIO接收命令与反馈结果
  5. Python appium 脚本完成不同的功能测试,包括语音遥控器的识别结果测试,key测试等。

 

控制前端

为了统一所有的设备,并尽可能的通用,在最顶端是一个Qt编写的应用程序QController,可以执行测试脚本,并可以对结果进行统计导出,也可以和其他的模块通过Socket.IO来通讯,从而可以在不同的子系统之间相互判断执行结果,协调测试步骤:

测试过程中,会将每个步骤的截图,log,timestamp等信息保存起来。 便于测试结果和步骤的分析与问题调查。

测试结果后,结果可以导出到csv文件中,同时也有统计结果:

通讯模块

通过SocketIO,python脚本,Qt,嵌入式开发板C++程序,以及Web浏览器,均可以相互打通,同时因为SocketIO本身跨平台,因此和现有的一些Windows测试工具和平台也可以相互结合起来使用。同时因为是网络,还可以远程耦合与访问。

例如在浏览器上面,既可以看到消息,也可以发送命令控制单个模块,下面图片是浏览器:

Qt中的消息:

Raspberry C++中的消息

结果的存储与统计

为了可以方便的了解最终的测试结果,UI中有filter与Chart统计功能:

每个Step也有对应的测试截图与log

硬件需求

继电器 + Raspberry + 被测试设备(例如遥控器):

另外还需要手机,以及PC。

效果图片

老版本下的语音遥控器的语音自动测试

Leave a Reply

Your email address will not be published. Required fields are marked *