【test】蓝牙测试基础

蓝牙的背景

蓝牙相关的测试产品,例如蓝牙音箱、蓝牙手环、蓝牙耳机、蓝牙灯等消费类电子产品。小编曾经进行蓝牙测试,特此分享经验,不当之处,欢迎纠正。

蓝牙作为一种近距离的无线传输技术,功率低,从蓝牙 1.0 到蓝牙 5.0,满足用户在给定距离范围内(一般 10 米)快速和安全数据或语音传输要求,所以被大量的集成到给中设备上。

蓝牙测试相关技术点

蓝牙 - 中心模式

  • 建立中心
  • 扫描外设
  • 连接
  • 连接外设(不同的连接状态)
  • 连接失败
  • 连接断开
  • 连接成功
  • 扫描外设的服务和特征
  • 获取外设的服务
  • 获取外设的特征集
  • 特征值:描述值
  • 订阅通知
  • 断开连接

蓝牙 - 外设模式

  • 启动外设对象
  • 设置外设服务,特征,描述,权限等等
  • 外设发送广播
  • 设置处理/取消订阅
  • 读特征
  • 写特征

蓝牙的工作状态
准备
广播
监听扫描
初始化连接
已连接

IOS 蓝牙

iOS 平台蓝牙使用 CoreBluetooth 框架,功能强大,支持蓝牙 4.0 标准
BLE 蓝牙
优点:传输快,耗电低
缺点:传输数据有限,可调整具体的传输字节大小(约 512 字节)
CoreBluetooth 框架包括外设和中心两种模式,发起者(central) 为中心设备,被连接者(peripheral)为外设设备。例如手机通过蓝牙连接音箱,手机蓝牙为 central,蓝牙音箱为外设。
服务 (service) 和特征(chatacteristic),蓝牙设备通过 GATT 协议定义数据的通讯内容。一个外设可以提供多种服务,一种服务包括多个不同的特征。特征的数据结构是键值对,存储数据。每个特征属性分为读、写、通知等几种方式。
中心设备通过外设的特征来读写外设的数据和获取通知。外设可通过广播自己的 service 和 characteristic,中心设备可以通过订阅某一个具体的特征。外设和中心设备之间通过特征建立双向连接,形成传输数据的通道。
UUID:蓝牙唯一标识符,区分不同服务和特征。

Android 蓝牙

蓝牙耳机 BluetoothHeadset
蓝牙音频 A2DP
蓝牙健康设备 HDP(例如心率监测仪、血糖仪、温度计、台秤等)进行通信
蓝牙 Socket 通道,手机与其他蓝牙设备通过 InputStream 和 OutputStream 交换数据

蓝牙测试

认识不同平台的蓝牙,找到其共同点,例如苹果平台与安卓平台的蓝牙 BLE 框架类似,都有中心和外设两种模式,测试环境搭建分清楚中心设备和外设设备
蓝牙扫描、连接、收发数据等全流程进行测试
对蓝牙的连接、断开进行功能和间隔断连测试
收发数据(大量数据、小量数据)等压力测试
蓝牙收发数据的距离限制
蓝牙传输速率测试
不同手机硬件平台的兼容性测试
蓝牙与 WiFi(同频段)同时工作测试
不同平台的不同系统版本蓝牙连接搜索测试(主流手机系统版本,谷歌搜索)

蓝牙的知识补充

蓝牙资源

https://www.bluetooth.com/bluetooth-resources/?types=study-guide

谷歌文档

https://developer.android.google.cn/guide/topics/connectivity/bluetooth

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Google Test单元测试,你可以在C++项目中使用Google Test框架来编写和运行单元测试。 首先,你需要在项目中包含Google Test库。你可以从Google Test的官方GitHub仓库下载最新版本的源代码,并将其添加到你的项目中。 在编写单元测试之前,你需要创建一个测试文件。这个文件应该包含一个或多个测试用例,每个测试用例都是一个函数。你可以使用Google Test提供的宏来定义和运行测试用例。 一个简单的示例代码如下: ```c++ #include <gtest/gtest.h> // 定义一个测试用例 TEST(ExampleTest, Addition) { int a = 2; int b = 3; int result = a + b; EXPECT_EQ(result, 5); } // 定义另一个测试用例 TEST(ExampleTest, Subtraction) { int a = 5; int b = 3; int result = a - b; EXPECT_EQ(result, 2); } int main(int argc, char** argv) { // 初始化 Google Test 框架 ::testing::InitGoogleTest(&argc, argv); // 运行所有的测试用例 return RUN_ALL_TESTS(); } ``` 在这个例子中,我们定义了两个测试用例:Addition和Subtraction。每个测试用例都包含一些断言,用于验证预期结果和实际结果是否相等。在main函数中,我们初始化Google Test框架并运行所有的测试用例。 要编译和运行这个测试文件,你需要将Google Test库链接到你的项目中。具体的编译和链接过程可能因你使用的开环境而有所不同。 当你运行这个测试文件时,Google Test将会执行所有的测试用例,并输出测试结果。如果所有的断言都通过了,测试将会被标记为通过;否则,测试将会被标记为失败,并显示详细的错误信息。 这只是一个简单的示例,Google Test还提供了很多其他的功能和特性,例如测试夹具、参数化测试测试报告等。你可以查阅Google Test的官方文档以获取更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值