Continuous ETL Testing for Pentaho Data Integration (kettle)

Slawomir Chodnicki
Slawomir ChodnickiFounder and Solution Architect at Twineworks GmbH à Twineworks GmbH
Twineworks
Testing
PDI solutions
Slawomir Chodnicki
BI Consultant
slawo@twineworks.com
TwineworksThe sample project
2
.
|-- bin # entry point scripts
|-- environments # environment configuration
|-- etl # ETL solution
`-- spec # tests and helpers
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest orchestration
$ bin/robot test
3
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin4
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin5
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin6
Twineworks
Jenkins is a continuous integration server.
It’s basic role is to run the test suite and build any artifacts upon changes
in version control.
Example server:
http://ci.pentaho.com/
Twineworks
Twineworks
Twineworks
Twineworks
Jenkins is a continuous integration server.
It’s basic role is to run the test suite and build any artifacts upon changes
in version control.
Example server:
http://ci.pentaho.com/
Twineworks
Testable solutions
Twineworks
Configuration
management
• configure all data sources/targets and
paths through kettle variables or
parameters
• local environment - not in version control
• test environment - reference
environment
• production environment - optional
13
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Configuration
management
14
environments
`-- local # dev environment – not in version control
|-- environment.sh # shell environment variables
|-- my.cnf # database config file
`-- .kettle # KETTLE_HOME
|-- shared.xml # database connections
`-- kettle.properties # kettle variables
`-- test # test environment – in version control
`-- production # other environments
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksEnvironments are self-contained
• share nothing
• reproducible results:
– you can run it
– your team can run it
– ci-server can run it
15
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Configuration
management
$ bin/robot spoon
16
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Configuration
management
17
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksInitialize db
$ bin/robot db reset
clearing database [ OK ]
initializing database
2017/10/20 15:32:37 - Kitchen - Start of run.
2017/10/20 15:32:37 - reset_dwh - Start of job execution
…
…
2017/10/20 15:32:41 - Kitchen - Finished!
2017/10/20 15:32:41 - Kitchen - Processing ended after 4 seconds.
[ OK ]
18
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksSub-systems/Phases
• Define sub-systems/phases
– define pre-requisites
• data expected in certain sources
– define outcomes
• data written to certain sinks
• A sub-system/phase of the ETL process is
responsible for a small set of related side-
effects to happen
19
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksSub-systems/Phases
20
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksSub-systems/Phases
21
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksEntry points
• Define entry points with a full functional
contract.
• An entry point implements an application
feature.
22
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksEntry points
23
Twineworks
Testing ETL
solutions
TwineworksKinds of automated tests
• Computation tests
• Integration tests
• Functional tests
• Non-functional tests
25
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksComputation tests
• Single unit of ETL under test
• Performs a computation (no side-effects)
• What is a “unit” in PDI?
– Job?
– Transformation?
– Sub-transformation (mapping)?
26
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksA simple computation test
Test job
spec/dwh/validate_params/validate_params_spec.kjb
27
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksA simple computation test
Test job
spec/dwh/validate_params/validate_params_spec.kjb
The job calls
etl/dwh/validate_params.kjb
- with DATA_DATE=2016-07-01 and expects it to succeed
- with DATA_DATE=1867-12-21 and expects it to fail
The job succeeds if all expectations are met. It fails otherwise.
28
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest jobs
29
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Test transformation
results
30
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Test transformation
results
31
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest sub-transformations
32
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest sub-transformations
33
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Integration tests
TwineworksIntegration tests
• ETL responsible for a set of related side-
effects under test
• Most common case in ETL testing
– Test individual phases of a batch process
35
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksIntegration tests
36
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksIntegration tests
37
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksIntegration tests
38
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Functional testing
TwineworksFunctional tests
• Entry point of ETL solution under test
• Assertions reflect invocation contract
– Behavior on happy path
– Behavior on errors
– Behavior on incorrect invocation
40
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest the daily run
41
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest the daily run
42
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest the daily run
43
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Non-functional tests
TwineworksNon-functional tests
• Performance
– how long does workload x take?
• Stability
– what does it take to break it?
– How much memory is too little?
– What happens when loading unexpected data?
(truncated file, column too long, 50MB XML in
string field, badly formatted CSV reads as single
field, empty files)
45
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksNon-functional tests
• Security
– Verify configuration assumptions
automatically
• Compliance
– We must use version x of library y
46
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest compliance
47
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
Scripting tests
TwineworksJRuby
JRuby is the ruby language on the JVM
http://jruby.org
Maintained by Redhat.
Runs Rails on JBoss 
49
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksRspec
Rspec is a testing framework for ruby
http://rspec.info/
https://relishapp.com/rspec
50
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksRspec
$ bin/robot test
• Includes helper files in spec/support
• traverses the spec folder looking for files
whose names end in _spec.rb and loads
them as tests
51
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
52
describe "dwh clear job" do
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
53
describe "dwh clear job" do
describe "when db is not empty" do
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
54
describe "dwh clear job" do
describe "when db is not empty" do
before :all do
dwh_db.load_fixture "spec/fixtures/steelwheels/steelwheels.sql"
@result = run_job "etl/dwh/load/load.kjb", {}
end
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksRspec helpers
55
spec/support/spec_helpers.rb
def dwh_db
...
end
Returns a JDBC database object.
Connects on demand, and closes automatically when test-
suite ends.
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksRspec helpers
56
spec/support/spec_helpers.rb
def dwh_db
...
end
In addition
dwh_db.load_fixture(path) allows loading a sql or json fixture file
dwh_db.reset() triggers $ bin/robot db reset
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
57
describe "dwh clear job" do
describe "when db is not empty" do
before :all do
dwh_db.load_fixture "spec/fixtures/steelwheels/steelwheels.sql"
}
end
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
58
describe "dwh clear job" do
describe "when db is not empty" do
before :all do
dwh_db.load_fixture "spec/fixtures/steelwheels/steelwheels.sql"
@result = run_job "etl/dwh/util/clear.kjb"
end
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksRspec helpers
59
spec/support/spec_helpers.rb
def run_job file, params
...
end
Runs a kettle job and returns a map
{
:successful? => true/false,
:log => “log text”,
:result => [row1, row2, row3, …]
}
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
60
describe "dwh clear job" do
describe "when db is not empty" do
before :all do
dwh_db.load_fixture "spec/fixtures/steelwheels/steelwheels.sql"
@result = run_job "etl/dwh/util/clear.kjb"
end
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
61
describe "dwh clear job" do
describe "when db is not empty" do
before :all do
dwh_db.load_fixture "spec/fixtures/steelwheels/steelwheels.sql"
@result = run_job "etl/dwh/util/clear.kjb"
end
it "completes successfully" do
expect(@result[:successful?]).to be true
end
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
62
describe "dwh clear job" do
describe "when db is not empty" do
before :all do
dwh_db.load_fixture "spec/fixtures/steelwheels/steelwheels.sql"
@result = run_job "etl/dwh/util/clear.kjb"
end
it "completes successfully" do
expect(@result[:successful?]).to be true
end
it "clears the db" do
expect(dwh_db.query("SHOW TABLES").to_a.length).to eq 0
end
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest orchestration
$ bin/robot test
63
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin64
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin65
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin66
TwineworksRunning jobs as rspec tests
67
spec/etl/etl_spec.rb
Recursively traverses etl/spec looking for files whose names
end in _spec.kjb, and dynamically generates a describe and
it block for it.
Hence all such job files are part of the test suite.
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
Twineworks
68
describe "ETL" do
Dir.glob("./**/*_spec.kjb").each do |path|
describe "#{path}” do
it "completes successfully" do
@result = run_job path.to_s, {}
expect(@result[:successful?]).to be true
end
end
end
end
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksRspec – test orchestration
69
Rspec runs in two phases
Phase 1: collects tests, recording the structure as given by
the describe blocks.
Phase 2: filters found tests as per command line parameters
and executes them
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksRspec – test orchestration
70
Run only tests containing the word ‘clear’ in their name or
enclosing describe blocks:
$ bin/robot test --example 'clear'
Run only tests tagged ‘long_running’:
$ bin/robot test --tag 'long_running'
Run only tests in spec/commands
$ bin/robot test spec/commands
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest orchestration
$ bin/robot test
71
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin72
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin73
TwineworksTest orchestration
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin74
Twineworks
Jenkins is a continuous integration server.
It’s basic role is to run the test suite and build any artifacts upon changes
in version control.
Example server:
http://ci.pentaho.com/
Twineworks
Thank you!
Twineworks
Backup Slides
Twineworks
Testing in practice
TwineworksTest what you run
• Verify behavior of the entity you run
directly
79
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksTools of the trade
• Helpers
– utility code/etl of components reused to make
tests about the what, not about the how
– fixture loaders
– assertion helpers
– data comparison helpers
80
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksData Fixtures
• Data Fixtures
– sets of test data, encoded in a convenient way,
easily loaded into data sources and sinks
• JSON, CSV, SQL, XML, YAML
– Use whatever is easiest to maintain for the team
• Generate data fixtures through
parameterized scripts if you need to generate
datasets with consistent relationships
81
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
TwineworksFile Fixtures
• File Fixtures
– sets of test files acted upon during a run
• Maintain file fixtures separate from source location
expected by ETL
• If fixture files are changed as part of the test, copy
them to a temporary location before running tests
• Create a unique source location per test run, if the
file location is shared (like sftp)
82
Twineworks GmbH | Helmholtzstr. 28 | 10587 Berlin | twineworks.com
1 sur 82

