저는 몇몇 중소기업이 ETL 프로세스에 대한 테스트를 수행하지 않지만 소프트웨어 엔지니어링의 관점에서는 차선책 인 것으로 알고 있습니다.ETL 프로세스를 테스트 (단위 테스트)하는 방법은 무엇입니까?
사람들은 일반적으로 ETL 프로세스에서 테스트/유닛 테스트/기능 테스트를 어떻게합니까?
덕분에 많은
저는 몇몇 중소기업이 ETL 프로세스에 대한 테스트를 수행하지 않지만 소프트웨어 엔지니어링의 관점에서는 차선책 인 것으로 알고 있습니다.ETL 프로세스를 테스트 (단위 테스트)하는 방법은 무엇입니까?
사람들은 일반적으로 ETL 프로세스에서 테스트/유닛 테스트/기능 테스트를 어떻게합니까?
덕분에 많은
일반적으로 ETL 테스트가 문제입니다. 더 정확하게, 테스트 isnt 문제, 문제는 합리적인 테스트 데이터를 얻는 방법입니다. ETL은 일반적으로 프로덕션 데이터에서 테스트됩니다. 보안 문제를 제외하고 프로덕션 데이터의 문제점은 ETL의 기능을 충분히 (일반적으로 프로덕션 데이터 샘플에서 다루지 않는 비즈니스 규칙의 약 40 %) 다루지 않으며 처리하는 데 너무 많은 시간이 걸리는 것입니다.
최근 우리는 비즈니스 규칙 사양의 소스 테이블/파일을 기반으로 테스트 데이터를 생성하는 테스트 데이터 생성기 (자세한 내용은 Informatica Market Place의 GTL QAceGen : 비즈니스 논리 기반 데이터 생성기를 찾으십시오)를 개발했습니다. 도구는 적용되는 외래 키를 고려하며 모든 주요 ETL 및/또는 데이터베이스에서 작동합니다.
이 도구는 모든 비즈니스 규칙의 100 %를 커버하는 테스트주기를 최소 50 % (수동 테스트와 비교하여) 단축하는 데 도움이됩니다. 또한 매우 상세한 보고서를 생성하며 더 중요한 것은 이러한 테스트를 언제든지 반복 할 수 있다는 것입니다 (예 : 회귀 테스트).
우리는 최근 지배 보드 '당신은 단위 테스트가 있어야합니다'그래서 우리는 우리의 최선의 노력 요구하는 프로젝트에서 일했다.
우리에게 효과가 있었던 것은 각 ETL 솔루션을 QA/테스트 패키지로 시작하고 끝내는 것이 었습니다.
감사 패키지에 예기치 않은 오류가 발견되어 감사 테이블에 로그인 한 다음 전체 패키지 작업을 중지하기 위해 이벤트가 발생했습니다. 예기치 않은 데이터로 실행하는 것이 좋지 않은 것으로 나타났습니다. 데이터.
시작 패키지는 db 스키마 및 데이터 온 전성 검사를 수행합니다. 데이터 완전성은 원본 시스템에서 참조 무결성이 부족하여 중복되거나 누락 된 데이터를 확인하는 작업을 포함합니다. 스키마 통합 검사를 통해 연속 통합 중에 적용되지 않은 스키마 변경 사항이 발견되었음을 확인했습니다.
최종 패키지는 변환 결과를 확인합니다. 이들은 포함 : 소스 사이
이러한 테스트의 대부분은 데이터베이스의 내장 스키마 개체를 사용하는 SQL 문이므로 작성하기가 번거롭지 않았습니다.
또한 개발 프로세스의 일부로 우리가 수행 한 변환의 최종 결과가있는 뷰를 만들 것입니다. 우리는 패키지 변환을 검증하기 위해 이러한 뷰를 사용할 것입니다.
각 검사는 우리의 특별 감사 테이블에 레코드를 생성했습니다. 그렇게함으로써 우리는 거버넌스를 충족시키기 위해 각 프로세스를 실행 한 모든 테스트와 점검의 포괄적 인 목록을 제공 할 수있었습니다.
(우리는 더미 테이블을 생성하고 테스트를 실행 한 다음 적절한 감사 레코드가 작성되었음을 확인함으로써 각 QA 테스트를 단위 테스트 할 별도의 패키지 세트를 가지고있었습니다 .Nick이 말했듯이 이것은 많은 것이 었습니다. 작업의 실제 값이 거의 없음)
각 ETL 절차에 대해 입력 데이터 집합과 예상 결과 데이터 집합을 정의한 시스템을 설정했습니다. 그런 다음 Robot Framework을 사용하여 첫 번째 부분이 입력 데이터 세트를 소스 데이터 테이블에 삽입하고 두 번째 부분이 ETL을 실행하며 세 번째 부분이 실제 결과를 다음과 비교하는 세 가지 파트 테스트를 실행하는 시스템을 작성했습니다. 우리의 예상 결과.
이것은 잘 작동하지만 몇 가지 단점이 있습니다. 먼저, 각 작업을 수행하는 각 ETL 프로 시저에 대해 수동으로 테스트 데이터 세트를 만들고 두 번째로 "예상치 못한"입력 테스트 완료되지 않았습니다.
자동 단위 테스트의 경우 전체 DW의 빌드를 자동으로 설치할 수있는 별도의 환경이 있습니다.
빈 테스트 데이터베이스를 생성하고 테스트 케이스 (데이터 소스에서)를 실행하고 ETL을 실행 한 다음 대상 테스트 데이터베이스에서 결과 데이터를 테스트해야합니다. 응용 프로그램 단위 테스트보다 훨씬 복잡한 이유는 무엇입니까 –
@ Nick.McDermaid 정보 주셔서 감사합니다 –