数据动态生成
由于真实世界的通信环境复杂多变,静态或固定的测试数据难以全面评估通信系统的性能、可靠性和健壮性。灵活动态生成数据的能力,不仅是保证通信可靠性和健壮性的关键环节,也是提升测试验证效率和覆盖度的必然要求。
极测提供基于规则表达式的动态数据实时计算,可以根据测试场景和需求,动态生成符合要求的数据。
基本语法
在文本/数据段的输入框中,规则表达式可以通过双大括号 {{ 表达式 }} 进行包裹。表达式引擎会解析并计算表达式,将结果替换整个{{ 表达式 }}。详细语法参见表达式语法。
文本数据生成
假设温度传感器通信的JSON数据格式如下:
json
{
"deviceId": "sensor-room-101",
"timestamp": "1757925567435",
"sensorType": "temperature",
"values": {
"temperature": 13,
"humidity": 29
},
"units": {
"temperature": "celsius",
"humidity": "percent"
}
}其中时间戳(timestamp)、温度(temperature)和湿度(humidity)需要动态生成,模拟一个传感器的真实工作状态。
操作步骤如下:
创建文本编辑卡片
参照生成数据,在接口页面中新建一个文本编辑卡片,在「模式」下拉框中选择「JSON」。
插入规则表达式
复制以下文本到卡片的输入框中:
json
{
"deviceId": "sensor-room-101",
"timestamp": "{{ now }}",
"sensorType": "temperature",
"values": {
"temperature": "{{ ceil(random*30) }}",
"humidity": "{{ ceil(random*100) }}"
},
"units": {
"temperature": "celsius",
"humidity": "percent"
}
}其中时间戳字段使用关键字 now 在数据发送时插入当前时间;温度和湿度的值则通过 random 乘以取值范围(30摄氏度和100%相对湿度)随机产生,并通过 ceil 函数向上取整。
发送动态数据
参照发送接口数据,多次点击发送按钮,可以看到所发送数据的动态变化。
数据段数据生成
假设一架无人机正在水平面上以 50 米/秒的速度进行逆时针圆周飞行,转弯半径为 1000 米,初始航向角为 0°(正北)。飞行的实时数据包含以下信息:
- 速度(v):50 米/s
- 转弯半径(R):1000 米
- 航向角弧度:初始为0,单位为弧度(rad)
- 航向角角度:初始为0,单位为角度(°)
- 角速度:ω = v / R = 50 m/s / 1000 m = 0.05 rad/s
- 航行时间(t):单位为秒
导入数据段
上述飞行信息可以定义成一个数据段,点击下载【数据段文件 ⬇️】,然后在极测中导入。
插入字段表达式
在接口页面中「新建Hex数据段」,选择导入的数据段名称。逐个字段填写如下:
- 速度:
50。 - 转弯半径:
1000。 - 航向角弧度:
{{ ((last.$航向角弧度 || 0) + this.$角速度 * (this.$航行时间 - last.$航行时间 || 0)) % (2 * pi) }},该表达式的含义如下:last.$航向角弧度 || 0:表示上一条数据的航向角弧度字段(如果不存在,则默认值为0)。this.$角速度:表示当前角速度。this.$航行时间 - last.$航行时间 || 0:表示当前航行时间与上一条数据的航行时间的差值(如果不存在,则默认值为0)。% (2 * pi):表示取余运算,确保结果在0到2π之间。
- 航向角角度:
{{ this.$航向角弧度 * (180/pi) }}。 - 角速度:
{{ this.$速度 / this.$转弯半径 }}。 - 航行时间:
{{ elapsed / 1000 }},其中elapsed表示开始到现在经过的毫秒数。
发送动态数据
参照发送接口数据,多次点击发送按钮,可以看到所发送数据的动态变化。