Recommandé

開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成 par
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成慎一 古賀
17.9K vues74 diapositives
Overview of webSpoon @ Pentaho Bay Area Meetup par
Overview of webSpoon @ Pentaho Bay Area MeetupOverview of webSpoon @ Pentaho Bay Area Meetup
Overview of webSpoon @ Pentaho Bay Area MeetupHiromu Hota
5.1K vues18 diapositives
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月 par
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
13.3K vues42 diapositives
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会 par
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会真乙 九龍
32.5K vues22 diapositives
はじめようGit par
はじめようGitはじめようGit
はじめようGittechscore
34.6K vues118 diapositives
Inside vacuum - 第一回PostgreSQLプレ勉強会 par
Inside vacuum - 第一回PostgreSQLプレ勉強会Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会Masahiko Sawada
13.6K vues59 diapositives

Contenu connexe

Tendances

並列クエリを実行するPostgreSQLのアーキテクチャ par
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャKohei KaiGai
13.4K vues32 diapositives
単なるキャッシュじゃないよ!?infinispanの紹介 par
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
16K vues37 diapositives
プロが解説!Hinemosによる運用管理テクニック! par
プロが解説!Hinemosによる運用管理テクニック!プロが解説!Hinemosによる運用管理テクニック!
プロが解説!Hinemosによる運用管理テクニック!hinemos_atomitech
6.4K vues65 diapositives
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料) par
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)NTT DATA Technology & Innovation
1.5K vues27 diapositives
すごいBOSHたのしく学ぼう par
すごいBOSHたのしく学ぼうすごいBOSHたのしく学ぼう
すごいBOSHたのしく学ぼうi_yudai
19.3K vues32 diapositives
Entity Framework(Core)についての概要を学ぼう par
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうTomomitsuKusaba
711 vues23 diapositives

