美文网首页
DI/ETL/FS系统中数据准确性验证的羽量级实现

DI/ETL/FS系统中数据准确性验证的羽量级实现

作者: 9016 | 来源:发表于2018-08-24 10:32 被阅读109次

    数据集成(DI)、数据仓库(ETL)、财务系统(FS )这类“抽数”、“洗数”动作较多的系统在研发过程中,测试工作集中在逻辑层和数据层,缺少可直接观察的界面,而海量数据的准确性校验是一道绕不过去的坎。

    测试中遇到的两大痛点

    (1)没有跨越多数据库类型的数据比对工具;

    (2)测试人员肉眼比对数据,测试结果受到质疑;

    那我们希望工具应该具备哪些基本功能?

    (1)可以连接数据库,执行SQL,或者类SQL脚本;

    (2)可以对数据库返回进行判断;

    (3)可以把判断结果打印输出;

    有没有这样的工具,不要太多! 以下以JMeter为例,比较ORACLE和MYSQL内两表数据,说明该实现:

    (1)建立ORACLE和MYSQL的连接:

    (2)在源表和目的表分别执行SQL操作:

    (3)将SQL返回存入变量:

    vars.put("result1",String.valueOf(prev.getResponseDataAsString()));

    vars.put("result2",String.valueOf(prev.getResponseDataAsString()));

    (4)比较两变量并做出判断:

    if (!vars.get("result1").equals(vars.get("result2"))) {

    Failure = true; FailureMessage = "错了,两个SQL返回不一致";

    }

    else {

    FailureMessage = "靠谱";

    }

    (5)打印输出判断结果(不符合期待输出):

    (5)打印输出判断结果(符合期待输出):

    之所以称为羽量级实现:

    (1)需要掌握的语法点只有四处:String.valueOf()、vars.put()、.equals()、if_else,其他都在JMeter图形界面中配置,学习成本很低

    (2)JMeter是开源工具,随手可得,安装方便;

    (3)执行效率很高,笔者尝试对源表和目的表50字段,百万行数据,10表UNION查询结果进行比对,执行时间不超过20秒,时间消耗主要在数据库端;

    (4)SQL语法灵活,为后期比对方便,可以在SQL里插入TO_CHAR()、TRIM()等函数;

    (5)JMeter可以轻松嵌套判断循环等逻辑,能够将比对异常结果定义到具体某一行位置;

    (6)可以连接多种类型数据源,只要下载对应驱动,无额外成本,即使Hadoop这样的非关系数据库。

    能力不在于掌握了多少奇巧,在于你对解决问题的渴望。

    再多一句,JMeter是个好东西,有机会和大家聊聊用JMeter做UI自动化测试。

    相关文章

      网友评论

          本文标题:DI/ETL/FS系统中数据准确性验证的羽量级实现

          本文链接:https://www.haomeiwen.com/subject/oigviftx.html