다음을 통해 공유


데이터 생성기를 사용하여 데이터베이스의 테스트 데이터 생성

Visual Studio Premium을 사용하여 데이터베이스 프로젝트에 있는 데이터베이스 개체의 동작을 확인하는 데 필요한 테스트 데이터를 만들 수 있습니다. 데이터베이스의 스키마에 적합하지만 프로덕션 데이터와 관련이 없는 데이터를 생성할 수 있습니다. 이 방법은 프로덕션 데이터의 개인 정보나 보안을 보호하는 데 유용할 수 있습니다.

특정 테이블 및 열의 데이터가 생성되는 방식에 대한 정보를 지정하는 데이터 생성 계획을 정의합니다. 각 열에 대해 특정 형식의 데이터를 생성하는 데이터 생성기를 지정합니다.

데이터베이스 프로젝트에 데이터 생성 계획을 만들면 해당 계획은 프로젝트의 스키마를 기반으로 하게 됩니다. 데이터 생성 계획을 만든 다음 스키마를 변경하면 계획을 업데이트할지 묻는 메시지가 표시됩니다.

중요

스키마 변경 내용을 기반으로 데이터 생성 계획을 업데이트하지 않으면 계획을 계속 수정할 수 없습니다. 데이터 생성 계획을 닫은 다음 다시 열어야만 이 메시지가 다시 표시됩니다.

데이터베이스 단위 테스트를 실행할 경우 각 테스트 프로젝트에 대해 서로 다른 데이터 생성 계획을 지정할 수 있습니다. 따라서 각 테스트 그룹에 대해 데이터베이스를 서로 다른 상태로 초기화할 수 있습니다.

데이터 생성기

Visual Studio Premium에서는 여러 가지 유형의 데이터를 생성하기 위한 다양한 데이터 생성기가 기본적으로 제공됩니다. 예를 들어 Integer 생성기는 임의의 정수 값을 제공하고, String 생성기는 임의의 문자열을 제공하며, 정규식 생성기는 지정한 패턴과 일치하는 문자열을 제공합니다. 표준 데이터 생성기에 대한 자세한 내용 및 해당 생성기의 전체 목록을 보려면 표준 데이터 생성기 형식열의 데이터 생성 정보 지정을 참조하십시오.

Visual Studio Premium에 포함된 생성기로 요구 사항을 만족하는 데이터가 제공되지 않는 경우 사용자 지정 생성기를 만들 수 있습니다. 예를 들어 데이터베이스에 다른 열을 참조하는 CHECK 제약 조건이 들어 있는 열이 있는 경우 사용자 지정 데이터 생성기를 만들 수 있습니다. 자세한 내용은 사용자 지정 데이터 생성기를 통해 특수 테스트 데이터 생성을 참조하십시오.

SPARSE 열과 COLUMN_SET이 들어 있는 테이블의 데이터를 생성하려고 하면 오류가 발생할 수 있습니다. 자세한 내용은 데이터 생성 문제 해결을 참조하십시오.

팀 환경에서의 데이터 생성 계획

데이터 생성 계획은 지정한 각 테이블의 각 열에 대한 데이터 생성을 제어하는 구성 정보 및 데이터베이스 스키마 정보가 들어 있는 XML 파일입니다. 약 40개의 테이블이 포함된 데이터베이스에 대한 데이터 생성 계획은 약 8MB로 100,000줄 이상을 포함할 수 있습니다.

.dgen 파일에 대한 변경 내용은 Team Foundation 버전 제어 또는 다른 버전 제어 시스템을 사용하여 자동으로 병합할 수 없습니다. 큰 XML 파일을 수동으로 병합하는 데 사용해야 하는 프로세스는 어려우며 오류가 발생하기 쉽습니다. 변경 작업을 수행해야 하는 경우 데이터 생성 계획을 단독 체크 아웃하면 데이터 생성 계획과 관련된 문제를 최소화할 수 있습니다.

데이터 생성기 보안

