测试基础 数据清洗如何测试?

zippo · 2024年06月04日 · 最后由 孙高飞 回复于 2024年06月05日 · 3627 次阅读

当版本升级时,比如从 V1 版本升级到 V2 版本,V2 版本相比于 V1 版本数据权限以及小部分数据结构发生了变化。像这种情况数据清有哪些测试方法,要写代码测试吗?

最佳回复

可以使用精准测试了。问问精准测试怎么做?

共收到 8 条回复 时间 点赞

可以使用精准测试了。问问精准测试怎么做?

数据测试:抽样人工检查,脚本全量检查
接口测试:相关接口验证数据返回差异
业务测试:检查相关业务功能正常

先确定范围,再选测试方法。

simonpatrick 回复

好好。这就去搜索精准测试

看洗的方案和数据情况吧,简单的洗之前直接 sql 统计下,洗完再统计下,复杂就得写代码去分页批量查了

去年刚刚做线上大批量数据清洗验证,我们的方案属于笨方法,先了解清洗方案 2.编写验证 sql 脚本,3.抽样验证 风险在于验证的 sql 测试写的时候根据自己的思路可能容易遗漏,我们是多轮验证脚本,每个验证脚本会评审 后面也算顺利清洗完成,但是中间时间人力投入不少 最主要的是 sql 的验证方向,核对,中间发现问题后数据清洗修复后又要验证多轮,目前也确实没有更好的思路。

这个数据清洗指的是什么呢? 就是接口数据接口结构发生变化了进行验证就叫做数据清洗吗?有没有更加具体的例子呢

我之前测试过一些数据清洗的场景和算法, 最主要的手段其实还是对着数据测, 当时编写了一些 spark 脚本, 用来扫描数据是否按规则进行了清洗。 其实是否过滤了一些不需要的数据, 敏感数据是否脱敏了等等。 我记得我写教程的时候写一个用用 spark 来做数据校验的脚本 DEMO, 我找找:

from pyspark import SparkContext, SparkConf, SQLContext
from pyspark.sql import SparkSession
import pyspark.sql.functions as F

conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)

rdd = sc.parallelize(range(1000))
print(rdd.map(lambda x: '%s,%s' % ('男', '16')).collect())

dicts = [
    ['frank', 202355, 16, '336051551@qq.com'],
    ['frank', 202355, 16, '336051551@qq.com'],
    ['frank', 202355, 16, '336051551@qq.com'],
    ['frank', 202355, 16, '336051551@qq.com'],
    ['frank', 202355, 16, '336051asdf'],
    ['', 452345, 16, '336051asdf'],

]
rdd = sc.parallelize(dicts, 3)
dataf = sqlContext.createDataFrame(rdd, ['name', 'id', 'age', 'email'])

# 验证 id 字段必须是整数
id_filter = F.col("id").cast("int") >= 0

# 验证 name 字段必须是非空字符串
name_filter = F.col("name").isNotNull() & (F.col("name") != "")

# 验证 age 字段必须是大于等于 0 的整数
age_filter = F.col("age").cast("int") >= 0

# 验证 email 字段必须是有效的电子邮件地址
email_filter = F.col("email").rlike("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$")

# 应用过滤条件
valid_data = dataf.filter(id_filter & name_filter & age_filter & email_filter)

# 输出符合质量要求的数据
valid_data.show()
# 输出不符合质量要求的数据
invalid_data = dataf.exceptAll(valid_data)
invalid_data.show()


跟数据有关的功能测试,很多都是写这样的脚本来验证的, 比如数据迁移,升级,ETL 等等。 楼主数据量不大的话用普通的 python 脚本就可以了。 我用 spark 是因为项目是大数据的, 动不动几千万行甚至几亿的那种。

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