本来早就打算要写一篇日志来讲讲ETL测试的自动化执行,以及ETL自动化测试框架实现的一些相关东东。前后托了近一个月,今天总算落实到键盘了。
不过由于部门组织结构调整,该ETL测试框架面临着刚出生就可能夭折的命运,现在写起来,似乎也夹杂一些悲壮。
其实这个ETL自动化测试框架是我在09年面试阿里巴巴ETL测试职位的时候就在脑海中盘旋了。当时的面试官,也是自己后来的主管boss说我们要自己搞一套ETL的自动化测试框架。然后我就怀揣着理想来了...
而10年7月入职之后,由于种种原因,该理想都未能付诸于实际。有环境的因素,也有自己积累不到位的原因。直到前一段时间,自己算是有了实现自己idea的机会之后,果断将其落实。终于按照自己想法的第一个产品诞生了。
在框架初生阶段,很大程度上借鉴了某PHP开源单元测试框架simpleTest的实现思路,主要包括其TestCase、Suite、Expecation、Assert、Report等元素的实现,也让自己对单元测试框架的实现思路有了更清晰的认识。
在此要重点感谢开源SimpleTest项目的所有贡献者,你们懂得。
框架简介:
该框架的用例执行和断言、报告等实现都是基于SimpleTest的实现思路。将其中关于web、浏览器等相关的内容排除,只留下Case、Suite、Report、Expecatation、Assert等相关组件,并增加了对应的用于ETL测试的Expecatation、Assert以及TestCase。
主要实现了SQL语句的执行、SQL执行结果的判断等。
如何使用:
1. 一个最简单的ETL测试用例:a.php
class A extends DBunitTestCase{ public $constr = "host=10.20.143.243 port=5132 dbname=aligputf8 user=gpadmin"; function testCountForA($stat_date){ $sqlact = " select 1; "; $sqlexp = " select 2; "; $this->assertLessThanCount($sqlact,$sqlexp); } }
上述代码的测试逻辑为检查SQL:select 1的结果是否比SQL:select 2的结果要小。
有了测试用例,执行还需要一个执行器,执行器代码如下:
#!/export/home/gpadmin/rosei.liuzq/php-install/bin/php <?php require_once('etl/runner.php'); //其实这就是执行器 class UserBasic extends TestSuite{ public function __construct(){ parent::__construct("UserBasic"); $this->addFile('hello',array('a.php')); //此处其实可以放多个的array('a.php','b.php',....) } }
我们将刚才完成的测试单元放在这个测试执行器中。
执行器中的addFile,可以add多个,如上注释所属,一次addFile生成一个测试Suite。
当然可以执行多次addFile。
ps:一般来讲一个项目的测试会有一个执行器,项目中的不同模块测试逻辑分别对应一个addFile,一个模块中的不同测试用例或针对不同表的测试,可以是一个个.php文件。执行器除了有执行用例的功能,也有组织项目测试的作用。
上述用例执行命令为:
cd dir //directory where you put the case and runner
./run.sh
运行结果为:
如果我们需要输出xml格式的结果,只需要在执行时加上-x即可:
cd dir //directory where you put the case and runner
./run.sh -x
结果如下:
2. 其他的Assert逻辑:
目前该ETL测试框架中共实现了如下Assert逻辑:
- assertScalarEqual //SQL执行结果与标量值比较:$this->assertScalarEqual($sql,1)
- assertSqlResult //两个SQL结果的比较: $this->assertSqlResult($sql1,$sql2)
- assertLessThanCount //上例演示
- assertCustomize //自定义Assert逻辑: $this->assertCustomize($sql,$cust_func)
class A extends DBunitTestCase{ public $constr = "host=10.20.143.243 port=5132 dbname=aligputf8 user=gpadmin"; function testCountForA($stat_date){ $sqlact = " select 1; "; $sqlexp = " select 2; "; $this->assertLessThanCount($sqlact,$sqlexp); } function testForTestArg($dateArg){ $sql = "select $dateArg"; $this->assertScalarEqual($sql,"20110909"); } }
cd dir //directory where you put the case and runner
./run.sh -d=20110909
相关推荐
ETL测试,全称为Extract-Transform-Load,是数据仓库领域中的关键环节,涉及数据的抽取、转换和加载。在进行ETL测试时,我们关注的是数据从源系统到目标系统流动过程中的完整性和准确性。以下是一些在ETL测试中需要...
"主流ETL工具测试比较" ETL(Extract、Transform、Load)是一种常用的数据integration工具,用于从多个数据源中提取数据,转换为一种格式,然后加载到目标系统中。在实际应用中,选择合适的ETL工具是非常重要的。...
"AI"可能代表"自动化接口",表明这个脚本与数据分析或机器学习任务有关,用于持续更新模型所需的中间层数据。 3. **ai_ods_ddl.sh**:DDL代表“数据定义语言”,主要用于创建、修改或删除数据库对象。这个脚本可能...
ETL 开发模式是指在 ETL 过程中,使用不同的开发模式来实现 ETL 的自动化和高效化。常见的 ETL 开发模式包括: * 标准式:使用标准的 ETL 工具和组件来实现 ETL 的自动化和高效化。 * 小型快速式:使用小型快速的 ...
ETL Automation 是一个数据集成平台,旨在提供一个自动化的数据集成解决方案。下面是对 ETL Automation 使用手册 Version 2.6.0 中文的详细知识点解释。 ETL Automation 简介 ETL Automation 是一个基于服务器的...
ETL Automation 是一个自动化的数据集成工具,旨在帮助用户快速高效地完成数据提取、转换和加载(ETL)过程。本手册将详细介绍 ETL Automation 的安装、配置、使用和管理。 ETL Automation 简介 ETL Automation 是...
嵌入式系统软件自动化测试是现代软件工程中一个至关重要的环节,特别是在后PC时代,嵌入式系统已经广泛应用于各个领域。嵌入式系统软件测试不仅要验证软件的功能和行为特性,还需要关注时间特性,因为这类软件往往...
元数据驱动ETL意味着通过配置元数据来自动化ETL过程,减少了人工干预,提高了灵活性和可维护性。当业务逻辑发生变化时,系统自动通知ETL实施人员,他们根据变更内容配置ETL元数据,生成相应的ETL作业(ETLJOB),并...
1. 测试自动化:通过编写自动化测试脚本,如单元测试、集成测试和端到端测试,可以在代码修改后快速验证其功能,确保软件质量。这减少了手动测试的时间和人力成本,也更容易维护大型项目的测试用例。 2. 持续集成/...
5. 自动化:利用自动化工具和流程,减少人工干预,提高效率。 通过深入理解ETL设计与开发实践,我们可以构建高效、稳定的数据处理系统,为企业的数据分析和决策提供强有力的支持。在实际工作中,不断学习和应用这些...
例如,抽取和转换可以单独为一个单元,这样可以分别运行,或者根据业务需求将装载一个表作为单一的ETL任务。 总结来说,ETL不仅仅是工具的使用,更是数据处理理念的体现。理解ETL的本质,掌握其转换逻辑和流程控制...
测试在ETL流程中同样重要,确保每个步骤都能正确执行,数据质量得到保障。测试可能包括单元测试、集成测试和性能测试,旨在验证ETL流程的正确性、稳定性和效率。 总结起来,ETL是数据处理的关键步骤,涉及数据的...
#### ETL概念及分类 **ETL**(Extract, Transform, Load)是一种广泛应用于数据仓库建设中的数据处理流程。它主要包括三个步骤: 1. **Extract(提取)**:从源系统中抽取所需的数据。 2. **Transform(转换)**:...
ETL工具Kettle用户手册及Kettle5.x使用步骤带案例超详细版 ETL(Extract, Transform, Load)工具Kettle是数据集成领域中的一款功能强大且广泛应用的工具,本手册旨在为用户提供详细的使用指南和案例实践,以帮助...
然而,ETL架构师必须考虑ETL可能失败的情况,并确保ETL具备恢复运行的能力,而不是每次失败都从头再来。ETL的恢复运行能力是系统健壮性的关键指标,而Staging Area的数据是这种恢复能力的重要基础。 在设计Staging ...
ETL基础技能面试
### ETL概述及部分工具比较 #### ETL概念解析 ETL是Extract(提取)、Transform(转换)和Load(加载)三个英文...随着技术的不断进步,未来的ETL工具将更加智能化、自动化,为企业提供更强大、灵活的数据处理能力。
这些工具提供了图形化的工作流设计、自动化执行、错误处理等功能,极大地提高了 ETL 开发和维护的效率。 4 总结 ETL 是数据集成的重要组成部分,尤其在大数据时代,它的角色更加关键。理解 ETL 的概念、流程及其与...