Tendances(20)

並列クエリを実行するPostgreSQLのアーキテクチャ par Kohei KaiGai
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai13.4K vues
単なるキャッシュじゃないよ!?infinispanの紹介 par AdvancedTechNight
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
プロが解説!Hinemosによる運用管理テクニック! par hinemos_atomitech
プロが解説!Hinemosによる運用管理テクニック!プロが解説!Hinemosによる運用管理テクニック!
プロが解説!Hinemosによる運用管理テクニック!
hinemos_atomitech6.4K vues
すごいBOSHたのしく学ぼう par i_yudai
すごいBOSHたのしく学ぼうすごいBOSHたのしく学ぼう
すごいBOSHたのしく学ぼう
i_yudai19.3K vues
Entity Framework(Core)についての概要を学ぼう par TomomitsuKusaba
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
TomomitsuKusaba711 vues
その ionice、ほんとに効いてますか? par Narimichi Takamura
その ionice、ほんとに効いてますか?その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?
Narimichi Takamura90.7K vues
ブラック企業から学ぶMVCモデル par Yuta Hiroto
ブラック企業から学ぶMVCモデルブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデル
Yuta Hiroto9.7K vues
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案 par Kota Abe
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案
Kota Abe2.2K vues
Redmineのバージョンアップに追従していくための一工夫 par Go Maeda
Redmineのバージョンアップに追従していくための一工夫Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫
Go Maeda25.2K vues
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会 par Shigeru Hanada
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
Shigeru Hanada8.8K vues
BuildKitによる高速でセキュアなイメージビルド par Akihiro Suda
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda42.6K vues
インフラエンジニアのためのRancherを使ったDocker運用入門 par Masahito Zembutsu
インフラエンジニアのためのRancherを使ったDocker運用入門インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 par Koichiro Matsuoka
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka88.1K vues
こわくない Git par Kota Saito
こわくない Gitこわくない Git
こわくない Git
Kota Saito881.4K vues
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料) par NTT DATA Technology & Innovation
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) par Hironobu Isoda
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda2.4K vues

