Alexa智能家居技能亮度控制自动化测试问题咨询
Alexa智能家居灯光技能亮度控制测试问题咨询
场景1:返回原亮度值导致测试报错
初始亮度为75,收到SetBrightness设为0的指令(该操作会同时关闭灯光),我保留原亮度值75作为响应,测试报错:
"The endpoint could not be set to the Initial States required by the Test Case."
请求指令
{"directive":{"header":{"namespace":"Alexa.BrightnessController","name":"SetBrightness","messageId":"fed54fb1-a40e-42c5-819d-53894fb19fd8","correlationToken":"ctooken","payloadVersion":"3","endpoint":{"scope":{"type":"BearerToken","token":"token","endpointId":"b38d964c-0b55-4b9a-8c0c-c537721bd2e5","cookie":{},"payload":{"brightness":0}}}}}
我的响应
{"event":{"header":{"namespace":"Alexa","name":"Response","messageId":"fed54fb1-a40e-42c5-819d-53894fb19fd8-R","correlationToken":"ctoken","payloadVersion":"","endpoint":{"endpointId":"b38d964c-0b55-4b9a-8c0c-c537721bd2e5","scope":{"token":"token","type":"BearerToken"},"payload":{},"context":{"properties":[{"namespace":"Alexa.BrightnessController","value":75,"name":"brightness","timeOfSample":"2023-09-08T05:30:10.410Z","uncertaintyInMilliseconds":3000},{"namespace":"Alexa.PowerController","value":"OFF,","name":"powerState","timeOfSample":"2023-09-08T05:30:10.410Z","uncertaintyInMilliseconds":3000}]}}}}}
场景2:返回亮度0导致TurnOn用例失败
初始亮度为100,收到SetBrightness设为0的指令,我返回亮度0并关闭灯光,测试中DevRe_9.1用例失败:预期执行TurnOn指令后亮度回到100,实际为0。
请求指令
{"directive": {"header": {"namespace": "Alexa.BrightnessController","name": "SetBrightness","messageId": "fed54fb2-a40e-42c5-819d-53894fb19fd8","correlationToken": "ctooken","payloadVersion": "3","endpoint": {"scope": {"type": "BearerToken","token": "token-","endpointId": "b38d964c-0b55-4b9a-8c0c-c537721bd2e5","cookie": {},"payload": {"brightness": 0}}}}}
我的响应
{"event": {"header": {"namespace": "Alexa","name": "Response","messageId": "fed54fb1-a40e-42c5-819d-53894fb19fd8-R","correlationToken": "ctoken","payloadVersion": "3","endpoint": {"endpointId": "b38d964c-0b55-4b9a-8c0c-c537721bd2e5","scope": {"token": "token","type": "BearerToken"},"payload": {},"context": {"properties": [{"namespace": "Alexa.BrightnessController","value": 0,"name": "brightness","timeOfSample": "2023-09-08T05:30:10.410Z","uncertaintyInMilliseconds": 3000},{"namespace": "Alexa.PowerController","value": "OFF","name": "powerState","timeOfSample": "2023-09-08T05:30:10.410Z","uncertaintyInMilliseconds": 3000}]}}}}}
测试错误结果
{"name": "DevRe_9.1","status": "FAILED","expectedCapabilityStates": [{"namespace": "Alexa.BrightnessController","name": "brightness","value": 100}],"directive": {"header": {"namespace": "Alexa.PowerController","name": "TurnOn"},"payload": {}},"actualCapabilityStates": [{"namespace": "Alexa.BrightnessController","name": "brightness","value": 0}]}
核心咨询问题
- 当收到
SetBrightness设为0的指令时,正确的响应应该是什么? - 后续收到
ReportState指令时,预期返回的亮度值是多少?
解决方案与规范说明
1. 收到SetBrightness(0)指令的正确处理逻辑
根据Alexa智能家居技能规范,调用SetBrightness设置为0时,设备需执行以下操作:
- 将
Alexa.PowerController的powerState设置为OFF - 保留执行该指令前的非零亮度值作为设备的“记忆亮度”,而非将亮度更新为0
- 响应的
context中,Alexa.BrightnessController的value返回记忆亮度值,同时Alexa.PowerController的value为OFF
另外场景1的响应存在格式错误:payloadVersion为空字符串,且powerState的值多了逗号("OFF,"),这也是测试报错的原因之一,需修正。
2. 收到ReportState指令的返回规则
- 若设备处于
OFF状态,ReportState应返回记忆亮度值(即执行SetBrightness(0)之前的非零亮度) - 后续收到
TurnOn指令时,设备需自动恢复到记忆亮度值,此时BrightnessController返回该记忆值,PowerState设为ON
对两个场景的修正建议
- 场景1:修正响应格式错误(补全
payloadVersion为3,修正powerState为"OFF"),保留返回亮度75的逻辑,即可通过测试 - 场景2:收到SetBrightness(0)时,返回亮度100而非0,同时设置PowerState为OFF;后续收到TurnOn指令时恢复亮度100,即可通过
DevRe_9.1用例
内容的提问来源于stack exchange,提问作者Fabrice
相关产品推荐
相关产品推荐

