ETL大数据测试方法小结

发表于:2017-12-14 10:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:金阳光    来源:博客园

  开始接触BI,是很兴奋的,因为觉得这是一个很先进的技术,它可以协助企业做出决策。真正接触后,发现这确实是一个好东西,但是让它真正发挥作用要建立在分析结果的正确性上。
  在工作中,我们经常会根据客户的需求,为客户得到他们想要的数据。比如客户的评级,客户的状态分布(在司,流失,潜在)等等,但是在做完这些后,我们往往会遇到这样一个问题,结果正确吗?是客户想要的结果吗?我们怎么来验证数据的正确性?
  做ETL多长时间,这个问题就困扰了我多长时间,因为往往我们做出来的数据,不知道其正确与否,也就不能真正的为客户发生作用,而客户是要根据这些结果来了解客户情况的,所以我有的时候甚至会想,如果因为给了客户一个错误的结果,而得出错误的决策,那不就得不偿失了。
  所以在我看来,验证数据分析结果的正确性至关重要。这里就涉及到了ETL测试。通过做项目,自己总结了一下ETL的测试方法,欢迎大家拍砖。
  一、ETL测试的重要性:
  ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)作为BI/DW(Business Intelligence)的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝图,数据是砖瓦的话,那么ETL就是建设大厦的过程。在整个项目中最难部分是用户需求分析和模型设计,而ETL规则设计和实施则是工作量最大的,约占整个项目的60%~80%,这是国内外从众多实践中得到的普遍共识。
  在技术上,ETL主要涉及到关联、转换、增量、调度和监控等几个方面;数据仓库系统中数据不要求与联机事务处理系统中数据实时同步,所以ETL可以定时进行。但多个ETL的操作时间、顺序和成败对数据仓库中信息的有效性至关重要。所以做好ETL测试也至关重要。
  二、ETL测试过程:
  在独立验证与确认下,与任何其他测试一样,ETL也经历同样的阶段。
  1)业务和需求分析并验证。
  2)测试方案编写
  3)从所有可用的输入条件来设计测试用例和测试场景进行测试
  4)执行所有用例直到满足退出标准
  5)书写总结报告和测试过程结束。
  三、ETL测试的规则:
  测试数据的正确性、一致性、完整性
  四、ETL测试的方法
  1.数据量统计:
  源表和目标表数据量统计
  2.转换规则测试
  首先是数据格式的合法性。对于数据源中时间、数值、字符等数据的处理,是否符合数据仓库规则,是否进行统一的转换。
  其次是值域的有效性。是否有超出维表或者业务值域的范围。
  第三是空值的处理。是否捕获字段空值,或者需要对空值进行替换为其他含义值的处理。
  第四是主键的有效性。主键是否唯一。
  第五是乱码的检查。特殊符号或者乱码符号的护理规则。
  第六是脏数据的处理。比如不符合业务逻辑的数据
  3.关键字段测试
  通过转换规则,查询关键字段是否正确。比如保费收入字段,看其是否乘以汇率,共保比率等;
  一般表中会添加时间戳,时间戳数据和数据格式是否正确
  4.抽样测试
  通过抽样,测试源表和目标表映射是否正确。
  5.加载规则测试
  一般加载方式有两种:全量加载和增量加载
  增量加载一般是先删后插(delete and insert)。
  全量加载一般是先清空再插入(truncate and insert),但也要分情况,我们做的项目,源-->ODSSGA层为先清空后插入,向外提供的接口数据则为先删后插,这需要根据不同的情况不同对待。
  增量加载方式
  对于增量抽取,捕捉变化的数据有如下几种:1)采用快照方式。需要业务系统建立insert,update,delete触发器。2)时间戳方式,在业务系统表建一个时间戳字段,一旦数据发生变化,则修改此字段。3)全表删除插入方式,每次ETL操作先将目标表数据删除,然后抽取。4)hash比对,是全表比对的一个扩展,通过计算主要业务字段的MD5校验码存入hash维表,通过与hash维表的比对进行抽取。5)日志表方式,跟进业务系统的日志表进行数据抽取。6)oracle变化数据捕捉,通过分析数据库自身日志判断变化的数据。
  由于我们采取的是时间戳方式,这里就只介绍这种方式的测试方案。
  1)测试结果是否遗漏数据,如果为时间戳方式,要尤其注意时间戳是否带时分秒
  2)增量规则是否正确
  对于源表做好足够的数据探查,明白源表中的数据的增量是怎么回事,必要时需要讨论,然后根据业务规则做增量规则方案。
  3)监控增量数据
  因为项目在上线前一般都会试运行一段时间,所以在这段时间,就要每天做表中数据量的的监控。
  对于日全量表的监控:只要看源表和目标表数据量是否一致就可以
  对于增量数据量监控:看全量+增量的数据是否与源表数据量是否一致。根据不同的业务规则,查看是否正确。
  然后通过多日监控,可以发现不管是增量还是全量,数据量基本都会处于一个值左右,幅度不会太大,如果出现特殊情况,就要去考虑检查一下它的正确性了。
  4)监控增量运行时间
  通过监控增量的运行时长,可以发现性能问题和批量数据的运行是否成功。对于时间浮动比较大的增量表,可以第一时间发现问题并解决问题。
  全量加载方式
  由于我们采取的是全量加载+增量加载(采用时间戳方式),我这里指的全量加载即数据仓库中数据的初始化。
  全量加载的测试方案相对要简单些。
  1)测试源和目标表的数据量的一致性
  2)运行1,2,3,4测试测试方法测试一般来说即可。
  6.性能测试
  确保数据在规定和预计的时间内被加载到数据仓库中,以确认改进的性能和可扩展性。
  7.测试用例
  项目中的关键业务,复杂逻辑部分作为测试重点
  基础数据:可以为真实数据,也可以单纯手工造数据。因为ETL数据量较大,并且表中字段数量比较多,各表关联比较大,所以本人觉得还是用真实数据效率比较高。
  测试用例的编写:测试用例可以单独设计,也可以采用调度的思想进行设计,采用调度方法进行设计时,能一次验证多个用例,另外也方便回归。
  8.发布实施后
  1)测试informatica中源、目标映射是否一致
  2)测试开发库和生产库中ETL程序是否一致
  3)监控增量数据和增量运行时间。
  增量数据监控:项目发布后,我们可以观察数据的波动趋势,一般来说数据的波动是在一定范围,遵循一定原则的,如果发现数据波动超出了预计范围,这个时候就需要特别注意了。
  增量运行时间监控:往往项目上线后,比较在意的是性能问题,以确保在规定的时间内,完成跑批。我们要通过监控增量运行时间,及时发现程序的性能问题。

相关推荐:
【专题】大数据测试正确的打开方式

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 小移测评
    2018-1-29 17:44:09

    您好,我是公众号“小移测评”(ID:cmcc_zc)小编,请问这篇《ETL大数据测试方法小结》是您的原创文章吗?如果是,可以授权我们转载吗?

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号