다음을 통해 공유


연습: 격리된 개발 환경을 위한 기준 설정

업데이트: 2007년 11월

이 연습에서는 만들어진 데이터베이스 프로젝트를 버전 제어에서 관리합니다. 데이터베이스 프로젝트에는 프로덕션 서버의 스키마 정의와 일치하는 스키마 정의가 포함되어 있습니다. 해당 데이터베이스 프로젝트에서의 개발 작업이 시작되기 전에 데이터베이스 단위 테스트 설정, 데이터 생성 계획 정의, 테스트 데이터 생성 및 이러한 테스트의 실행을 수행하여 품질 기준을 설정할 수 있습니다. 테스트는 데이터베이스를 빌드하여 격리된 개발 환경에 배포하고 생성된 데이터로 데이터베이스를 채운 다음 단위 테스트를 실행하여 결과를 보고합니다.

이 연습에서 수행할 작업은 다음과 같습니다.

  • 격리된 개발 환경에 대한 빌드 설정을 사용자 지정

  • 데이터베이스를 빌드하여 격리된 개발 환경에 배포

  • 데이터베이스 프로젝트가 포함하는 저장 프로시저에 대한 단위 테스트를 정의

  • 테스트 데이터를 생성하고 단위 테스트를 빌드 및 실행

  • 단위 테스트를 솔루션의 일부로 버전 제어에서 관리하여 개발 팀과 공유

사전 요구 사항

Visual Studio Team System Database Edition이 설치되어 있으며 Microsoft SQL Server 2005용 AdventureWorks 샘플 데이터베이스에 액세스할 수 있어야 합니다. 또한 연습: 격리된 데이터베이스 개발 환경 만들기의 단계를 완료해야 합니다.

격리된 개발 환경에 대한 빌드 설정을 사용자 지정하려면

  1. AdvWorksSandbox 솔루션이 솔루션 탐색기에 열려 있는 경우 4단계로 이동합니다.

  2. 파일 메뉴에서 열기를 가리킨 다음 프로젝트/솔루션을 클릭합니다.

    프로젝트 열기 대화 상자가 나타납니다.

  3. AdvWorksSandbox 솔루션을 클릭한 다음 열기를 클릭합니다. 기본적으로 이 솔루션은 My Documents\Visual Studio 2005\Projects\AdvWorksSandbox에 있습니다.

    AdvWorksSandbox 솔루션이 솔루션 탐색기에서 열립니다.

  4. 솔루션 탐색기에서 AdvWorksSandbox 노드를 클릭합니다.

  5. 프로젝트 메뉴에서 AdvWorksSandbox 속성을 클릭합니다.

  6. 빌드 탭을 클릭합니다.

  7. 대상 연결 옆에 있는 편집을 클릭합니다.

    연결 속성 대화 상자가 표시됩니다.

    여기서 격리된 로컬 개발 환경에 대한 연결 문자열을 사용자 지정할 수 있습니다. 권장되는 프로세스로는 각 데이터베이스 개발자가 데이터베이스의 고유한 복사본에서 작업하는 것으로 이렇게 하면 다른 팀 멤버에게 부정적인 영향을 주지 않으면서 변경을 수행할 수 있습니다. 개발자는 변경 내용을 테스트하여 팀과 공유할 준비가 되면 중앙 버전 제어 시스템을 통해 변경 내용을 공유합니다. 연습: 격리된 데이터베이스 개발 환경 만들기에서는 대상 데이터베이스 이름이 설정되었지만 연결은 설정되지 않았습니다.

  8. 격리된 개발 환경에 사용할 서버의 이름을 입력하거나 클릭합니다. 예를 들어 로컬 인스턴스를 사용하려면 (local)을 입력합니다.

  9. 데이터베이스 서버에 연결하는 데 사용할 인증 형식을 클릭합니다.

    기본적으로 Windows 인증이 지정됩니다.

  10. 확인을 클릭합니다.

    대상 연결에서 연결 정보가 표시됩니다.

  11. 파일 메뉴에서 선택한 항목 저장을 클릭하여 변경 내용을 데이터베이스 프로젝트 속성에 저장합니다.