팀 환경에서는 데이터 생성 계획과 사용자 지정 데이터 생성기를 공유할 수 있습니다. 공유 데이터 생성 파일을 공유하거나 사용하려면 다음과 같은 보안 위험을 고려해야 합니다.

  • 데이터 생성 계획의 스키마 정보
    데이터 생성 계획을 만들 때 중요한 거래 기밀 정보가 들어 있는 테이블의 스키마가 .dgen 파일에 포함될 수 있습니다. .dgen 파일을 공유하면 이 파일을 공유하는 사용자가 해당 스키마를 볼 수 있습니다. 따라서 데이터 생성 계획은 신뢰할 수 있는 사용자와만 공유해야 합니다.

  • 데이터 생성 계획의 악성 코드
    데이터 생성 계획에 데이터 바운드 생성기가 포함된 경우 이 계획을 실행할 때 실행되는 Transact-SQL 쿼리를 작성하게 됩니다. 따라서 이 생성기를 사용할 경우 데이터 생성 계획 내에서 임의의 Transact-SQL이 실행될 수 있습니다. 데이터 생성 계획의 출처는 항상 신뢰할 수 있어야 하며, 최종 사용자가 출처를 신뢰할 수 없는 데이터 생성 계획을 실행하지 않도록 경고해야 합니다.

  • 연결 정보 및 사용자 지정 데이터 생성기
    모든 사용자 지정 데이터 생성기는 런타임에 데이터베이스 연결 문자열에 액세스할 수 있습니다. 악성 사용자 지정 생성기를 통해 연결 문자열 정보가 노출될 수 있습니다. 사용자 지정 데이터 생성기의 출처는 항상 신뢰할 수 있어야 하며, 최종 사용자가 출처를 신뢰할 수 없는 사용자 지정 데이터 생성기를 사용하지 않도록 경고해야 합니다.

  • 사용자 지정 데이터 생성기의 악성 코드
    사용자 지정 데이터 생성기는 임의의 코드가 포함될 수 있는 클래스입니다. 사용자 지정 데이터 생성기를 사용하면 현재 사용자와 같은 권한으로 실행됩니다. 이를 통해 악성 코드가 FullTrust 모드로 실행될 수 있습니다. 사용자 지정 데이터 생성기의 출처는 항상 신뢰할 수 있어야 하며, 최종 사용자가 출처를 신뢰할 수 없는 사용자 지정 데이터 생성기를 사용하지 않도록 경고해야 합니다.

  • 사용자 지정 데이터 생성기용 설치 관리자의 악성 코드
    사용자 지정 데이터 생성기를 설치하는 배포 프로젝트를 만들 수 있습니다. 배포 프로젝트에는 임의의 코드가 포함될 수 있습니다. 사용자 지정 데이터 생성기용 설치 프로그램을 실행하는 경우 해당 프로그램은 높은 권한으로 실행됩니다. 이를 통해 악성 코드가 높은 권한으로 실행될 수 있습니다. 사용자 지정 데이터 생성기 설치 관리자의 출처는 항상 신뢰할 수 있어야 하며, 최종 사용자가 출처를 신뢰할 수 없는 사용자 지정 데이터 생성기 설치 프로그램을 실행하지 않도록 경고해야 합니다.

일반 작업

일반 작업

지원 내용

실습: 기초 연습 과정을 따라 간단한 데이터베이스 단위 테스트를 만들고 실행하는 방법을 익힐 수 있습니다.

데이터 생성 계획 만들기: 각 단위 테스트 프로젝트나 특정 응용 프로그램 테스트에 대한 데이터 생성 계획을 만듭니다. 기본적으로 모든 열에서 지정한 다른 데이터베이스의 데이터가 다시 사용되도록 하는 데이터 생성 계획을 정의할 수도 있습니다.

이전 버전의 데이터 생성 계획 업그레이드: 이전 버전의 Visual Studio Premium에서 만든 데이터 생성 계획을 사용할 수 있습니다. 그러나 이러한 계획을 여는 즉시 계획을 업그레이드해야 합니다.

생성할 테이블 지정: 모든 테이블에 대한 데이터를 생성하거나 지정한 테이블에 대한 데이터만 생성할 수 있습니다. 각 테이블에 대해 생성할 행 수를 지정할 수 있습니다. 또는 다른 테이블에 대해 생성하는 행 수에 대한 비율로 행을 생성할 수 있습니다.

지정한 테이블의 각 열에 대해 데이터가 생성되는 방식 구성: 각 열에 대한 데이터 생성기 형식을 지정합니다. 데이터 값의 범위에 대한 제약 조건을 지정할 수도 있습니다. 보다 고급 데이터 생성기의 경우 생성하는 데이터를 세부적으로 조정할 수 있는 추가 구성 정보를 지정할 수 있습니다.

생성되는 데이터 미리 보기: 데이터베이스에 데이터를 쓰기 전에 데이터 생성 계획에 포함된 테이블의 데이터를 미리 볼 수 있습니다. 데이터를 미리 보면 데이터를 반복적으로 생성하지 않고도 데이터 생성 계획을 조정할 수 있습니다.

테스트 데이터 생성: 생성할 데이터를 미리 보고 확인한 후 데이터 생성 계획을 실행하여 테스트 데이터를 생성할 수 있습니다. 단위 테스트를 실행할 때마다 데이터가 자동으로 생성되도록 단위 테스트 프로젝트를 구성할 수도 있습니다.

데이터 생성 계획 체크 인: 단위 테스트를 팀과 공유하려면 버전 제어에 체크 인해야 하는 것과 마찬가지로 데이터 생성 계획도 체크 인해야 합니다.

데이터 생성기 기본값 및 옵션 변경: 임의의 시드와 삽입할 행 수에 대한 기본값을 지정할 수 있습니다. 미리 보기 창에 표시할 행 수, 작업이 실패하기 전에 개별 테이블에 대해 데이터가 생성되는 동안 표시될 수 있는 허용 가능한 최대 오류 수 등 데이터 생성기의 특성을 제어하는 옵션을 지정할 수도 있습니다.

문제 해결: 데이터 생성 계획을 만들고 사용할 때 발생하는 일반적인 문제를 해결하는 방법에 대해 자세히 알아보십시오.

관련 시나리오