출처: softwaretestingportal.com의 데이터 마이그레이션 튜토리얼 동영상, 인도
유튜브 Data Migration Testing Tutorial, https://www.youtube.com/watch?v=cmiJm-_GdVA
데이터 마이그레이션 테스팅이란?
마이그레이션 테스팅은 레가시 또는 현 시스템의 데이터를 새로운 타겟 시스템으로 마이그레이션 하는 프로세스를 검증한다. 최소한의(또는 0의) 다운 타임과 데이터 손실 없이 마이그레이션이 수행되는지 확인하고, 마이그레이션 후 애플리케이션의 모든 명세된 기능적 및 비기능적 측면이 손상 없이 온전한지 확인한다.
마이그레이션 테스팅은 아래의 목적을 가진다.
- 마이그레이션으로 인해 사용자에게 발생하는 모든 종류의 중단이나 불편을 피하거나 최소화한다. 예, 다운 타임, 데이터 손실
- 사용자가 애플리케이션의 모든 기능을 계속 사용할 수 있도록 보장한다.
- 레가시 애플리케이션이 지원하는 하드웨어 및 소프트웨어와 새 애플리케이션(또는 업그레이드된 애플리케이션)과의 호환성(compatibility)을 보장한다.
- 기존 기능이 레거시 애플리케이션에서 그랬던 것처럼 원활하게 작동하도록 보장한다.
- 테스트 동안 데이터 및 데이터 타입과 관련된 심각한 결함을 식별하고 수정한다.
- 마이그레이션 후에 성능 저하가 없는 것을 보장한다.
- 서버, 하드웨어, 소프트웨어 간의 커넥션(즉, 여러 다른 컴포넌트 간의 데이터 흐름)이 손상 없이 그대로 유지되는지 확인한다.
데이터 마이그레이션에서 테스팅 기법
데이터 마이그레이션 테스팅 기법이 두 가지 유형으로 분류된다.
데이터 유효성 테스트는 네 가지 측면을 다룬다.
- 완전성 테스트(Completeness tests): 타겟 데이터베이스에서 누락된 오브젝트를 식별한다.
- 외양 테스트(Appearance tests): 그래픽 사용자 인터페이스(GUI) 수준에서 오브젝트의 외양에 주안점을 둔다. 테스터가 소스 애플리케이션과 타겟 애플리케이션의 GUI 데이터를 보고 수동으로 오브젝트를 비교한다.
- 통합 테스트(Integration tests): 마이그레이션 후에 애플리케이션 간의 연결성(connectivity) 및 링킹(linking)이 제대로 작동하는지 확인한다.
- 처리성 테스트(Processability tests): 마이그레이션된 데이터를 처리하고, 타겟 애플리케이션과 불러온(imported) 데이터의 성공적인 연결성(connectivity)을 보장한다.
마이그레이션 실행 테스트는 데이터 마이그레이션 프로그램들이 원활하게 작동하고 조화롭게 통합되도록 보장한다. 마이그레이션 실행 테스트의 두 가지 서브클래스가 서로 다른 측면에 중점을 둔다.
- 전체 마이그레이션 실행 테스트(Full migration run tests): 전체 데이터 세트로 모든 마이그레이션 프로그램을 실행하는 테스트이다.
- 부분 마이그레이션 실행 테스트(Partial migration run tests): 마이그레이션 개발 동안 개발 주기의 회전 시간(round time)을 단축한다. 더 적은 비즈니스 오브젝트를 마이그레이션 하는 것은 시험 마이그레이션(trial migration) 결과를 더 빠르게 제공한다는 의미이다(예를 들어, 이틀 대신 몇 시간 내로).
데이터 마이그레이션에서 테스팅 단계(Testing Phases)
단계1 사전-마이그레이션 테스팅(Pre-migration testing)
마이그레이션이 수행되기 전 사전 마이그레이션 테스트 단계에서 아래 테스팅 활동이 수행되어야 한다.
- 데이터의 범위가 명확하게 이해되었는지 확인한다. 예, 어떤 데이터가 포함되어야 하는지, 어떤 데이터가 제외되어야 하는지
- 목적지(destination)와 로드(load) 프로세스를 이해하고 있는지 확인한다.
- 레거시 애플리케이션과 새 애플리케이션 간에 데이터 매핑을 수행한다.
- 데이터 스키마를 알고 있는지 확인한다. 예, 오리지널 데이터 소스와 타겟 시스템 양쪽에 대한 필수 필드, 필드 이름, 필드 타입, 데이터 타입 등등
- 데이터 정제 요구사항(data cleansing requirements)을 이해하고 있는지 확인한다.
- 타 시스템과의 인터페이스 또는 시스템에 데이터를 제공하는 2차 공급자(secondary suppliers)와의 모든 인터페이스를 이해하고 있는지 확인한다.
- 레거시 시스템에 있는 테이블을 기록해 둔다. 만약 테이블이 삭제되거나 추가되는 경우 마이그레이션 후에 이를 확인한다.
- 레거시 애플리케이션의 각 테이블 레코드와 뷰를 기록해 둔다.
- 새 애플리케이션의 새로운 조건에 대한 테스트케이스, 테스트 시나리오, 유스케이스를 준비한다.
- 테스트케이스와 시나리오를 실행하고 결과 로그를 저장한다. 마이그레이션 후에 이 동일한 테스트를 수행하여 레거시의 데이터와 기능이 손상 없이 온전한 것을 확인한다.
- 데이터 및 레코드의 개수를 명확하게 기록해야 한다. 마이그레이션 후 이를 체크하여 데이터 손실이 없는지 확인한다.
- 사용자 인터페이스에 대한 매핑이 올바른지 확인한다.
- 비즈니스 프로세스에 대한 매핑이 올바른지 확인한다.
- 필드 세부 정보를 사용하여 테스트 도구 구성 및 스크립트 생성을 한다.
- 테스트를 위한 데이터 서브셋 세부 정보를 식별한다.
- 모든 비즈니스 케이스, 유저스토리, 유스케이스를 이해하고 있는지 확인한다.
단계2 데이터 정제(data cleansing)
데이터가 올라가 있고 유지/관리되는 시스템 상에서 데이터 정제를 수행하는 것이 매우 중요하다. 다음의 데이터 정제 태스크들을 계획해야 한다.
- 에러 타입을 이해한다. 예, 빈 필드(blank field), 너무 긴 데이터 길이, 잘못된 문자(bad characters)
- 데이터를 체킹하는 방법을 식별한다. 예, SQL을 사용하여 데이터베이스를 통해 조회하거나 또는 데이터 마이그레이션 도구를 사용하여 확인
- 데이터 종속성(data dependencies)을 이해한다. 즉, 한 테이블의 데이터를 변경하면 다른 링크 테이블의 데이터에 영향을 준다.
- 데이터 이슈를 해결한다.
- 데이터의 개수를 확인한다.
단계3 사후-마이그레이션 테스팅(post-migration testing)
성공적으로 마이그레이션이 이루어지고 나면 마이그레이션 후 테스트가 시작된다. 알려진 비즈니스 흐름을 테스트하는 것 외에도 테스터가 다음 테스트 활동을 수행해야 한다.
- 계획된 다운 타임 내에 레가시의 모든 데이터가 새로운 애플리케이션으로 마이그레이션되었는지 확인한다. 예를 들어, 레거시와 새 애플리케이션 간의 레코드 수를 비교한다.
- 새 시스템에 따른 모든 스키마 변경 사항이 업데이트되었는지 확인한다. 레거시에서 새 애플리케이션으로 마이그레이션된 데이터는 그 값과 포맷을 유지해야 한다.
- 비즈니스 데이터 타입과 기술적 데이터 타입을 포함하여 마이그레이션된 데이터 타입을 테스트한다.
- 애플리케이션 내에서의 데이터 흐름을 확인한다.
- 가장 먼저 지원되는(사용자가 가장 처음 접하게 되는) 기능을 체크하고 검증한다.
- 레거시 데이터의 중복성을 확인한다.
- 경계 값 분석, 동등 분할, 오류 추측 등을 사용하여 유효성 규칙(validation rules) 위반을 시도한다.
- 필수 데이터를 우회한다. 필수 데이터 필드를 채우지 않고 계속 진행을 시도한다.
- 데이터 쓰기가 진행되는 중에 데이터 락(lock)을 확인한다. 다수의 사용자가 데이터베이스 내의 동일한 레코드에 액세스하는 것이 불가능해야 한다.
- 데이터베이스 보안 및 데이터 무결성을 확인한다.
- 새로운 사용자를 시스템 상에서 생성하고 새로 생성된 사용자가 기능에 액세스할 수 있는지 확인하는 테스트를 한다.
- 데이터 분리(data segregation): 새 애플리케이션에서 데이터를 삭제하는 것이 레거시의 데이터도 삭제하는 결과를 낳으면 안된다. 마찬가지로 새 애플리케이션에서 데이터 추가가 레거시 시스템에 다시 반영되어서는 안 된다.
- 성능 시험: 마이그레이션으로 인해 시스템 성능이 저하되지 않았고, 요구 성능에 따라 데이터에 액세스할 수 있는지 확인한다.
- 보안 테스트: 데이터에 대한 액세스는 적절하게 제한되어야 한다.
- 사용성: 최종 사용자를 위해 마이그레이션된 기능의 사용 용이성을 확인한다.
- 이전 버전과의 호환성 테스트(Backward compatibility testing): 도입된 새로운 시스템이 구 시스템과 호환되는지 테스터가 호환성을 확인해야 한다.
- 롤백 테스트(Rollback testing): 부정적 테스트(negative testing)의 일환으로 마이그레이션 실패 테스트 시나리오가 설계되어야 한다. 마이그레이션을 수행하는 동안 이슈가 있거나 마이그레이션 중 어느 시점에서 마이그레이션 실패가 발생하는 경우를 대비하여 롤백 메커니즘을 테스트할 필요가 있다.
데이터 마이그레이션 테스팅에서의 리스크
마이그레이션 테스트에서는 주로 데이터에 관한 어려움과 리스크가 있다.
- 데이터 품질(Data Quality): 레가시 애플리케이션에서 사용해 온 데이터가 업그레이드된 애플리케이션에서는 품질이 낮은 경우를 발견할 수 있다. 이 경우 데이터 품질이 비즈니스 표준을 충족하도록 개선되어야 한다. 이를 해결하는 방법 중 일부는 최종 마이그레이션 전에 모의 마이그레이션(mock migrations) 및 파일럿 마이그레이션(pilot migrations)을 실행하는 것인데, 이를 통해 이전 단계들에서는 보이지 않던 에러가 모습을 드러낼 수 있다.
- 데이터 손실(Data Loss): 레거시에서 업그레이드된 애플리케이션으로 마이그레이션하는 동안 데이터가 손실될 수도 있다. 이런 일이 필수 필드(mandatory fields) 또는 비필수 필드(non-mandatory fields)에서 있을 수 있는데, 비필수 필드에서 데이터 손실이 있다면 다시 업데이트될 수 있으므로 리스크가 더 낮다. 반면 필수 필드 데이터가 손실되면 레코드 자체가 무효화(void) 되어 이로 인해 데이터가 손실이 발생할 수 있다.
- 널 데이터 해석(Null Data Translation): Null 데이터는 타겟에서 공백(space)이나 기본값(default values)이 아니라 null 자체로 변환되어야 한다. 애플리케이션이 null 유효성에 대한 검사를 수행하기도 한다.
- 데이터 타입과 데이터 불일치(Data Type and Data Mismatch): 레거시에서 업그레이드된 애플리케이션으로 마이그레이션된 데이터 및 데이터 타입이 새 애플리케이션에서 일치하지 않을 수 있다. 이는 데이터 타입이나 데이터 스토리지 형식에 변경이 있기 때문이거나, 데이터 사용 목적이 재정의 되었기 때문일 수 있다. 따라서 데이터 타입이 반드시 올바르게 매핑되어야 한다.
- 데이터의 잘림 및 정밀도(Truncation and Precision of Data): 마이그레이션할 데이터가 일부만 타겟 시스템으로 이동할 수도 있다. 예, 소스 데이터에 추가적인 패딩 공간이 있거나 바이트 수가 더 적은 경우
- 잉여 레코드(Extra Records): 여러 다른 데이터 소스로부터 중복 레코드가 올 수 있다. 따라서 타겟 시스템에 데이터를 로드하기 전에 데이터 필터링 및 변환을 수행할 필요가 있다.
- 데이터 볼륨(Data Volume): 거대한 양의 데이터를 다운 타임 윈도우 이내에 마이그레이션하는 작업은 많은 시간을 필요로 한다.
- 테스팅 랩에서 실시간 환경 시뮬레이션: 테스터가 실제 데이터와 실제 시스템으로 애플리케이션을 테스트할 때 전혀 다른 종류의 이슈에 직면할 수 있다. 따라서 데이터 샘플링, 실제 환경 복제, 마이그레이션에 관련된 데이터 볼륨 식별 등이 데이터 마이그레이션 테스트를 수행하는 동안 상당히 중요하다.
'시스템유형별 > 마이그레이션' 카테고리의 다른 글
데이터 마이그레이션 기본 개념 by softwaretestingportal.com (0) | 2022.01.17 |
---|---|
실패 사례 - 미국 National Grid의 SAP 시스템 문제 (0) | 2018.07.27 |
영상자료 - ETL 테스팅: 100% 데이터 검증 달성 방법 by RTTS (0) | 2018.07.25 |
문서요약 - TMAP 방법론 기반 마이그레이션 테스팅 by Baarda (0) | 2018.07.23 |
페이퍼요약 - 데이터 마이그레이션의 자동화된 데이터 검증 by Manjunath (0) | 2018.07.19 |