데이터베이스를 빌드하여 격리된 개발 환경에 배포하려면

  1. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    데이터베이스 프로젝트 빌드 및 결과가 출력 창에 나타납니다.

  2. 솔루션 탐색기에서 AdvWorksSandbox 노드를 클릭합니다.

  3. 빌드 메뉴에서 ProjectName 배포를 클릭합니다. 또한 AdvWorksSandbox 노드를 마우스 오른쪽 단추로 클릭한 다음 배포를 클릭할 수 있습니다.

    데이터베이스 프로젝트가 빌드되고 빌드 스크립트를 생성한 다음 데이터베이스 프로젝트 속성에 지정한 격리된 데이터베이스 개발 서버에 해당 스크립트를 배포합니다. 다음에는 격리된 개발 환경에 대한 테스트 데이터를 생성해야 합니다.

단위 테스트 정의

일반적으로 모든 저장 프로시저, 함수 및 트리거에 대한 단위 테스트를 정의합니다. 이 연습에서는 예제로 단위 테스트 하나만 정의합니다. ufnLeadingZeros 함수 및 dbo.uspGetManagerEmployees 저장 프로시저에 대한 테스트를 정의합니다.

ufnLeadingZeros 함수는 정수를 받아서 앞에 오는 0으로 채워진 해당 정수의 VARCHAR(8) 문자열 표현을 반환합니다. 이 함수에 값을 전달하여 예상한 결과가 반환되는지 테스트할 수 있습니다.

uspGetManagerEmployees 저장 프로시저는 직원 식별자가 전달되며 식별자가 지정된 관리자를 통해 보고하는 모든 직원(전체 계층)을 반환합니다. 동일한 시드 값이 제공된 경우 동일한 테스트 데이터를 데이터 생성기에서 생성하므로 반환되어야 하는 행 수를 알 수 있습니다. 이 테스트는 매우 간단합니다. 실제 프로젝트에서는 더 자세한 테스트를 만들어 올바른 직원이 반환되었는지 확인할 수 있습니다.

단위 테스트를 만들려면

  1. 보기 메뉴에서 스키마 뷰를 클릭합니다.

    스키마 뷰가 아직 표시되지 않은 경우 표시됩니다.

  2. 스키마 뷰에서 저장 프로시저 폴더를 마우스 오른쪽 단추로 클릭한 다음 단위 테스트 만들기를 클릭합니다.

    단위 테스트 만들기 대화 상자가 표시됩니다.

  3. 현재 선택 영역 트리를 확장하고 dbo.uspGetManagerEmployees 저장 프로시저와 dbo.ufnLeadingZeros 함수에 대한 확인란을 선택합니다. 선택한 다른 모든 저장 프로시저나 함수에 대한 확인란의 선택을 취소합니다.

    참고:

    프로젝트에 대한 실제 기준을 설정하려면 데이터베이스의 모든 함수, 저장 프로시저 및 트리거에 대한 단위 테스트를 만듭니다. 이 연습에서는 하나의 저장 프로시서와 하나의 함수에 초점을 두어 해당 프로세스를 설명합니다.

  4. 프로젝트에서 "새 Visual C# 테스트 프로젝트 만들기..."를 클릭합니다.

  5. 새 프로젝트 이름에 AWSandboxTestProject를 입력한 다음 확인을 클릭합니다.

    단위 테스트 프로젝트가 만들어지고 단위 테스트에 대한 프로젝트 구성 대화 상자가 표시됩니다.

  6. 데이터베이스 연결에서 AdvWorksSandbox에 대한 연결을 클릭합니다.

  7. 배포에서 테스트를 실행하기 전에 자동으로 데이터베이스 프로젝트 배포 확인란을 선택합니다.

  8. 데이터베이스 프로젝트에서 AdvWorksSandbox.dbproj를 클릭합니다.

  9. 데이터베이스 상태에서 단위 테스트를 실행하기 전에 테스트 데이터 생성 확인란을 선택합니다.

  10. 데이터베이스 상태 목록에서 AWGenPlan.dgen을 클릭합니다.

  11. 아직 선택하지 않은 경우 테스트 데이터를 생성하기 전에 데이터베이스를 지웁니다. 확인란을 선택한 다음 확인을 클릭합니다.

    데이터베이스 단위 테스트 프로젝트가 만들어지고 솔루션에 추가됩니다. 데이터베이스 단위 테스트 디자이너가 열리며 테스트 조건을 수정하고 테스트를 제작할 수 있습니다.

    참고:

    테스트 구성을 수정해야 하는 경우 테스트 메뉴를 열고 데이터베이스 테스트 구성을 클릭합니다. 프로젝트 구성 대화 상자가 나타나고 구성을 변경할 수 있습니다.

    다음에는 테스트 조건을 지정하고 테스트를 작성합니다.

