数据清洗(Data cleaning)– 对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性。
只要有产品的重构,一定存在数据表的改变,功能上线后之前的老数据不适应现在的表的改变,就需要数据清洗适应现在的表结构。
清洗数据探索之路:
- 刚开始我们是这么做的, 根据规则随便挑一个类型数据 进行测试,缺点显而易见 ,面对大量数据 几十万条,并不能每条都能测试到,上线后问题很多。
- 随后我们开始研究用excel配规则 和预期的结果进行比较,
这样的缺点也是很大,当有大批量异常,如何把信息传递给开发,是个难点,况且用excel 配规则 至少很熟悉excel, 测试团队沟通也很麻烦 ,我们团队技术栈 是java 和python 。 - 随后我们探索用python 写代码,写规则,然后读取excel数据形成一个列表,然后进行数据进行对比,如果有错误的及时的把错误信息记录下来(最好写详细点,开发一目了然),基本上已经实现, 但是又遇到要给问题, 在对excel 数据整理上非常麻烦, 几十万个数据 用for 循环遍历效率很底下。 比如我们想 excel 数据里的空 用0 代替,我们用for循环进行遍历然后替换。
- 随着第三点的问题,我们去探索,有没有更好的方式解决 处理缺失值,删除重复值,检测和过滤异常值,数据规整:连接,联合 与重塑 等等
- 我们小组讨论结果是用 python 的numpy 和pandas这两个专门用于科学数据处理和数学分析的库,功能强大,效率很高
它支持向量化的操作 ,比如 我想让每个值都+1 ,不需要for循环 直接 拿到excel or 数据库数据 or json 数据 等 直接 data + 1, 它会让每个值都会加一,效率很高 时间是直接for 循环 减少了几十倍。
数据清洗测试要点包括:
前提: 把生产数据导出来放到dev 环境数据库, 不要放到测试环境影响其他人测试。
- 老数据按照规则进行转变成我们要的数据,所以这个规则就是我们测试切入点,代码实现是根据规则来的
- 读取的预期结果的数据 ,可以用excel 读取, 数据库读取
- 在数据比较上可以用断言操作
- 代码一定把数据归类好,整理出来统计数据 以一个表格呈现出来,让团队有个直观的感受,
- 断言失败的数据 一定要把错误信息输出全 ,比如 原始数据什么, 规则是什么, 按照规则生成的数据是什么,预期的结果是什么, 生成的数据和预取对比 哪个地方有不一致的地方, 应该是什么等 代码写一个自动整理详细错误表格 ,发给开发进行修复。
- 结合UI 或者接口自动化 来验证清洗后的数据是否流程是否能通。
- 结合功能改变点,对清洗后的数据进行功能回归。 根据我们清洗经验,只要数据库是正确的,在功能测试一定是好的,除非你们在整理数据规则的时候错误。