En vedette

Pentaho PDI and the Jare Ruleengine par
Pentaho PDI and the Jare RuleenginePentaho PDI and the Jare Ruleengine
Pentaho PDI and the Jare Ruleengineuwe geercken
1.7K vues26 diapositives
Understanding the Pentaho CDE NewMapComponent par
Understanding the Pentaho CDE NewMapComponentUnderstanding the Pentaho CDE NewMapComponent
Understanding the Pentaho CDE NewMapComponentKleyson Rios
3.7K vues14 diapositives
Pentaho 8 Reporting for Java Developers - Because details matter par
Pentaho 8 Reporting for Java Developers - Because details matterPentaho 8 Reporting for Java Developers - Because details matter
Pentaho 8 Reporting for Java Developers - Because details matterFrancesco Corti
1.9K vues45 diapositives
Updates on webSpoon and other innovations from Hitachi R&D par
Updates on webSpoon and other innovations from Hitachi R&DUpdates on webSpoon and other innovations from Hitachi R&D
Updates on webSpoon and other innovations from Hitachi R&DHiromu Hota
4.3K vues24 diapositives
NGINX Plus PLATFORM For Flawless Application Delivery par
NGINX Plus PLATFORM For Flawless Application DeliveryNGINX Plus PLATFORM For Flawless Application Delivery
NGINX Plus PLATFORM For Flawless Application DeliveryAshnikbiz
1.1K vues25 diapositives
Jenkins Peru Meetup Docker Ecosystem par
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemMario IC
974 vues42 diapositives

En vedette(20)

Pentaho PDI and the Jare Ruleengine par uwe geercken
Pentaho PDI and the Jare RuleenginePentaho PDI and the Jare Ruleengine
Pentaho PDI and the Jare Ruleengine
uwe geercken1.7K vues
Understanding the Pentaho CDE NewMapComponent par Kleyson Rios
Understanding the Pentaho CDE NewMapComponentUnderstanding the Pentaho CDE NewMapComponent
Understanding the Pentaho CDE NewMapComponent
Kleyson Rios3.7K vues
Pentaho 8 Reporting for Java Developers - Because details matter par Francesco Corti
Pentaho 8 Reporting for Java Developers - Because details matterPentaho 8 Reporting for Java Developers - Because details matter
Pentaho 8 Reporting for Java Developers - Because details matter
Francesco Corti1.9K vues
Updates on webSpoon and other innovations from Hitachi R&D par Hiromu Hota
Updates on webSpoon and other innovations from Hitachi R&DUpdates on webSpoon and other innovations from Hitachi R&D
Updates on webSpoon and other innovations from Hitachi R&D
Hiromu Hota4.3K vues
NGINX Plus PLATFORM For Flawless Application Delivery par Ashnikbiz
NGINX Plus PLATFORM For Flawless Application DeliveryNGINX Plus PLATFORM For Flawless Application Delivery
NGINX Plus PLATFORM For Flawless Application Delivery
Ashnikbiz1.1K vues
Jenkins Peru Meetup Docker Ecosystem par Mario IC
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
Mario IC974 vues
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy par Giovanni Toraldo
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) ItalyClustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Giovanni Toraldo7.6K vues
Tao zhang par harishk2
Tao zhangTao zhang
Tao zhang
harishk21.1K vues
Pentaho | Data Integration & Report designer par Hamdi Hmidi
Pentaho | Data Integration & Report designerPentaho | Data Integration & Report designer
Pentaho | Data Integration & Report designer
Hamdi Hmidi1.9K vues
Elementos ETL - Kettle Pentaho par valex_haro
Elementos ETL - Kettle Pentaho Elementos ETL - Kettle Pentaho
Elementos ETL - Kettle Pentaho
valex_haro8.1K vues
Indic threads pune12-accelerating computation in html 5 par IndicThreads
Indic threads pune12-accelerating computation in html 5Indic threads pune12-accelerating computation in html 5
Indic threads pune12-accelerating computation in html 5
IndicThreads1.2K vues
Building Data Integration and Transformations using Pentaho par Ashnikbiz
Building Data Integration and Transformations using PentahoBuilding Data Integration and Transformations using Pentaho
Building Data Integration and Transformations using Pentaho
Ashnikbiz973 vues
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12 par Puppet
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Puppet33.3K vues
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos? par Carlos Sanchez
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Carlos Sanchez4.6K vues
Business Intelligence and Big Data Analytics with Pentaho par Uday Kothari
Business Intelligence and Big Data Analytics with Pentaho Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho
Uday Kothari5.2K vues
Migración de datos con OpenERP-Kettle par raimonesteve
Migración de datos con OpenERP-KettleMigración de datos con OpenERP-Kettle
Migración de datos con OpenERP-Kettle
raimonesteve3.9K vues
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry par Mario IC
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Mario IC1.8K vues
Introduction to docker swarm par Walid Ashraf
Introduction to docker swarmIntroduction to docker swarm
Introduction to docker swarm
Walid Ashraf875 vues