ufnLeadingZeros 함수에 대한 단위 테스트를 정의하려면

  1. 데이터베이스 단위 테스트 디자이너의 테스트 목록에서 dbo.ufnLeadingZeros를 클릭합니다.

  2. 두 번째 목록에 "Test"가 표시되는지 확인합니다.

  3. 디자이너의 위쪽 창에 있는 T-SQL(Transact-SQL) 문을 다음으로 바꿉니다.

    -- db unit test for dbo.ufnLeadingZeros
    DECLARE @RC VARCHAR (8),
    @Value INT
    
    SELECT @RC = NULL,
    @Value = 27
    
    SELECT @RC = [dbo].[ufnLeadingZeros]( @Value)
    
    IF @RC <> '00000027' 
    RAISERROR(N'ufnLeadingZero: expected "00000027" but got %s.', 16, 1, @RC)
    
    SELECT RC=@RC
    
  4. 테스트 조건 창에서 해당 유형이 결과 불충분인 테스트 조건을 클릭하고 테스트 조건 삭제(x)를 클릭하여 삭제합니다.

  5. 테스트 조건 창의 목록에서 행 개수를 클릭한 다음 테스트 조건 추가(+)를 클릭하여 행 개수 테스트 조건을 추가합니다.

  6. 속성 창에서 행 개수 속성을 1로 설정합니다.

    테스트가 강제로 실패하게 하려면 @Value를 27에서 다른 값으로 변경합니다.

uspGetManagerEmployees 저장 프로시저에 대한 단위 테스트를 정의하려면

  1. 데이터베이스 단위 테스트 디자이너의 테스트 목록에서 dbo.uspGetManagerEmployees를 클릭합니다.

  2. 두 번째 목록에 "Test"가 표시되는지 확인합니다.

    디자이너의 위쪽 창에 있는 T-SQL(Transact-SQL) 문은 다음으로 구성되어야 합니다.

    -- db unit test for dbo.uspManagerEmployees
    DECLARE @RC VARCHAR (8),
    @ManagerID INT
    
    SELECT @RC = NULL,
    @ManagerID = 1
    
    EXEC @RC = [dbo].[uspGetManagerEmployees]( @ManagerID )
    
    SELECT RC=@RC
    
  3. 테스트 조건 창에서 해당 유형이 결과 불충분인 테스트 조건을 클릭하고 테스트 조건 삭제(x)를 클릭하여 삭제합니다.

  4. 테스트 조건 창의 목록에서 행 개수를 클릭한 다음 테스트 조건 추가(+)를 클릭하여 행 개수 테스트 조건을 추가합니다.

  5. 속성 창에서 행 개수 속성을 11로 설정합니다.

    참고:

    저장 프로시저의 매개 변수 값과 예상 결과를 확인하려면 데이터가 생성된 후에 T-SQL(Transact-SQL) 편집기를 사용하여 [HumanResources].[Employee] 테이블의 내용을 조사하면 됩니다. 이 경우 EmployeeID가 1인 직원이 11명으로 구성된 계층의 맨 위에 있습니다. 따라서 저장 프로시저는 11개의 데이터 행을 반환해야 합니다. 동일한 시드 값을 가진 테스트 데이터를 생성하는 경우에 한하여 각 실행마다 동일한 데이터를 얻어야 합니다.

    이제 단위 테스트를 실행할 준비가 되었습니다.

