数据测试 一种数据&算法测试的思路

贺达 · 2019年07月09日 · 最后由 曲曲 回复于 2023年12月18日 · 3644 次阅读

自己刚接触数据产品/数据平台测试的时候,也是经历过一段时间的 ‘迷糊期’,身边不断有朋友问如何做数据/算法测试,稍微整理下供参考
一、传统的方法
常规做法,按照业务场景/算法逻辑,构造测试数据,运行程序(可能是代码/sql/等等),验证跑出来的数据的正确性。
这种方法比较明显的缺点,一是构造数据非常麻烦,二是很难构造出像生产环境那样丰富的数据,所以上线后说不定那天有个特殊的数据就导致程序出问题,并且可能一时半会发现不了。但是这种方法也是最容易想到的,这里就不过多赘述了。

二、一种对比方法
假设你已经保障了基本的功能逻辑,那么怎么知道在大数据情况下逻辑是否正常呢?
这里先卖个关子,N 年前,听到周博士分享了他的研究成果,他提出了 “蜕变测试” 的理论。本人也是他这种理论的实践者,个人在算法/大数据测试的多个项目中实践了他的方法,只要领悟了这种方法的内涵,面对一些测试难题还是有对策的。 这里宣传下他的理论吧
--关于作者
Dr Zhi Quan (George) Zhou
Senior Lecturer in Software Engineering
University of Wollongong, Australia (卧龙岗大学)
Research area: software testing & analysis.
Advisor to:(美国、香港、和澳洲政府的科学顾问)
The US Air Force Office of Scientific Research
The Research Grants Council of Hong Kong
The Australian Research Council
--要解决的问题
5×9=45
12345678×7654321= 9449772114007???
这里遇到一个判定难题,怎么知道上面算的对不对
以下业务场景最容易面对类似的判定问题: 搜索引擎、算法排序、机器学习、大数据计算、实时计算等

--根据他给的解决思路,抽象出他给的方法
1、找数据与数据的关系
比如报表测试,可能直接不太容易判断某个数据的正确性,但是总是可以找到其它数据与它的关系,通过数据之间的关系间接进行判定。
如果能够找到反类,说明数据肯定有问题
同样这种方法也适合算法测试,如果你能找到数据之间的 badcase,那说明数据计算哪里肯定有问题。

2、找等价的方法,也就是找到一种参照方法
如果你要验证的对象非常复杂,怎么判定正确性呢
比如计算实时引擎计算的数据准确性,那么可以尝试实现一套离线逻辑,用相同的输入给离线和实时喂数据,看两边输出数据是否一致。
当然了,这种方法,首先要保证离线逻辑的正确性:)
对于一些核心系统,特别刚上线阶段,数据准确性是非常非常关键的,可以用这种方法。虽然投入大点,但还是值得的。

3、最后一种思路,作者没有提到,那就是实现数据质量的监控工具。
有问题不可怕,只要能第一时间发现它。 可以通过定义一些监控规则,对数据进行实时/准实时/T+1 的监控。
有空再详细介绍一下工具实现层面的东西

共收到 4 条回复 时间 点赞

第 1 2 点感觉思路很好,但具体做法没有说呢😂

看得云里雾里的,没 get 到你的 point

好像有些货,但是要么倒不出要么是不想倒出

数据血缘,数据质量评分。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册