ETL Testing Tutorial
What is ETL Testing?
ETL testing is done to ensure that the data that has been loaded from a source to the destination after business transformation is accurate. It also involves the verification of data at various middle stages that are being used between source and destination. ETL stands for Extract-Transform-Load.
Data Warehouse Testing
Data Warehouse Testing is a testing method in which the data inside a data warehouse is tested for integrity, reliability, accuracy and consistency in order to comply with the company’s data framework. The main purpose of data warehouse testing is to ensure that the integrated data inside the data warehouse is reliable enough for a company to make decisions on.
What is ETL?
ETL stands for Extract-Transform-Load and it is a process of how data is loaded from the source system to the data warehouse. Data is extracted from an OLTP database, transformed to match the data warehouse schema and loaded into the data warehouse database. Many data warehouses also incorporate data from non-OLTP systems such as text files, legacy systems and spreadsheets.
Let see how it works
For example, there is a retail store which has different departments like sales, marketing, logistics etc. Each of them is handling the customer information independently, and the way they store that data is quite different. The sales department have stored it by customer’s name, while marketing department by customer id.
Now if they want to check the history of the customer and want to know what the different products he/she bought owing to different marketing campaigns; it would be very tedious.
The solution is to use a datawarehouse to store information from different sources in a uniform structure using ETL. ETL can transform dissimilar data sets into an unified structure.Later use BI tools to derive meaningful insights and reports from this data.
The following diagram in this ETL testing tutorial gives you the ROAD MAP of the ETL Testing process flow and various ETL testing concepts:
- Extract
- Extract relevant data
- Transform
- Transform data to DW (Data Warehouse) format
- Build keys – A key is one or more data attributes that uniquely identify an entity. Various types of keys are primary key, alternate key, foreign key, composite key, surrogate key. The datawarehouse owns these keys and never allows any other entity to assign them.
- Cleansing of data :After the data is extracted, it will move into the next phase, of cleaning and conforming of data. Cleaning does the omission in the data as well as identifying and fixing the errors. Conforming means resolving the conflicts between those data’s that is incompatible, so that they can be used in an enterprise data warehouse. In addition to these, this system creates meta-data that is used to diagnose source system problems and improves data quality.
- Load
- Load data into DW (Data Warehouse)
- Build aggregates – Creating an aggregate is summarizing and storing data which is available in fact table in order to improve the performance of end-user queries.
ETL Testing Process
Similar to other Testing Process, ETL also go through different phases. The different phases of ETL testing process is as follows
ETL testing is performed in five stages
- Identifying data sources and requirements
- Data acquisition
- Implement business logics and dimensional Modelling
- Build and populate data
- Build Reports
Types of ETL Testing
Types Of Testing | Testing Process |
---|---|
Production Validation Testing | “Table balancing” or “production reconciliation” this type of ETL testing is done on data as it is being moved into production systems. To support your business decision, the data in your production systems has to be in the correct order. Informatica Data Validation Option provides the ETL testing automation and management capabilities to ensure that production systems are not compromised by the data. |
Source to Target Testing (Validation Testing) | Such type of testing is carried out to validate whether the data values transformed are the expected data values. |
Application Upgrades | Such type of ETL testing can be automatically generated, saving substantial test development time. This type of testing checks whether the data extracted from an older application or repository are exactly same as the data in a repository or new application. |
Metadata Testing | Metadata testing includes testing of data type check, data length check and index/constraint check. |
Data Completeness Testing | To verify that all the expected data is loaded in target from the source, data completeness testing is done. Some of the tests that can be run are compare and validate counts, aggregates and actual data between the source and target for columns with simple transformation or no transformation. |
Data Accuracy Testing | This testing is done to ensure that the data is accurately loaded and transformed as expected. |
Data Transformation Testing | Testing data transformation is done as in many cases it cannot be achieved by writing one source SQL query and comparing the output with the target. Multiple SQL queries may need to be run for each row to verify the transformation rules. |
Data Quality Testing | Data Quality Tests includes syntax and reference tests. In order to avoid any error due to date or order number during business process Data Quality testing is done.
Syntax Tests: It will report dirty data, based on invalid characters, character pattern, incorrect upper or lower case order etc. Reference Tests: It will check the data according to the data model. For example: Customer ID Data quality testing includes number check, date check, precision check, data check , null check etc. |
Incremental ETL testing | This testing is done to check the data integrity of old and new data with the addition of new data. Incremental testing verifies that the inserts and updates are getting processed as expected during incremental ETL process. |
GUI/Navigation Testing | This testing is done to check the navigation or GUI aspects of the front end reports. |
How to Create ETL Test Case
ETL testing is a concept which can be applied to different tools and databases in information management industry. The objective of ETL testing is to assure that the data that has been loaded from a source to destination after business transformation is accurate. It also involves the verification of data at various middle stages that are being used between source and destination.
While performing ETL testing, two documents that will always be used by an ETL tester are
- ETL mapping sheets :An ETL mapping sheets contain all the information of source and destination tables including each and every column and their look-up in reference tables. An ETL testers need to be comfortable with SQL queries as ETL testing may involve writing big queries with multiple joins to validate data at any stage of ETL. ETL mapping sheets provide a significant help while writing queries for data verification.
- DB Schema of Source, Target: It should be kept handy to verify any detail in mapping sheets.
ETL Test Scenarios and Test Cases
Test Scenario | Test Cases |
---|---|
Mapping doc validation | Verify mapping doc whether corresponding ETL information is provided or not. Change log should maintain in every mapping doc. |
Validation |
|
Constraint Validation | Ensure the constraints are defined for specific table as expected |
Data consistency issues |
|
Completeness Issues |
|
Correctness Issues |
|
Transformation | Transformation |
Data Quality |
|
Null Validate | Verify the null values, where “Not Null” specified for a specific column. |
Duplicate Check |
|
Date Validation | Date values are using many areas in ETL development for
|
Complete Data Validation |
|
Data Cleanness | Unnecessary columns should be deleted before loading into the staging area. |
Types of ETL Bugs
Type of Bugs | Description |
---|---|
User interface bugs/cosmetic bugs |
|
Boundary Value Analysis (BVA) related bug |
|
Equivalence Class Partitioning (ECP) related bug |
|
Input/Output bugs |
|
Calculation bugs |
|
Load Condition bugs |
|
Race Condition bugs |
|
Version control bugs |
|
H/W bugs |
|
Help Source bugs |
|
Difference between Database Testing and ETL Testing
ETL Testing | Data Base Testing |
---|---|
Verifies whether data is moved as expected | The primary goal is to check if the data is following the rules/ standards defined in the Data Model |
Verifies whether counts in the source and target are matching
Verifies whether the data transformed is as per expectation |
Verify that there are no orphan records and foreign-primary key relations are maintained |
Verifies that the foreign primary key relations are preserved during the ETL | Verifies that there are no redundant tables and database is optimally normalized |
Verifies for duplication in loaded data | Verify if data is missing in columns where required |
Responsibilities of an ETL Tester
Key responsibilities of an ETL tester are segregated into three categories
- Stage table/ SFS or MFS
- Business transformation logic applied
- Target table loading from stage file or table after applying a transformation.
Some of the responsibilities of an ETL tester are
- Test ETL software
- Test components of ETL datawarehouse
- Execute backend data-driven test
- Create, design and execute test cases, test plans and test harness
- Identify the problem and provide solutions for potential issues
- Approve requirements and design specifications
- Data transfers and Test flat file
- Writing SQL queries3 for various scenarios like count test
Performance Testing in ETL
Performance Testing in ETL is a testing technique to ensure that an ETL system can handle load of multiple users and transactions. The primary goal of ETL Performance Testing is to optimize and improve session performance by identification and elimination of performance bottlenecks. The source and target databases, mappings, sessions and the system possibly have performance bottlenecks.
One of the best tools used for Performance Testing/Tuning is Informatica.
Automation of ETL Testing
The general methodology of ETL testing is to use SQL scripting or do “eyeballing” of data.. These approaches to ETL testing are time-consuming, error-prone and seldom provide complete test coverage. To accelerate, improve coverage, reduce costs, improve Defect detection ration of ETL testing in production and development environments, automation is the need of the hour. One such tool is Informatica.
Best Practices for ETL Testing
- Make sure data is transformed correctly
- Without any data loss and truncation projected data should be loaded into the data warehouse
- Ensure that ETL application appropriately rejects and replaces with default values and reports invalid data
- Need to ensure that the data loaded in data warehouse within prescribed and expected time frames to confirm scalability and performance
- All methods should have appropriate unit tests regardless of visibility
- To measure their effectiveness all unit tests should use appropriate coverage techniques
- Strive for one assertion per test case
- Create unit tests that target exceptions
Checkout – ETL Testing Interview Questions & Answers