为了简化Matter设备的测试和认证过程,连接标准联盟开发了一套标准化的测试工具,即Matter Test Harness。随着Matter发展至V1.3版本,Matter的测试工具Test Harness也在同步更新,目前联盟已经不再提供完整的最新Test Harness镜像文件,而是完全开源,可以在GitHub上获取代码自行安装,本文将着重介绍最新Test Harness(以下简称TH)工具的安装步骤。
-
TH所需硬件介绍
-
一个树莓派4B作为TH的主机(4GB RAM及以上)
-
一张64GB(及以上)的SD卡给树莓派使用
-
一个Nordic 52840 Dongle作为RCP
-
TH工具安装
目前TH工具的代码已经完全开源,仓库地址如下:
切换分支和标签可以查看TH各版本情况,我们以最近一次SVE活动,即Matter V1.3 SVE测试活动使用的v2.10-beta3+spring2024版本为例。
-
在树莓派上安装Ubuntu Server
在电脑上插入SD卡,选择UBUNTU SERVER 22.04.4LTS(64-BIT),并设置好用户名和密码,开启SSH服务,允许使用密码登录,开始镜像烧录。
-
SSH远程登录树莓派
完成Ubuntu Server镜像烧录后,将SD卡插入树莓派并上电启动,待启动完成后,可以通过树莓派分配到的IP地址SSH远程登录树莓派。
-
在树莓派上获取certification-tool仓库
注意:请确保您的网络环境稳定并且可以访问GitHub等外部网址,否则后续的所有步骤都会非常容易失败。
本文以v2.10-beta3+spring2024为例,直接指定拉取v2.10-beta3+spring2024分支,在home目录下直接拉取certification-tool仓库:
$ git clone -b v2.10-beta3+spring2024 https://github.com/project-chip/certification-tool.git
-
获取submodule
进入 certification-tool 目录,开始下载子模块。
$ cd certification-tool/
$ git submodule update –init –recursive
-
安装TH依赖项
直接运行 auto-install.sh 脚本来进行配置和安装。
$ ./scripts/pi-setup/auto-install.sh
脚本运行至最后,系统提示输入“1”,重启树莓派。
-
访问TH UI界面
等待树莓派重新启动后,在浏览器中输入树莓派的IP地址,显示TH的UI界面,至此TH工具安装完毕。
-
插入RCP Dongle
将作为RCP的Dongle(需提前烧录好RCP固件)插入树莓派,两者组成边界路由(OTBR),启动OTBR,建立Thread网络,如果您的树莓派没有识别,可以重新启动树莓派再运行otbr_start.sh脚本。
$ ./certification-tool/scripts/OTBR/otbr_start.sh
-
升级已有TH镜像
如果您已经安装旧版TH镜像,想要升级到最新版本,只需要先关闭所有docker,把certification-tool仓库拉取到想要升级的分支,然后同样拉取submodule并执行auto-update.sh脚本即可,在执行完成后运行start.sh脚本重新启动docker。
$ cd ~/certification-tool
$ ./scripts/stop.sh
$ git fetch
$ git checkout <Target_Branch/Tag>
$ git pull
$ git submodule update –init –recursive
$ ./scripts/ubuntu/auto-update.sh <Target_Branch/Tag>
$ ./scripts/start.sh
-
TH工具使用
根据联盟的“TestPlan”,目前Matter的测试项可以分为五类:全自动测试项,半自动测试项,手动测试项,Python in docker测试项以及UI Python测试项。
-
建立Project
首先在浏览器输入作为TH主机的树莓派的IP地址,进入TH的UI界面,点击左上角的“+ Add Project”创建一个新工程,创建工程后在“Project details”中可以选择“Edit”对该工程进行配置。
-
根据不同的网络连接类型,可以在相应的区域进行编辑。以Matter Over Thread产品为例,在配置界面中找到“thread”网络相关部分,在这里可以修改测试建立的Thread网络的信息,如channel、panid、networkkey等。
-
在“dut_config”一栏中,根据待测设备的实际信息进行修改,以下为一个示例:
-
在“test_parameters”一栏中,对UI Python测试项进行配置,对于UI Python测试项,需要提前手动建立Thread网络,并将对应的“dataset”值填入此栏,以下为一个示例:
-
在右侧的“PICS”一栏中,导入待测设备的PICS文件,并点击“Update”。
-
完成以上配置后,点击该工程的箭头(Go To Test-Run)进入测试页面,点击“Create New Test Run”创建新测试项。
右侧的Summary列表已罗列出根据导入的PICS文件生成的测试项,TH已将测试项自动分类:FirstManualSuite为手动测试项,FirstChipToolSuite包含全自动和半自动测试项(semi-automated为半自动),Python Testing需要查看“TestPlan”来区分UI自动测试或docker自动测试。
-
全自动测试项
全自动测试项在测试过程中不需要任何其余操作,以TC-ACL-1.1为例,点击“Clear Selection”清除全部自动勾选,并勾选TC-ACL-1.1,输入操作者名称,点击“Start”开始测试。
-
半自动测试项
半自动测试项是在全自动测试项的基础上进行一些必要的手动操作,如重启设备、手动输入命令验证等。
需要注意的是,在半自动测试项的手动步骤中,我们若要发送命令给设备需要使用测试中随机生成的NODE ID,并且需要在docker中进行输入,因此使用chip-tool的命令示例如下:
$ docker exec -it th-sdk ./chip-tool onoff on 0x65499e6daeaf0413 1
在某些旧版本的TH中,需要使用th-chip-tool而不是th-sdk,请注意确认版本。
随机生成的NODE ID会在测试初期在右侧的日志区域打印出来,每次测试都不相同,需要自行查看并正确使用NODE ID。
-
手动测试项
手动测试项可以先不使用TH UI,根据“Test Plan”执行手动操作,并验证结果。对于Matter Over Thread产品在进行手动测试前,需要先建立Thread网络,运行“certification-tool/scripts/OTBR”目录下的“otbr_start.sh”脚本即可建立Thread网络,在运行前可以适当调整“otbr_start.sh”脚本里的“channel”参数来尽量减少干扰。
-
UI Python测试项
UI Python测试项和全自动测试项一样,测试过程中不需要人工干预,对于Matter Over Thread产品,在测试开始前需要先自行建立Thread网络,并把dataset写入到“test_parameters”一栏,这一步在第一节的第3点已经介绍过,不再赘述。
-
Python in docker测试项
除UI Python测试外,还有一部分python测试项需要在docker中运行python脚本进行测试,具体步骤如下:
-
使用“docker images”命令查看名为“connectedhomeip/chip-cert-bins”的docker的tag
$ docker images
-
进入docker,同时把测试脚本和证书等文件映射进docker,示例命令如下:
$ docker run -v /home/ubuntu/certification-tool/backend/test_collections/matter/sdk_tests/sdk_checkout/python_testing:/root/temp_python_testing -v /home/ubuntu/ci-pics-values.txt:/root/ci-pics-values -v /var/credentials:/credentials -v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket -v $(pwd):/launch_dir –privileged –network host -it connectedhomeip/chip-cert-bins:9f6d627e0262e1d023986291948bb4e845be803e
-
运行/root/temp_python_testing文件夹中的测试脚本,并添加待测设备的参数以及“Test Plan”要求的参数,开始测试,示例命令如下:
$ rm -f admin_storage.json && python3 temp_python_testing/TC_OPCREDS_3_1.py –discriminator 2562 –passcode 36797971 –commissioning-method ble-thread –paa-trust-store-path /credentials/development/paa-root-certs/ –storage-path admin_storage.json –thread-dataset-hex 0e08000000000001000035060004001fffe00708fd50afc244fc6392041043dd81dbf3fb77bdbdd881c09f04e9e80c0402a0f7f8000300001201025b3502085b35dead5b35beef030435623335051000112233445566778899aabbccddeeff –ble-interface-id 0
以上内容包含了目前Matter的所有测试项,以及各类测试项的参数配置和测试流程,希望可以帮助大家更好地使用TestHarness工具来进行Matter测试。