Similaire à Continuous ETL Testing for Pentaho Data Integration (kettle)

JavaLand - Integration Testing How-to par
JavaLand - Integration Testing How-toJavaLand - Integration Testing How-to
JavaLand - Integration Testing How-toNicolas Frankel
1.7K vues74 diapositives
Process selection for manufacturing fms par
Process selection for manufacturing fmsProcess selection for manufacturing fms
Process selection for manufacturing fmsKinshook Chaturvedi
3.5K vues28 diapositives
Никита Галкин "Testing in Frontend World" par
Никита Галкин "Testing in Frontend World"Никита Галкин "Testing in Frontend World"
Никита Галкин "Testing in Frontend World"Fwdays
388 vues54 diapositives
ABAP Unit and TDD par
ABAP Unit and TDDABAP Unit and TDD
ABAP Unit and TDDHendrik Neumann
3K vues19 diapositives
Continuous Delivery for Machine Learning par
Continuous Delivery for Machine LearningContinuous Delivery for Machine Learning
Continuous Delivery for Machine LearningThoughtworks
1.6K vues50 diapositives
How to test a Mainframe Application par
How to test a Mainframe ApplicationHow to test a Mainframe Application
How to test a Mainframe ApplicationMichael Erichsen
2K vues96 diapositives

Similaire à Continuous ETL Testing for Pentaho Data Integration (kettle)(20)

JavaLand - Integration Testing How-to par Nicolas Frankel
JavaLand - Integration Testing How-toJavaLand - Integration Testing How-to
JavaLand - Integration Testing How-to
Nicolas Frankel1.7K vues
Никита Галкин "Testing in Frontend World" par Fwdays
Никита Галкин "Testing in Frontend World"Никита Галкин "Testing in Frontend World"
Никита Галкин "Testing in Frontend World"
Fwdays388 vues
Continuous Delivery for Machine Learning par Thoughtworks
Continuous Delivery for Machine LearningContinuous Delivery for Machine Learning
Continuous Delivery for Machine Learning
Thoughtworks1.6K vues
201502 - Integration Testing par lyonjug
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testing
lyonjug741 vues
Releasemanagement in integration projects par Sven Bernhardt
Releasemanagement in integration projectsReleasemanagement in integration projects
Releasemanagement in integration projects
Sven Bernhardt136 vues
From big data to AI, power your data with OVHcloud solutions par OVHcloud
From big data to AI, power your data with OVHcloud solutionsFrom big data to AI, power your data with OVHcloud solutions
From big data to AI, power your data with OVHcloud solutions
OVHcloud83 vues
Want Digitalisation, have Cloud - DevSecOps Days 2021 - Schlomo Schapiro par Schlomo Schapiro
Want Digitalisation, have Cloud - DevSecOps Days 2021 - Schlomo SchapiroWant Digitalisation, have Cloud - DevSecOps Days 2021 - Schlomo Schapiro
Want Digitalisation, have Cloud - DevSecOps Days 2021 - Schlomo Schapiro
Schlomo Schapiro354 vues
Product Design & Process Selection-Manufacturing par Joshua Miranda
Product Design & Process Selection-Manufacturing Product Design & Process Selection-Manufacturing
Product Design & Process Selection-Manufacturing
Joshua Miranda10.9K vues
stackconf 2022: Configuration Management vs. Workflows vs. Orchestration par NETWAYS
stackconf 2022: Configuration Management vs. Workflows vs. Orchestrationstackconf 2022: Configuration Management vs. Workflows vs. Orchestration
stackconf 2022: Configuration Management vs. Workflows vs. Orchestration
NETWAYS12 vues
2014 Taverna Tutorial Nested workflows par myGrid team
2014 Taverna Tutorial Nested workflows2014 Taverna Tutorial Nested workflows
2014 Taverna Tutorial Nested workflows
myGrid team522 vues
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOps par Andrey Karpov
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOpsPVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOps
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOps
Andrey Karpov51 vues

