文件最后提交记录最后更新时间
3 个月前
3 个月前
1 个月前
3 个月前
3 个月前
README

自动化测试搭建

文档目录结构

下载工程软件

搭建测试环境

自动化脚本

下载工程软件

一、python安装:需要安装3.10.5~3.10.10之间的版本。

二、pip源配置:

​ 1、在用户目录下的pip目录创建pip.ini:

创建pip.ini文件

2、pip.ini内容如下:

[global]

index-url = https://mirrors.***.com(此处应为索引网址)

trusted-host = *******.com(此处应为可信主机名)

timeout = 120

一般此文件会自动生成

三、IDE安装:推荐从pycharm官网获取2022.3以后的社区版本。

四、HDC安装:下载任意版本的HDC即可,下载后解压后,添加环境变量后重启电脑,即可使用hdc工具。

五、DevEco Testing Hypium安装包解压

​ 执行pip install命令安装华为hypium或者去华为官网下载最新的Hypium框架安装包。

六、DevEco Testing Hypium插件安装及使用方法

​ 在插件中搜索DevEco Testing-Hypium进行安装

搭建测试环境

WiFi/BLE Combo设备配网云端交互详细指导

WiFi连接与云端激活

设备连接WiFi网络

设备根据BLE下发的WiFi凭证,连接到家庭路由器,获取IP地址。

PSK密钥协商(/.sys/psk)

协议:IF2.1 (CoAP over TCP/UDP + 应用层加密)

接口:POST /.sys/psk

目的:设备与云端协商会话密钥,用于后续通信加密

实际日志对照

日志时间: 2026-01-20 20:04:51.636
设备 -> 云端:
POST /.sys/psk
{
  "devId": "0282bb7d-2458-491e-a90a-c77174a3102c",
  "sn1": "7ddfd57bcd74c4f4",  // 设备随机数
  "seq": 169
}
CoAP Options:
{
  "REQ_ID": "45577aedb2f7c636dff074ffb713e53e36f0b714",
  "SEQ_NUM_ID": "21695101",
  "DEV_ID": "0282bb7d-2458-491e-a90a-c77174a3102c"
}

云端 -> 设备:
{
  "sn2": "bfe392c148262938",  // 云端随机数
  "encryptMode": "plaintext",  // 加密模式
  "seq": 170,
  "errcode": 0
}
CoAP Options:
{
  "SEQ_NUM_ID": "21695101"
}

密钥派生过程

输入:
- psk: 配网时云端分配的预共享密钥
- sn1: 设备生成的随机数(8字节)
- sn2: 云端生成的随机数(8字节)

计算:
salt = sn1(hex→binary 8B) + sn2(hex→binary 8B) = 16B
Key和IV通过PBKDF2算法生成:

digest = PBKDF2(
  pass = psk,
  salt = sn1 || sn2,
  iterations = 1,
  digest = SHA-256,
  keylen = 32B
)

AES_Key = digest[0:16]  // 前16字节作为AES密钥
AES_IV = digest[16:32]  // 后16字节作为IV
HMAC_Secret = PBKDF2(
  pass = AES_Key,
  salt = sn1 || sn2,
  iterations = 1,
  digest = SHA-256,
  keylen = 32B
)

加密方式

  • 加密算法:AES-128-CBC-PKCS5Padding
  • 完整性保护:HMAC-SHA256(32字节MAC)
  • MAC追加在payload末尾

设备激活(/.sys/activate)

协议:IF2.1 (CoAP over TCP)

接口:POST /.sys/activate

目的:设备完成云端注册激活,建立设备与用户账号的绑定关系

实际日志对照

日志时间: 2026-01-20 20:04:53.278
设备 -> 云端:
POST /.sys/activate
{
  "code": "56473040",  // 注册码(BLE下发)
  "devId": "0282bb7d-2458-491e-a90a-c77174a3102c",
  "devInfo": {
    "sn": "hi3863test001",
    "model": "Hi3863",
    "devType": "1005",
    "manu": "111",
    "prodId": "0001H",
    "devName": "SmartSwitch",
    "fwv": "1.0.0",
    "hwv": "1.0.0",
    "swv": "1.0.0",
    "subProdId": "63",
    "protType": 12,  // 12=BLE+WiFi Combo
    "mac": "4E:D0:E0:8A:E8:A3"
  }
}
CoAP Options:
{
  "REQ_ID": "ff289299c034e6bf9feb6b3246903860d0c95121",
  "SEQ_NUM_ID": "21695102",
  "DEV_ID": "0282bb7d-2458-491e-a90a-c77174a3102c"
}

云端处理过程:
1. 验证注册码有效性
2. 检查设备证书是否为有效
3. 创建设备记录(数据库操作)
   SQL插入参数:
   - devId: 0282bb7d-2458-491e-a90a-c77174a3102c
   - prodId: 0001H
   - devName: SmartSwitch
   - sn: hi3863test001
   - secret: 2lo4q0sv6sb9ta46v9kbd6nso2h6fwtl
   - projectId: 07912b92-e9bc-4ed9-b566-d8ac51b4e222
   - uid: 71815794283328698618827311787778


4. 分配projectId
   - projectId: 2013583506982281218
   - familyId: 1959846095798644737

5. 返回激活结果

数据库查询结果示例:
<== Row: 2013583506982281218, 1959846095798644737, 
       0282bb7d-2458-491e-a90a-c77174a3102c, 
       99, NOT_DELETE, 2026-01-20 20:04:53, -1

云端返回

{
  "errcode": 0,
  "devId": "0282bb7d-2458-491e-a90a-c77174a3102c",
  "projectId": "1959846095798644737"
}

设备登录(/.sys/login)

协议:IF2.1 (CoAP over TCP)

接口:POST /.sys/login

目的:设备登录云端,建立长连接会话

请求格式

POST /.sys/login
{
  "devId": "0282bb7d-2458-491e-a90a-c77174a3102c",
  "seq": 171
}

响应

{
  "errcode": 0,
  "status": "online"
}

自动化脚本

一、新建Hypium项目

1、点击文件 --->新建项目

2、选择DevEco Testing Hypium

(1)设置项目位置和名称

(2)选择python解释器

(3)设置完成后点击创建

二、编写测试用例

(1)点击testcase文件夹

(2)选择新建Hypium Testcase

(3)设置用例名称,即可生成同名用例·py文件与json配置文件

三、工程目录文件介绍

hypiumProjectTemplate
|		|---aw                            //工程中自定义模块文件夹
|       |	|---Utils.py				  //示例模块文件
|		|---config						  //测试工程配置文件夹
|		|	|---user_config.xml			  //测试工程配置文件,主要是测试框架的任务配置
|		|---resource					  //测试资源文件夹,测试过程中用到的资源文件默认优先会从当前文件夹进行查找
|       |---testcases					  //测试用例文件夹,测试过程中的测试用例文件优先会从当前文件夹进行查找
|		|	---Example.json				  //Example测试用例配置文件,配置用例设备信息等
|		|   ---Example.py				  //Example测试用例文件,实际的测试逻辑代码
|		|---main.py						  //测试用例执行入口