跳转到内容

数据动态生成

由于真实世界的通信环境复杂多变,静态或固定的测试数据难以全面评估通信系统的性能、可靠性和健壮性。灵活动态生成数据的能力,不仅是保证通信​​可靠性​​和​​健壮性​​的关键环节,也是提升测试验证效率和覆盖度的必然要求。

极测提供基于规则表达式的动态数据实时计算,可以根据测试场景和需求,动态生成符合要求的数据。

基本语法

在文本/数据段的输入框中,规则表达式可以通过双大括号 {{ 表达式 }} 进行包裹。表达式引擎会解析并计算表达式,将结果替换整个{{ 表达式 }}。详细语法参见表达式语法

文本数据生成

假设温度传感器通信的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 表示开始到现在经过的毫秒数。

发送动态数据

参照发送接口数据,多次点击发送按钮,可以看到所发送数据的动态变化。