단위 테스트 빌드 및 실행

이제 단위 테스트를 정의했으므로 단위 테스트를 빌드 및 실행할 수 있습니다.

단위 테스트를 빌드 및 실행하려면

  1. 솔루션 탐색기에서 솔루션 노드를 마우스 오른쪽 단추로 클릭한 다음 솔루션 다시 빌드를 클릭합니다.

    이 단계에서는 모두 최신 상태가 되도록 데이터베이스 프로젝트 및 단위 테스트 프로젝트를 강제로 다시 빌드합니다.

  2. 테스트 메뉴에서 창을 가리킨 다음 테스트 뷰를 클릭합니다.

    테스트 뷰 창에는 여러 테스트가 나열됩니다. 기본적으로 ManualTest1 및 TestMethod1이라는 테스트가 만들어집니다. dbo_uspGetManagerEmployeesTest 및 dbo_ufpLeadingZeroTest라는 테스트는 이 연습에서 만든 테스트입니다.

  3. dbo_uspGetManagerEmployeesTest와 dbo_ufpLeadingZeroTest 확인란을 모두 선택하고 둘 중 하나를 마우스 오른쪽 단추로 클릭한 다음 선택 영역 실행을 클릭합니다.

  4. 테스트 결과 창에서 결과를 확인합니다.

    데이터베이스 프로젝트가 격리된 개발 환경에 배포되고 테스트 데이터가 생성되며 테스트가 실행되어 성공합니다.

보류 중인 변경 내용 체크 인

이제 변경 내용이 데이터베이스에 적용되는지 확인하는 단위 테스트를 정의했으므로 테스트를 체크 인하고 솔루션을 팀과 공유할 수 있습니다.

솔루션을 팀과 공유하려면

  1. 보기 메뉴에서 다른 창을 가리킨 다음 보류 중인 변경 내용을 클릭합니다.

    보류 중인 변경 내용 창이 나타납니다.

  2. 주석에 정의된 데이터 생성 계획 및 기준 단위 테스트를 입력합니다.

  3. 보류 중인 변경 내용 창의 도구 모음에서 체크 인을 클릭합니다.

    데이터베이스 프로젝트와 포함된 파일이 버전 제어에서 관리될 때 체크 인 진행률 대화 상자가 나타납니다. 솔루션 탐색기의 아이콘이 업데이트되어 파일이 버전 제어에 체크 인되었다는 것을 나타냅니다.

다음 단계

이제 솔루션을 버전 제어에 체크 인했으므로 팀의 각 멤버가 할당된 작업을 사용할 수 있습니다. 변경 내용을 공유할 준비가 될 때까지 각 멤버는 고유한 격리된 데이터베이스 개발 환경에서 작업합니다. 연습: 격리된 환경에서 반복 데이터베이스 개발 수행에서는 리팩터링을 사용하여 격리된 개발 환경에 있는 데이터베이스 개체의 이름을 바꿉니다. 변경 내용을 체크 인하여 다른 팀 멤버가 변경 내용에 동기화될 수 있도록 하기 전에 변경 내용을 빌드, 배포 및 테스트합니다.

참고 항목

작업

연습: 격리된 환경에서 반복 데이터베이스 개발 수행

개념

데이터베이스 프로젝트 설정 개요

데이터베이스 빌드 및 배포 개요

Database Edition의 용어 개요

기타 리소스

데이터 생성 개요

데이터베이스 단위 테스트 개요