ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Matter PICS 与 PIXIT 完全指南:从一致性声明生成、IDM-10.4 校验到声明式参数注入(connectedhomeip)

Matter PICS 与 PIXIT 完全指南:从一致性声明生成、IDM-10.4 校验到声明式参数注入(connectedhomeip) Matter PICS 与 PIXIT 完全指南从一致性声明生成、IDM-10.4 校验到声明式参数注入connectedhomeip【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip导读本文以 docs/testing/pics_and_pixit.md 为主体结合 connectedhomeipMatter SDK仓库中的真实实现系统讲解 Matter 认证测试体系中的两大核心概念PICSProtocol Implementation Conformance Statement协议实现一致性声明与PIXITProtocol Implementation eXtra Information for Testing协议实现测试补充信息。你将掌握 PICS 代码的格式与编码规则、如何为多端点 Matter 设备逐端点生成一致性声明、如何用官方 PICS 工具做认证前校验、如何通过仓库内置的 TC-IDM-10.4 测试核对 PICS 与实际设备是否一致以及如何在 Python 测试中通过pixit/harness_params装饰器声明式地声明和校验测试参数。1. 什么是 PICS用二进制位描述设备的能力清单在包括 CSAConnectivity Standards Alliance在内的许多标准定义组织中Protocol Implementation Conformance Statement协议实现一致性声明PICS被引入用于简化协议元素的描述。每个 PICS 代码都是一个二进制值描述设备上某个特定元素或能力的有与无。每个 Cluster集群都拥有一个定义好的 PICS 前缀字符串并定义一组 PICS 代码用来描述该集群是否存在于设备上server/client 两端分别描述每个 Feature特性、Attribute属性、Command命令、Event事件是否存在以上元素分别处于 server 侧还是 client 侧。1.1 PICS 代码格式一个完整的编码示例假设存在一个名为 ANeatCluster 的集群其 PICS 前缀为ANC包含两个特性bit 0 和 bit 1、两个属性0x0000 和 0x0001、两个可接受命令0x00 和 0x01、一个命令响应0x02以及一个事件0x00则定义如下 PICS 代码CODE描述ANC.S设备将该 ANC 集群实现为 serverANC.S.F00设备在 ANC server 集群上实现了 bit 0 处的特性ANC.S.F01设备在 ANC server 集群上实现了 bit 1 处的特性ANC.S.A0000设备在 ANC server 集群上实现了属性 0x0000ANC.S.A0001设备在 ANC server 集群上实现了属性 0x0001ANC.S.C00.Rsp设备在 ANC server 集群上接受命令 0x00ANC.S.C01.Rsp设备在 ANC server 集群上接受命令 0x01ANC.S.C02.Tx设备在 ANC server 集群上生成命令响应 0x02ANC.S.E00设备在 ANC server 集群上生成事件 0x00ANC.C设备支持 ANC clientANC.C.F00设备 ANC client 能够理解 bit 0 处的特性ANC.C.F01设备 ANC client 能够理解 bit 1 处的特性ANC.C.A0000设备 ANC client 能够读取或订阅属性 0x0000ANC.C.A0001设备 ANC client 能够读取或订阅属性 0x0001ANC.C.C00.Rsp设备 ANC client 能够发送命令 ID 0x00ANC.C.C01.Rsp设备 ANC client 能够发送命令 ID 0x01ANC.C.C02.Tx设备 ANC client 能够理解命令响应 ID 0x02ANC.C.E00设备 ANC client 能够理解事件 ID 0x00这套编码规则的字符串生成逻辑在仓库中也有对应实现src/python_testing/matter_testing_infrastructure/matter/testing/pics.py 中定义了如下格式函数event_pics_str(pics_base, eid)→f{pics_base}.S.E{eid:02x}事件 PICSattribute_pics_str(pics_base, aid)→f{pics_base}.S.A{aid:04x}属性 PICSID 固定 4 位十六进制accepted_cmd_pics_str(pics_base, cid)→f{pics_base}.S.C{cid:02x}.Rsp可接受命令后缀.Rsp表示接受该命令并响应generated_cmd_pics_str(pics_base, cid)→f{pics_base}.S.C{cid:02x}.Tx生成命令后缀.Tx表示主动发出该命令feature_pics_str(pics_base, bit)→f{pics_base}.S.F{bit:02x}特性 PICS注意这里用的是特性位号而不是掩码值server_pics_str(pics_base)→f{pics_base}.Sclient_pics_str(pics_base)→f{pics_base}.C。1.2 数据模型之外的 PICS除了上述标准集群 PICS 之外还会定义其他 PICS 来描述无法直接通过数据模型表达的能力。例如设备是否响应对 Matter 数据模型产生影响的手动操作Manual PICS节点级node-levelPICS它们属于 MCORE PICS 集合的一部分描述节点级支持能力例如无线电类型、设备是否可被配网commissionable、设备是否附带 QR 码等。1.3 PICS 在测试中的两种用途PICS 在测试中以两种方式被使用顶层 PICSTop-level PICS出现在测试计划test plan顶部决定整个测试用例是否应该运行。例如ANeatCluster 的测试用例会以ANC.S作为顶层 PICS表示只有当 ANC 集群出现在被测端点上时才运行该测试。步骤级 PICSstep-wise PICS测试用例内部用 PICS 来门控gate某个具体测试步骤当设备未实现某个元素或能力时跳过对应的步骤。1.4 PICS 文件与官方工具某个规范发布版本的全部 PICS 代码集合以一组PICS XML 文件的形式提供。这些文件被加载进PICS 工具PICS tool用于手动设置设备的全部 PICS 代码。PICS XML 文件与 PICS 工具随官方规范发布包一并分发可在 CSA 的 Causeway 成员站点获取具体位置为 groups.csa-iot.org 的 members-all 文档文件夹 2269。2. PIXIT为测试提供实现相关的补充信息PIXIT 全称为 Protocol Implementation eXtra Information for Testing协议实现测试补充信息。一个 PIXIT 值提供的是测试所必需的、由具体实现决定的条件或数值。PIXIT 值用于传递测试所需、但通常不对外部客户端开放的信息。例如设备上测试事件触发器的密钥trigger key测试框架test harness使用的网络凭据network credentials。关于 PIXIT 格式的更多信息可参考 PICS Guidelineschip-test-plans 仓库的 PICS Guidelines 文档本仓库文档中也给出了该引用。3. 为 Matter 设备创建 PICS 一致性声明3.1 为什么 Matter 不能只用一份 PICS 文件由于Matter 设备可能在多个端点上包含同一集群的多个不同实例无法用一套基于集群的 PICS 文件无歧义地描述一台 Matter 设备。因此Matter 设备使用完整的 PICS XML 文件集合来描述每一个端点。3.2 逐端点生成一致性声明的步骤要为 Matter 设备创建一致性声明对每个端点将完整的 PICS XML 文件集合加载进 PICS 工具picstool.csa-iot.org为正在描述的端点勾选其上存在的每一个 PICS 元素PICS 工具的使用方法见工具菜单中的 readme。3.3 MCORE 元素的端点归属约定完整节点级的 MCORE 元素中一部分实际上只适用于根节点root nodeEP0另一部分则适用于所有端点。文档给出的约定如下例如整个设备是可以被配网的但配网测试只需对 EP0 运行因此MCORE PICS 应设置在 EP0 的 PICS 集合中而像MCORE.IDM这样的代码则适用于每一个端点。3.4 Helper scriptsPICS Generator 预填充工具CSA 认证的官方工具链是随发布包提供的 PICS 工具PICS 文件必须通过 PICS 工具的校验才能用于认证。但在 Matter 中许多 PICS 代码与设备上直接暴露的元素一一对应。例如集群是否存在由端点上的 ServerList 决定FeatureMap特性位图、AttributeList、CommandList 直接对应PICS.S.Fxx、PICS.S.Axxxx与PICS.S.Cxx.Xx这些 PICS 代码。为此Matter SDK 提供了一个预填充工具PICSGenerator.py位于 src/tools/PICS-generator/PICSGenerator.py可以把这些值批量写入 PICS XML 文件避免在 PICS 工具中逐一手动填写。该目录下还包含配套的 XMLPICSValidator.py 与pics_generator_support.py。环境准备根据 src/tools/PICS-generator/README.md该工具复用 python_testing 的 Python 环境scripts/build_python.sh -m platform -i out/python_env source out/python_env/bin/activate脚本使用 PICS XML 模板生成 PICS 输出这些模板文件来自 CSA 成员站点matter-csg 文档 26122。注意该工具已验证使用 V24 PICS用于 Matter 1.2 认证。设备尚未配网时带配网参数运行python3 PICSGenerator.py --pics-template pathToPicsTemplateFolder --pics-output outputPath --commissioning-method ble-thread --discriminator DESCRIMINATOR --passcode PASSCODE --thread-dataset-hex DATASET_AS_HEX对于运行在 Linux/macOS 上的示例程序可使用 on-network 配网python3 PICSGenerator.py --pics-template pathToPicsTemplateFolder --pics-output outputPath --commissioning-method on-network --discriminator DESCRIMINATOR --passcode PASSCODE若设备使用开发用 PAA追加--paa-trust-store-path credentials/development/paa-root-certs若设备使用生产 PAA追加--paa-trust-store-path credentials/production/paa-root-certs对应仓库中的 credentials/development/paa-root-certs 与 credentials/production/paa-root-certs。设备已配网时python3 PICSGenerator.py --pics-template pathToPicsTemplateFolder --pics-output outputPath工具会输出所有端点的 PICS 到一个文件夹中。其数据模型来源是可选的--dm-xml参数指向仓库根目录data_model文件夹中的 spec scrape例如connectedhomeip/data_model/master若不指定工具会从设备 BasicInformation 集群读取规范版本并据此选择对应的 data model scrape。当前仓库的数据模型版本见 data_model含 1.0 至 1.6.1 等多个版本目录。工具不会填写的 PICS 类别必须手动在 PICS 工具中填写由于设备表达能力的限制该工具不会填写以下类别的 PICS 代码这些需要手动在 PICS 工具中完成事件 PICSPICS.S.ExxClient PICSMCOREbase.xmlPICS手动或其他非元素类 PICS描述可选写属性是否可写的 PICS其他任何非元素类 PICS重要提醒该脚本不是 PICS 生成的官方工具只是辅助手动流程的助手。务必回头检查生成的值是否符合预期并填写其余 PICS。README 也指出事件 PICS 由于事件列表全局属性已废弃仅根据规范一致性标记为受支持可能与设备实际情况不完全一致。新规范版本的适配每个新 Matter 版本都会新增 PICS 文件。为了确保工具能把集群名映射到对应的 PICS XML 文件可以运行XMLPICSValidator.py校验映射关系在某个集群无法映射到 PICS XML 文件时会给出提示python3 XMLPICSValidator.py --pics-template pathToPicsTemplateFolder --dm-xml pathToDmScrapeFolder注意--dm-xml是该脚本的必填项因为它不针对具体设备运行。4. 使用 IDM-10.4 认证测试校验 PICS并非所有 PICS 都能在设备上验证但 SDK 提供了对照设备实际状态核对已声明 PICS的测试。这是认证时应首先运行的测试之一因为PICS 文件决定了需要运行哪一组测试。4.1 测试的本地运行方式按 docs/testing/python.md 中的说明在本地运行 Python 测试。PICS checker 测试为TC-IDM-10.4实现于 src/python_testing/TC_pics_checker.py。环境准备编译并安装 Python wheel. ./scripts/bootstrap.sh # 或后续快速激活 . ./scripts/activate.sh ./scripts/build_python.sh -i out/python_env source out/python_env/bin/activate该测试针对一个端点运行一组 PICS XML 文件因此--endpoint和--PICS两个参数都是必需的。可以在本地针对某个端点的 PICS XML 运行测试直接提供包含该端点 PICS XML 文件集合的目录名即可。4.2 测试步骤详解TC_pics_checker.py 中定义了steps_TC_IDM_10_4的 12 个步骤TH 在测试设置期间对被测端点执行所有属性的 wildcard read通配读取对每个标准集群集群在端点存在则确保 server 侧 PICS 代码如 On/Off 集群的OO.S存在于 PICS 文件中不存在则确保该代码不存在——PICS 与 server 集群精确匹配对每个标准集群的每个属性集群存在且属性 ID 出现在 AttributeList 全局属性中则确保属性 PICS如 On/Off 集群 OnOff 属性的OO.S.A000存在否则确保不存在——所有集群的所有属性精确匹配对规范中每个集群的每个 client→server 命令命令出现在 accepted commands 列表中则确保可接受命令 PICS 存在否则不存在——所有可接受命令精确匹配对规范中每个集群的每个 server→client 命令命令出现在 generated commands 列表中则确保生成命令 PICS 存在否则不存在——所有生成命令精确匹配对规范中每个集群的每个特性集群存在且特性在 FeatureMap 中置位则确保特性 PICS 存在否则不存在——所有特性精确匹配确保PICS_SDK_CI_ONLYPICS 不出现在 PICS 文件中该 PICS 不允许出现在认证文件中若端点上有根节点设备类型root node device typeID 0x0016确保MCORE.ROLE.COMMISSIONEEPICS 已置位当端点为 EP0 时若设备有任意 onboarding payloadMCORE.DD.QR或MCORE.DD.NFC则必须同时置位手动配对码 PICSMCORE.DD.MANUAL_PC。其他端点跳过因为 DD PICS 代码按惯例只声明在 EP0 的 PICS 切片中当端点为 EP0 时对每个可从 wildcard read 推导出的 Base/MCORE PICS 代码bridge 角色、OTA requestor/provider、多端点 groups、MCORE.ROLE.COMMISSIONEE、MCORE.IDM.S等确保 PICS 文件中的值与设备协议上报的值一致。其他端点跳过对规范标记为**强制的MANDATORY**事件OTA 集群除外其目前没有 PICS 代码确保对应的事件 PICS 代码cluster.S.Eid已在 PICS 文件中置位若以上任一检查失败测试失败。4.3 实现细节测试如何比对设备与 PICS从源码可以看出该校验的底层机制步骤 2~5 通过 _add_pics_for_lists 遍历Clusters.ClusterObjects.ALL_ATTRIBUTES、ALL_ACCEPTED_COMMANDS、ALL_GENERATED_COMMANDS对每个元素用 1.1 节的字符串函数拼出 PICS 代码然后判断该元素是否在端点上据此决定 PICS 是否必须存在_check_and_record_errors全局元素ID 0xF000不生成 PICS源码第 69 行if element_id 0xF000: continue步骤 6 需要把 codegen 使用的特性掩码mask 0x01、0x02…转换为位号bit 1、2…源码通过int(math.log2(feature_mask))实现对RvcRunMode、RvcCleanMode这类已知特性掩码为 0x0 的集群会记录 warning 而不是直接失败步骤 9 的依据是规范 5.7.6支持 QR/NFC 的设备必须支持手动码唯一例外是现场升级in-field upgrade场景——此时设备没有任何随附 onboarding 码后续配网窗口产生的码由 administrator commissioning 测试覆盖步骤 10 使用derive_base_pics_facts_from_device_wildcard()从全设备 wildcard 读取推导 Base/MCORE 事实再由base_pics_facts_to_pics_codes()映射为 PICS 代码集合与BASE_PICS_CODES_DERIVED定义于 pics.py逐一比对步骤 11 使用base_facts.mandatory_events_by_cluster获得各端点上的强制事件。5. 为 Matter 设备设置 PIXITMatter 测试目前不支持从 PICS XML 文件中读取 PIXIT 值。取而代之的是测试将 PIXIT 实现为测试专用参数test-specific flags本地运行时在命令行上指定测试框架harness中运行时在测试配置test configuration的 test parameters 区域指定。6. 声明式 PIXIT 与 harness 参数Declarative PIXITs and harness parametersPython 测试框架为测试声明其所需参数提供了声明式declarative方式。一个在 src/python_testing 中实现为MatterBaseTest子类的测试通过装饰器声明参数这些声明在测试体运行前的setup_test()阶段被校验声明值会记录在失败输出中。这让测试的必需输入显式化、自文档化并能在测试开始前就暴露缺失或类型错误的参数值而不是在测试中途才失败。框架支持两类参数PIXIT测试专用值如应用路径、超时、触发器密钥。用pixit声明用self.pixit(name)读取通过user_params以--*-arg命令行标志提供。定义于 matter.testing.pixitHarness 参数标准 runner 与配网标志如 discriminator、passcode、Wi-Fi 凭据。用harness_params声明用self.harness_param(name)读取从MatterTestConfig解析。合法名称集合由 matter.testing.harness_params 中的注册表固定。6.1 声明 PIXIT测试所需的每个 PIXIT 都用一个pixit装饰器声明。多个装饰器可以堆叠且必须放在async_test_body和run_if_endpoint_matches之上以保证校验先于测试体执行。from matter.testing.pixit import pixit from matter.testing.matter_testing import MatterBaseTest, async_test_body class TC_Example(MatterBaseTest): pixit(th_server_app_path, str, Path to the TH server application) pixit(timeout_sec, int, Timeout in seconds, requiredFalse, default30) async_test_body async def test_TC_Example_1_1(self): app_path self.pixit(th_server_app_path) timeout self.pixit(timeout_sec)装饰器签名pixit(name, value_type, description, requiredTrue, default, sensitiveFalse)各参数含义参数说明nameuser_params中的键命令行上用--flag name:value提供value_type期望的 Python 类型在 setup 阶段用isinstance强制校验description在错误消息和失败输出中显示的文本required为True默认时值缺失会导致 setup 失败default未提供值的可选 PIXIT 的返回值requiredTrue时被忽略sensitive为True时值会在失败输出中被脱敏显示***REDACTED***从源码看装饰器实现的核心是 PixitDefinition 数据类多个pixit装饰器按最外层优先insert(0, ...)收集到func._pixit_definitions列表default字段使用哨兵对象_PIXIT_NO_DEFAULT来区分未提供默认值与默认值为 None。读取方式self.pixit(name)的解析顺序为——user_params中存在则返回该值否则若是可选 PIXIT 且装饰器提供了 default则返回装饰器默认值否则返回self.pixit方法自身的default参数见 matter_testing.py。类型与命令行标志的映射声明的value_type决定了提供该值所用的命令行标志映射表实现在 pixit.py 的_type_to_arg_flagPython 类型命令行标志str--string-arg name:valueint--int-arg name:valuebool--bool-arg name:valuefloat--float-arg name:valuebytes--hex-arg name:valuelist/dict--json-arg name:value提供的值类型与声明不符时setup 会失败并给出指明期望标志的错误消息validate_pixit_types逐项检查isinstance。6.2 声明 Harness 参数标准的配网与 runner 标志由runner.py填充到MatterTestConfig上。测试声明它所依赖的参数使这些参数在 setup 阶段被校验并记录在失败输出中。名称必须存在于注册表中它们的描述与命令行提示取自注册表而不是在每个测试上重复书写。from matter.testing.harness_params import harness_params from matter.testing.pixit import pixit class TC_Example(MatterBaseTest): harness_params(discriminator, passcode, optional(endpoint,)) pixit(th_server_app_path, str, Path to the TH server application) async_test_body async def test_TC_Example_1_1(self): disc self.harness_param(discriminator) path self.pixit(th_server_app_path)签名harness_params(*required, optional())位置参数为必填名称未满足时 setup 失败optional中列出的名称仅用于文档记录与失败输出不参与校验名称不在注册表中时装饰器应用阶段即抛出ValueError。注册表HARNESS_PARAM_REGISTRYharness_params.py定义的名称如下名称描述提供方式敏感discriminator长 discriminator--discriminator或--qr-code/--manual-codepasscodeSetup passcodePASE--passcode或--qr-code/--manual-codeYeswifi_ssidWi-Fi SSID--wifi-ssidwifi_passphraseWi-Fi 密码--wifi-passphraseYescommissioning_method配网方法--commissioning-methoddut_node_idDUT 在 fabric 上的节点 ID--dut-node-idendpoint被测端点--endpointthread_datasetThread 操作数据集 hex--thread-dataset-hexYescommissionee_ipCommissionee IPon-network-ip--ip-addr关于 setup code 的重要行为discriminator和passcode可以由各自标志或--qr-code/--manual-code满足。但通过 setup code 提供时解码后的数值不会存储在MatterTestConfig上因此self.harness_param返回None失败输出中显示from --qr-code或from setup code。需要数值型 discriminator 或 passcode 的测试应通过--discriminator/--passcode获取而不是 setup code这正是_resolve_discriminator_display/_resolve_passcode_display的实现逻辑。6.3 校验与失败输出setup_test()会对照user_params校验声明的 PIXIT并对照MatterTestConfig校验声明的 harness 参数_validate_test_parameters调用format_missing_test_parameters。必填值缺失或 PIXIT 类型错误时测试立即失败输出单条消息列出缺失值及其提供方式Test test_TC_Example_1_1 is missing required PIXIT value(s): Missing required PIXITs: - th_server_app_path (str): Path to the TH server application Provide via: --string-arg th_server_app_path:value Available optional PIXITs: - timeout_sec (int): Timeout in seconds Default: 30 Override via: --int-arg timeout_sec:value Test test_TC_Example_1_1 is missing required harness parameter(s): Missing required harness (pass via command line): - discriminator: Long discriminator for commissioning (or use --qr-code / --manual-code). Provide via: --discriminator value or --qr-code payload or --manual-code code失败时的参数记录当非配网测试失败时所有已声明的参数都会记录到日志中包括已提供的以便排查问题。声明的规则如下format_declared_parameters_for_failure声明为sensitiveTrue的 PIXIT 以及注册表中passcode、wifi_passphrase、thread_dataset显示为***REDACTED***字节值显示其长度而非内容N bytes未使用这些装饰器的测试不受影响——校验与失败输出仅在存在装饰器时才生效。6.4 命令行示例一个同时声明了 PIXIT 和 harness 参数的测试harness_params(discriminator, passcode, commissioning_method) pixit(th_server_app_path, str, Path to the TH server application) pixit(timeout_sec, int, Timeout in seconds, requiredFalse, default30) async_test_body async def test_TC_Example_1_1(self): ...运行方式python3 src/python_testing/TC_Example.py \ --commissioning-method on-network \ --discriminator 3840 \ --passcode 20202021 \ --string-arg th_server_app_path:/path/to/th-server \ --int-arg timeout_sec:60其中--commissioning-method、--discriminator、--passcode满足 harness 声明--string-arg与--int-arg满足 PIXIT。仓库中真实测试的 PIXIT 使用可参考 docs/testing/python.md 中的示例例如python3 src/python_testing/TC_REFALM_2_2.py --commissioning-method on-network --qr-code MT:-24J0AFN00KA0648G00 --PICS src/app/tests/suites/certification/ci-pics-values --app-pipe /tmp/ref_alm_2_2 --int-arg PIXIT.REFALM.AlarmThreshold:17. PICS 用于测试选择Test SelectionCSA 认证团队判定所有必需测试是否已运行的官方依据是提交的 PICS XML 文件集合 PICS 工具。要为每个端点生成这组测试将单个端点的所有已填写 PICS XML 文件加载进 PICS 工具校验 PICS 文件应能正确通过校验工具会同时生成测试用例列表。需要强调的是THTest Harness会根据 PICS 文件预选所需的测试来辅助测试选择但确保所有必需测试都已运行并提交结果是测试人员与 ATLAccredited Test Laboratory的责任。8. 与 PICS/PIXIT 相关的其他主题8.1 测试脚本中的 PICS 门控在 Python 测试脚本中PICS 通常通过self.check_pics(PICS)检查配合pics_guard门控步骤顶层 PICS 门控定义名为pics_YourTestMethodName的方法返回一组 PICS 列表步骤级门控if self.pics_guard(self.check_pics(PICS here)):。CI 专用 PICSPICS_SDK_CI_ONLY用于标记仅在 CI 中运行的测试可通过self.is_ci self.check_pics(PICS_SDK_CI_ONLY)判断。注意认证文件中不得出现该 PICS——这正是 TC-IDM-10.4 步骤 7 的检查内容。8.2 CI PICS 文件格式仓库中的 CI PICS 值文件位于 src/app/tests/suites/certification/ci-pics-values采用KEY0/1的纯文本格式#起始行为注释例如APPDEVICE.S0 MCORE.BRIDGECLIENT0 MCORE.UI.FACTORYRESET1 # Content App Observer Cluster APPOBSERVER.S1 # Relative Humidity cluster RH.S1 RH.S.A00001 ...这种格式由 pics.py 的parse_pics解析值必须为 0 或 1而 PICS XML 格式则由parse_pics_xml解析picsItem中的itemNumber与support元素处理。本地运行时用--PICS指向该文件或端点 PICS XML 目录示例scripts/tests/run_python_test.py --factory-reset --app out/linux-x64-all-clusters/chip-all-clusters-app --app-args --discriminator 1234 --KVS kvs1 --script-args --storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --endpoint 1 --script src/python_testing/TC_ACL_2_10.py --app-ready-pattern APP STATUS: Starting event loop9. 最佳实践总结认证前先跑 TC-IDM-10.4它决定后续测试集合是所有认证测试的第一关善用 PICS Generator 预填充但必须人工复核生成的元素 PICS并手动补齐事件、Client、MCORE、手动类等类别PICS 文件以端点为粒度每个端点一份 PICS XML 集合MCORE 中设备级代码如配网相关只放在 EP0PIXIT 用声明式装饰器pixit/harness_params让参数自文档化缺参数时在测试体运行前即失败且敏感值自动脱敏需要数值型配网凭据时用显式标志避免依赖--qr-code/--manual-code其解码值不会存入MatterTestConfig认证文件不得包含PICS_SDK_CI_ONLY该 PICS 仅限 CI 内部使用。10. 参考资料本文档主体docs/testing/pics_and_pixit.mdPICS 校验测试实现src/python_testing/TC_pics_checker.pyPICS 字符串与解析工具src/python_testing/matter_testing_infrastructure/matter/testing/pics.py声明式 PIXIT 实现src/python_testing/matter_testing_infrastructure/matter/testing/pixit.pyHarness 参数注册表src/python_testing/matter_testing_infrastructure/matter/testing/harness_params.pyMatterBaseTest与self.pixit/self.harness_paramsrc/python_testing/matter_testing_infrastructure/matter/testing/matter_testing.pyPIXIT 声明式支持单元测试src/python_testing/test_testing/TestPixitSupport.pyPICS Generator 工具src/tools/PICS-generator/PICSGenerator.py 与 src/tools/PICS-generator/README.mdPython 测试运行指南docs/testing/python.mdCI PICS 值示例src/app/tests/suites/certification/ci-pics-values【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进