Dernier

VoxelNet par
VoxelNetVoxelNet
VoxelNettaeseon ryu
9 vues21 diapositives
MOSORE_BRESCIA par
MOSORE_BRESCIAMOSORE_BRESCIA
MOSORE_BRESCIAFederico Karagulian
5 vues8 diapositives
Ukraine Infographic_22NOV2023_v2.pdf par
Ukraine Infographic_22NOV2023_v2.pdfUkraine Infographic_22NOV2023_v2.pdf
Ukraine Infographic_22NOV2023_v2.pdfAnastosiyaGurin
1.4K vues3 diapositives
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init... par
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...DataScienceConferenc1
5 vues18 diapositives
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx par
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptxDataScienceConferenc1
5 vues12 diapositives
Survey on Factuality in LLM's.pptx par
Survey on Factuality in LLM's.pptxSurvey on Factuality in LLM's.pptx
Survey on Factuality in LLM's.pptxNeethaSherra1
7 vues9 diapositives

Dernier(20)

Ukraine Infographic_22NOV2023_v2.pdf par AnastosiyaGurin
Ukraine Infographic_22NOV2023_v2.pdfUkraine Infographic_22NOV2023_v2.pdf
Ukraine Infographic_22NOV2023_v2.pdf
AnastosiyaGurin1.4K vues
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init... par DataScienceConferenc1
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx par DataScienceConferenc1
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx
[DSC Europe 23] Zsolt Feleki - Machine Translation should we trust it.pptx
CRM stick or twist workshop par info828217
CRM stick or twist workshopCRM stick or twist workshop
CRM stick or twist workshop
info82821710 vues
[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented Generation par DataScienceConferenc1
[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented Generation[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented Generation
[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented Generation
Short Story Assignment by Kelly Nguyen par kellynguyen01
Short Story Assignment by Kelly NguyenShort Story Assignment by Kelly Nguyen
Short Story Assignment by Kelly Nguyen
kellynguyen0119 vues
Data about the sector workshop par info828217
Data about the sector workshopData about the sector workshop
Data about the sector workshop
info82821712 vues
SUPER STORE SQL PROJECT.pptx par khan888620
SUPER STORE SQL PROJECT.pptxSUPER STORE SQL PROJECT.pptx
SUPER STORE SQL PROJECT.pptx
khan88862013 vues
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an... par StatsCommunications
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...
UNEP FI CRS Climate Risk Results.pptx par pekka28
UNEP FI CRS Climate Risk Results.pptxUNEP FI CRS Climate Risk Results.pptx
UNEP FI CRS Climate Risk Results.pptx
pekka2811 vues
CRM stick or twist.pptx par info828217
CRM stick or twist.pptxCRM stick or twist.pptx
CRM stick or twist.pptx
info82821711 vues
Cross-network in Google Analytics 4.pdf par GA4 Tutorials
Cross-network in Google Analytics 4.pdfCross-network in Google Analytics 4.pdf
Cross-network in Google Analytics 4.pdf
GA4 Tutorials6 vues
Advanced_Recommendation_Systems_Presentation.pptx par neeharikasingh29
Advanced_Recommendation_Systems_Presentation.pptxAdvanced_Recommendation_Systems_Presentation.pptx
Advanced_Recommendation_Systems_Presentation.pptx
[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx par DataScienceConferenc1
[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx
[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx
PRIVACY AWRE PERSONAL DATA STORAGE par antony420421
PRIVACY AWRE PERSONAL DATA STORAGEPRIVACY AWRE PERSONAL DATA STORAGE
PRIVACY AWRE PERSONAL DATA STORAGE
antony4204215 vues

Continuous ETL Testing for Pentaho Data Integration (kettle)