测试标准和注意事项

1.文字版

1.1 唯一性

        不同设备生成的设备指纹一定不会重复(包括碰撞率和错误率2个指标,狭义的就认为是错误率)。

1.2 碰撞

        一个指纹对应多台真实设备,我们就认为该设备指纹发生了碰撞。

1.3 错误

        一台设备对应多个设备指纹,我们就认为设备指纹产生了错误。

1.4 稳定性

        设备系统升级或少量数据变更时,设备指纹不会发生变化。

2. 数字版

        设备集 E = \{​{e_{0},e_{1},...,e_{n-1}}\}共 n 个设备;

       刷机状态集 S = \{​{s_{0},s_{1},...,s_{m-1}}\}共 m 个设备;

       因此由设备 e_{i} 和状态 s_{j} 生成的指纹为 f_{i,j},所有指纹构成指纹集合

       F = \{​{f_{0},f_{1},...,f_{l-1}}\}共 l 个不同的指纹。

2.1 唯一性

2.1.1 碰撞率

        F中的指纹f如果对应着E上的多个设备,则说明指纹f发生了碰撞

        碰撞率 = 碰撞的f数/F的指纹数

                     = \frac{\sum_{0\leq k < l}\delta\left ( \exists (0\leq i_{1} < i_{2} < n,0\leq j_{1}, j_{2} < m),f_{i1,j1} == f_{i2,j2} == f_{k} \right)}{l}

2.1.2 错误率

        E中的设备e如果对应着F上的多个指纹,则说明设备e发生了错误

        错误率 = 错误的e数/E的设备数

                    = \frac{\sum _{0\leq i < n}\delta (\exists 0\leq j1 < j2 < m,f_{i,j1}\neq f_{i,j2})}{n}

        碰撞率和错误率越小,唯一性满足的越好。

2.2 稳定性

稳定性有个对标的基础指纹:

1. 是第一次读取这个设备的指纹作为对标指纹;

2. 是取该设备最常出现的指纹作为对标指纹,下面用第1种方案:

稳定性 = 所有设备与对标指纹相同的状态数/(设备数✖️(状态数-1))

             = \frac{\sum _{0\leq i< n,0< j< m}\delta (f_{i,j} == f_{i,0})}{n(m-1)}

稳定性越大越好

其中

测试标准和注意事项_第1张图片

3. 测试类

        由于接口不会包括设备的真实id(序号即可),因此需要测试的业务方提供 {报文,真实设备id} 的序列(或表格)作为测试的输入,去计算以上的指标;

这个序列存储成.txt文件,测试指标计算.py文件,以方便后续不同模型的测试。

上线前还需测试在数据量为10k, 100k, 1m, 10m下,qps=0.1k, 1k, 10k 下的响应时间

你可能感兴趣的:(设备指纹,python)