Test Data의 개념과 데이터 생성부터 관리 방법 A-Z

1. 테스트 데이터란

테스트를 위한 데이터로 금융, 보험, B2B서비스 분야에서는 민감하게 다뤄지며, 실제 환경의 데이터는 가공되지 않아 테스트에 불편함이 있으며, 대용량에서 비롯되는 시간적 비용이 만만치 않기 때문에 테스트 데이터를 주제로 광범위하게 다뤄본다. 사실은 연도 데이터 입력에 대한 검증을 하다가 생각 없이 케이스 추가해서 데이터 관리에 대한 접근법을 찾아보게 되었다 :-)


1.1. Type of test data

테스트 데이터는 크게 두가지 형태로 나뉜다.

  • 케이스에 의한 입력 데이터
  • 테스트 대상의 상태 데이터: 케이스에 명시된 pre-condition을 충족하기 위한 데이터

1.2. How test data is generated

  • Manually
  • Data generation tool
  • From existing production

1.3. Requirement for testing data

  • 데이터명
  • 설명: 데이터의 역할과 목적에 대해 기술
  • 요구사항
  • 초기화 필요 여부: 테스팅 중 초기화가 필요할 수 있으므로 이에 대한 필요성
  • 보관 여부: 종료 후 보관 및 폐기 방법에 대한 기술
  • 담당자: 데이터를 준비하고 관리하는 담당자

2. 테스트 데이터 관리

2.1. Purpose and necessity of management

필요성

2016년 IBM 연구에 따르면 테스트 환경 구성 및 데이터 준비가 전체 단계에서 30~60%를 차지할 정도로 상당한 시간이 소모된다. 검색, 유지 보수, 생성을 위한 소요되는 시간도 있지만 접근 시 권한이 없거나 정책 및 접근 절차의 복잡성으로 기다리는 시간 증가, Large volumes of data, Long refreshment times의 원인이 크다.

 

테스트 데이터 관리 목적

  • 개발자와 테스터가 데이터에 접근할 수 있고 대용량 데이터를 추출 및 통계내기 위한 권한과 도구를 가지고 있을 수 있으며, 이 때 데이터 유출의 리스크를 완화하기 위함. (production 데이터를 복제해 사용하는 경우도 있음. 예를 들어, production 환경에 최대한 맞춰 성능 테스트 전략을 세우는 경우)
  • ‘적절한’(잘못되지 않은) 데이터를 ‘반복 가능’하게 해 효율적인 테스트를 가능케 함
  • 오브젝트 타입, 시스템 상태 등 다수의 DB에서 정의되는 속성을 명세함으로써 반복성을 보장

2.2. Considerations when generating test data

  • 현실적인 데이터: 너무 비현실적인 데이터는 무의미할 수 있다.
  • 예외 시나리오를 커버하는 데이터: Ex)상품 구매 시 할인 쿠폰을 준다 → 할인 쿠폰만 줘야 한다
  • 네거티브 데이터: 행복회로 테스팅은 항상 경계해야 하며, 부정적인 시나리오 시 발생하는 데이터 셋을 생성해야 할 수 있다.
  • 명확한 목적의 데이터: 목적에 맞는 데이터를 생성해야 한다. 테스트 데이터 요구사항서를 통해 목적을 기술해야 한다. Invalid한 데이터와 조합/보안(스크립트 코드나 취약점이 드러날 수 있는 데이터) 등. 아래 이미지 참고

2.3. Checklist for data management

  • 개인 식별 정보를 제거하라:

테스트 데이터에 실수로 개인 정보를 입력하여 하는 경우가 있으므로, blurring, substitution, shuffling, masking 등과 같은 기술을 적용하여 개인 정보를 제거해야 한다.(일반적으로 툴에서 지원되는 기능)

  • 데이터 유효성 검사:

새 기능 추가에 따라 데이터도 변경되야 한다. 따라서, 주기적으로 데이터가 유효한지, 추가 기능을 지원하는지 검사해야한다.

  • 정기적인 Refresh:

다른 데이터를 생성함으로써 노출되지 않았던 버그를 발견할 수 있다. 같은 데이터, 같은 케이스로는 발견할 수 없다.

  • 데이터 접근 관리:

개발자 및 테스트 팀이 주요한 데이터에 접근하는 방법을 알아야 한다. 그리고 접근해야 할 때 빨리 접근할 수 있어야 한다. 실환경 데이터를 접근할 때 고객이 원하지 않을 수도 있고, 데이터 획득까지 기다리는 시간이 길어서는 안된다.

 


3. 마치며

프로덕션 환경의 데이터를 직접적으로 사용하는 것은 피해야 하므로, 테스트 데이터를 만들어 사용한다. 이때 테스트 대상에 따라 테스트 데이터 생성 시 유의미하고 현실적인 데이터를 입력하는 방법은 기능 추가 및 변경에 따라 데이터도 변경 되어야 하며, 이는 TC 작성 뿐만 아니라 자동화 시에도 유용하게 사용되므로 툴을 이용해 관리하여 품질을 높이는 하나의 방안으로 활용 가치를 높여보자!

 

참고 링크:

https://www.softwaretestinghelp.com/tips-to-design-test-data-before-executing-your-test-cases/