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

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

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

  1. 격리된 개발 환경에 대한 배포 설정을 사용자 지정합니다.

  2. 데이터베이스를 빌드하여 격리된 개발 환경에 배포합니다.

  3. 데이터 생성 계획을 만들고 사용자 지정하여 더 실제적인 테스트 데이터 생성

  4. 데이터베이스 프로젝트에 포함된 저장 프로시저에 대한 단위 테스트를 정의합니다.

  5. 테스트 데이터를 생성하고 단위 테스트를 빌드하여 실행합니다.

  6. 단위 테스트를 솔루션의 일부로 버전 제어에서 관리하도록 설정하여 개발 팀과 공유합니다.

사전 요구 사항

데이터베이스 단위 테스트를 정의하고 데이터 생성 계획을 만들고, 수정하고, 실행하려면 Visual Studio Premium 또는 Visual Studio Ultimate가 설치되어 있고 SQL Server 2008용 AdventureWorks2008 샘플 데이터베이스(또는 SQL Server 2008 R2용 AdventureWorks2008R2 샘플 데이터베이스)에 액세스할 수 있어야 합니다. 또한 연습: 격리된 데이터베이스 개발 환경 만들기의 단계를 완료해야 합니다.

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

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

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

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

  3. AdvWorksSandbox 솔루션을 클릭한 다음 열기를 클릭합니다. 이 솔루션의 기본 위치는 My Documents\Visual Studio 2010\Projects\AdvWorksSandbox입니다.

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

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

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

  6. 배포 탭을 클릭합니다.

  7. 배포 설정 구성 드롭다운 목록에서 내 격리된 개발 환경을 선택합니다.

    참고

    격리된 개발 환경에 대해 구성하는 배포 설정은 데이터베이스 프로젝트가 포함된 폴더의 .user 파일에 저장됩니다. .user 파일은 버전 제어에 체크 인되지 않습니다. 이 디자인을 사용하면 각 개발자가 각자의 격리된 개발 환경에 대한 설정을 구성할 수 있습니다.

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

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

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

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

    중요

    이전 연습에서 배포한 동일한 서버에 격리된 개발 데이터베이스를 배포하는 경우 오류가 발생합니다. 이 오류는 파일을 이미 만들었기 때문에 발생합니다. FileStreamDocuments.sqlfile.sql(또는 SQL Server 2008 R2의 경우 FileStreamDocuments2008R2.sqlfile.sql) 파일에서 FILENAME 매개 변수를 변경하여 이 문제를 해결할 수 있습니다. FILENAME = '$(DefaultDataPath)SandboxDocuments-IDE') 코드와 일치하도록 매개 변수를 변경하십시오.

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

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

  11. 확인을 클릭합니다.

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

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

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

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

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

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

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

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

    다음에는 격리된 개발 환경에 대한 테스트 데이터를 생성해야 합니다.

테스트 데이터 생성

이제 개발을 수행할 수 있는 대상인 격리된 데이터베이스가 있으므로 단위 테스트를 수행하기 위한 테스트 데이터가 필요합니다. 먼저 기본 데이터 생성 계획을 만든 다음 해당 계획을 사용자 지정하여 더 실제적인 데이터를 생성합니다. 이 예제에서는 데이터베이스의 일부 테이블과 열에 대해서만 데이터 생성을 구성합니다. Employee 테이블 및 StateProvince 테이블에 대한 데이터 생성을 구성하게 될 것입니다.

StateProvince 테이블의 원래 데이터는 중요하지 않습니다. 따라서 이 원래 데이터를 사용하여 격리된 개발 데이터베이스를 채울 수 있습니다.

그러나 Employee 테이블의 기본 생성 계획을 다음과 같이 변경해야 합니다.

  • Title은 Developer, Sr. Developer, Tester, Sr. Tester, Project Manager, Sales Associate 또는 Sr. Sales Associate 중 하나여야 합니다.

  • BirthDate는 현재로부터 적어도 18년 이전이어야 하고 1930년 1월 1일 이후여야 합니다. 이 설정은 데이터베이스의 열에 대한 제약 조건과 일치합니다.

  • Marital Status는 "M" 또는 "S"여야 합니다.

  • Gender는 "M" 또는 "F"여야 합니다.

  • HireDate는 오늘 날짜 또는 그 이전이어야 하고 2000년 1월 1일 또는 그 이후여야 합니다.

  • VacationHours는 -10에서 160 사이의 범위에 대한 일반적인 분포를 포함해야 합니다.

  • ModifiedDate는 오늘 날짜 또는 그 이전이어야 하고 2000년 1월 1일 또는 그 이후여야 합니다. 대부분의 레코드가 최근에 업데이트되었을 것입니다.

  • Person 테이블의 AdditionalContactInfo 및 Demographics는 소스 AdventureWorks 데이터베이스에서 제공되어야 합니다.

데이터 생성 계획을 만들려면

  1. 솔루션 탐색기에서 AdvWorksSandbox 노드를 확장하고 데이터 생성 계획 폴더를 클릭합니다.

  2. 프로젝트 메뉴에서 새 항목 추가를 클릭합니다.

    새 항목 추가 대화 상자가 나타납니다.

  3. 범주 목록에서 데이터 생성 계획을 클릭합니다.

  4. 템플릿 목록에서 데이터 생성 계획을 클릭합니다.

  5. 이름에 AWGenPlan.dgen을 입력한 다음 추가를 클릭합니다.

    AWGenPlan이라는 데이터 생성 계획이 데이터베이스 프로젝트에 추가되고 편집기에서 열립니다. 데이터베이스 스키마를 데이터 생성 계획으로 가져오게 됩니다.

    다음에는 AWGenPlan을 수정하여 보다 실제적인 테스트 데이터를 생성합니다.

원하는 테이블에 대한 데이터만 생성하도록 지정하려면

  1. 데이터 생성 계획을 마우스 오른쪽 단추로 클릭하고 데이터 생성 시 모든 테이블 제외를 클릭합니다.

  2. 데이터 생성 계획에서 HumanResources.Employee, Person.Person, Person.CountryRegion 및 Person.StateProvince 테이블에 대한 확인란을 선택합니다.

    다음에는 StateProvince 테이블에 대한 데이터 생성 계획을 정의합니다.

StateProvince 테이블에 대한 데이터 생성 계획을 정의하려면

  1. 데이터 생성 계획에서 **[Person].[StateProvince]**를 클릭합니다.

  2. 열 정보 창에서 StateProvinceCode를 클릭하고 생성기 필드를 데이터 바운드 생성기로 설정합니다.

    이 단계는 이 열을 쿼리 결과로 채울 것임을 나타냅니다.

  3. 보기 메뉴에서 속성 창을 클릭합니다.

  4. 속성 창의 생성기 섹션에 있는 Connection Information 속성에서 이전 절차에서 가져온 데이터베이스 스키마의 소스 데이터베이스에 해당하는 연결을 클릭합니다.

    이 단계는 이 열에 대한 데이터를 생성하는 쿼리를 실행하는 데 사용할 데이터베이스 연결을 지정합니다.

  5. 속성 창의 생성기 섹션에 있는 Select Query 속성에서 쿼리 문자열을 SELECT [StateProvinceCode] FROM [Person].[StateProvince]로 설정합니다.

  6. 열 정보 창에서 수정한 날짜를 클릭합니다.

  7. 이후에 레코드를 수정할 수 없으므로 속성 창의 생성기 섹션에서 Max 속성을 오늘 날짜로 설정합니다.

  8. 속성 창의 생성기 섹션에서 Min 속성을 2000-01-01 오전 12:00:00로 설정합니다. 이 예제에서는 회사가 2000년 새해에 데이터 수집을 시작했다고 가정합니다.

    다음에는 Person 테이블에 대한 데이터 생성 계획을 지정합니다.

Person 테이블에 대한 데이터 생성 계획을 정의하려면

  1. 데이터 생성 계획에서 **[Person].[Person]**을 클릭합니다.

  2. 열 정보 창에서 PersonType을 클릭하고 생성기 필드를 정규식으로 설정합니다.

  3. 속성 창의 생성기 섹션에서 Expression 속성을 (GC|SP|EM|IN|VC|SC)로 설정합니다.

  4. 열 정보 창에서 AdditionalContactInfo를 클릭하고 생성기 필드를 데이터 바운드 생성기로 설정합니다.

    이 단계에서는 사용자가 이 열을 쿼리 결과로 채우려고 함을 나타냅니다.

  5. 보기 메뉴에서 속성 창을 클릭합니다.

  6. 속성 창의 생성기 섹션에 있는 Connection Information 속성에서 이전 절차에서 가져온 데이터베이스 스키마의 소스 데이터베이스에 해당하는 연결을 클릭합니다.

    이 단계는 이 열에 대한 데이터를 생성하는 쿼리를 실행하는 데 사용할 데이터베이스 연결을 지정합니다.

  7. 속성 창의 생성기 섹션에 있는 Query Select Query 속성에서 쿼리 문자열을 SELECT * FROM [Person].[Person]으로 설정합니다.

  8. 열 정보 창의 AdditionalContactInfo에 대한 생성기 출력 필드에서 **[AdditionalContactInfo]**를 클릭합니다.

    이 단계는 이 열과 연결할 결과 집합의 열을 선택합니다.

  9. 열 정보 창에서 Demographics를 클릭하고 생성기 필드를 데이터 바운드 생성기로 설정합니다.

    이 단계에서는 사용자가 이 열을 쿼리 결과로 채우려고 함을 나타냅니다.

  10. 보기 메뉴에서 속성 창을 클릭합니다.

  11. 속성 창의 생성기 섹션에 있는 Connection Information 속성에서 이전 절차에서 가져온 데이터베이스 스키마의 소스 데이터베이스에 해당하는 연결을 클릭합니다.

    이 단계는 이 열에 대한 데이터를 생성하는 쿼리를 실행하는 데 사용할 데이터베이스 연결을 지정합니다.

  12. 속성 창의 생성기 섹션에 있는 Query Select Query 속성에서 쿼리 문자열을 SELECT * FROM [Person].[Person]으로 설정합니다.

  13. 열 정보 창의 Demographics에 대한 생성기 출력 필드에서 **[Demographics]**를 클릭합니다.

    이 단계는 이 열과 연결할 결과 집합의 열을 선택합니다.

  14. 열 정보 창에서 수정한 날짜를 클릭합니다.

  15. 이후에 레코드를 수정할 수 없으므로 속성 창의 생성기 섹션에서 Max 속성을 오늘 날짜로 설정합니다.

  16. 속성 창의 생성기 섹션에서 Min 속성을 2000-01-01 오전 12:00:00로 설정합니다. 이 예제에서는 회사가 2000년 새해에 데이터 수집을 시작했다고 가정합니다.

    다음에는 Employee 테이블에 대한 데이터 생성 계획을 지정합니다.

Employee 테이블에 대한 데이터 생성 계획을 정의하려면

  1. 데이터 생성 계획에서 **[HumanResources].[Employee]**를 클릭합니다.

  2. 열 정보 창에서 JobTitle을 클릭하고 생성기 필드를 정규식으로 설정합니다.

  3. 속성 창의 생성기 섹션에서 Expression 속성을 (Developer|Sr\. Developer|Tester|Sr\. Tester|Project Manager|Sales Associate|Sr\. Sales Associate)로 설정합니다.

  4. 열 정보 창에서 BirthDate를 클릭합니다.

    기본적으로 생성기 필드는 DateTime2로 설정됩니다.

  5. 속성 창의 생성기 섹션에서 Max 속성을 오늘 날짜로부터 18년 전(예: 1987-10-30 오후 11:59:59)으로 설정합니다. 또한 Min 속성을 1930-01-01 오전 12:00:00로 설정합니다.

  6. 열 정보 창에서 MaritalStatus를 클릭하고 생성기 필드를 정규식으로 설정합니다.

  7. 속성 창의 생성기 섹션에서 Expression 속성을 (M|S)로 설정합니다.

  8. 열 정보 창에서 Gender를 클릭하고 생성기 필드를 정규식으로 설정합니다.

  9. 속성 창의 생성기 섹션에서 Expression 속성을 (M|F)로 설정합니다.

  10. 열 정보 창에서 HireDate를 클릭합니다.

    기본적으로 생성기 필드는 DateTime2로 설정됩니다.

  11. 속성 창의 생성기 섹션에서 Max 속성을 오늘 날짜(예: 2006-10-30 오후 11:59:59)로 설정합니다. 또한 Min 속성을 2000-01-01 오전 12:00:00로 설정합니다.

  12. 열 정보 창에서 VacationHours를 클릭합니다.

    기본적으로 생성기 필드는 SmallInt로 설정됩니다.

  13. 속성 창의 생성기 섹션에서 Distribution 속성을 정규로 설정합니다.

  14. 속성 창의 생성기 섹션에서 Max 속성을 160으로, Min 속성을 -10으로 설정합니다.

  15. 열 정보 창에서 수정한 날짜를 클릭합니다.

    기본적으로 생성기 필드는 DateTime2로 설정됩니다.

  16. 속성 창의 생성기 섹션에서 Distribution 속성을 ExponentialInverse로 설정합니다. 또한 Max 속성을 오늘 날짜(예: 2006-10-30 오후 11:59:59)로 설정하고 Min 속성을 2000-01-01 오전 12:00:00로 설정합니다.

생성되는 행 수를 조정하려면

  1. 데이터 생성 계획에서 **[Person].[CountryRegion]**을 클릭합니다.

  2. 삽입할 행 필드에 10을 입력합니다.

  3. 데이터 생성 계획에서 **[HumanResources].[Employee]**를 클릭합니다.

  4. 삽입할 행 필드에 25를 입력합니다.

  5. 데이터 생성 계획에서 **[Person].[StateProvince]**를 클릭합니다.

  6. 관련 테이블 필드에서 **[Person].[CountryRegion]**을 클릭합니다.

  7. 관련 테이블 비율 필드에 2:1을 입력합니다.

    이 단계에서는 [Person].[CountryRegion] 테이블에 대한 행보다 두 배 많은 행을 [Person].[StateProvince] 테이블에 대해 생성하도록 지정합니다.

  8. 파일 메뉴에서 AWGenPlan.dgen 저장을 클릭하여 데이터 생성 계획에 대한 변경 내용을 저장합니다.

데이터 생성을 미리 보고 테스트 데이터를 생성하려면

HumanResources.Employee 테이블에는 데이터 생성을 여러 번 실행할 경우 데이터 생성을 방해할 수 있는 트리거가 들어 있습니다. 자동화된 테스트 실행의 일부로 데이터를 생성하려면 단위 테스트의 일부로 이러한 트리거를 비활성화한 다음 나중에 활성화해야 합니다.

이 절차의 일부로 데이터 생성을 여러 번 실행하려면 데이터 생성과 관련된 Employee 테이블의 트리거를 비활성화 및 활성화하려면의 절차를 따라야 합니다. 데이터 생성을 한 번만 실행하려면 데이터 생성 계획 결과를 확인하려면 절차를 따릅니다.

데이터 생성을 미리 보고 테스트 데이터를 생성하려면

  1. 데이터 메뉴에서 데이터 생성기를 가리키고 데이터 생성 미리 보기를 클릭합니다.

    데이터 생성 미리 보기 창이 나타나고 생성될 데이터 샘플이 표시됩니다. 데이터가 지정한 조건에 맞으면 다음 단계를 계속합니다. 데이터 생성 계획을 조정해야 하는 경우 적절하게 변경한 다음 이 단계를 반복합니다.

  2. 데이터 메뉴에서 데이터 생성기를 가리키고 데이터 생성을 클릭합니다.

    대상 데이터베이스의 데이터 생성 대화 상자가 나타납니다.

  3. 대상 데이터베이스에서 AdvWorksSandbox 데이터베이스에 대한 연결을 만들고 확인을 클릭합니다.

  4. "새 데이터를 생성하기 전에 테이블에서 기존 데이터를 삭제하시겠습니까?"라는 메시지가 표시되면 를 클릭합니다.

    지정한 내용에 따라 데이터가 생성됩니다. 생성이 완료되면 모든 데이터가 성공적으로 생성되었음을 의미하는 녹색 확인 표시가 각 행에 나타납니다. 데이터가 생성되지 않은 경우에는 오류 목록 창에 오류가 나타납니다.

  5. "데이터 생성 계획 결과를 확인하려면" 절차로 건너 뜁니다.

데이터 생성과 관련된 Employee 테이블의 트리거를 비활성화 및 활성화하려면

  1. 데이터를 생성하기 전에 데이터 메뉴를 열고 Transact-SQL 편집기를 가리킨 다음 새 쿼리 연결을 클릭합니다.

  2. 격리된 개발 환경의 데이터베이스에 대한 연결이 있는 경우 7단계로 이동합니다.

  3. 새 연결을 클릭합니다.

    연결 속성 대화 상자가 나타납니다.

  4. 서버 이름에서 데이터베이스를 배포한 데이터베이스 서버의 이름(예: (local)\SQLExpress)을 입력하거나 클릭합니다.

  5. 서버에 로그온에서 Windows 인증 사용을 클릭합니다.

  6. 데이터베이스에 연결에서 데이터베이스 이름 선택 또는 입력을 클릭하고 AdvWorksSandbox를 입력한 다음 확인을 클릭합니다.

    연결이 만들어지고 데이터베이스에 연결 대화 상자의 목록에 추가됩니다.

  7. 데이터베이스에 연결 대화 상자에서 격리된 개발 환경의 데이터베이스에 해당하는 연결 문자열을 클릭하고 확인을 클릭합니다.

    AdvWorksSandbox 데이터베이스에 대한 활성 연결이 있는 Transact-SQL 편집기가 나타납니다.

  8. 확인을 클릭합니다.

    Transact-SQL 편집기가 나타납니다.

  9. Transact-SQL 편집기에서 다음 Transact-SQL을 입력합니다.

    DISABLE TRIGGER [HumanResources].[dEmployee] ON [HumanResources].[Employee]
    GO
    
  10. Transact-SQL 편집기 도구 모음에서 SQL 실행을 클릭합니다.

    메시지 탭에 다음이 나타납니다.

    명령을 완료했습니다.

  11. 데이터 생성 계획이 포함된 창을 클릭합니다.

  12. 데이터 메뉴에서 데이터 생성기를 가리키고 데이터 생성 미리 보기를 클릭합니다.

    데이터 생성 미리 보기 창이 나타나고 생성될 데이터 샘플이 표시됩니다. 데이터가 지정한 조건에 맞으면 다음 단계를 계속합니다. 데이터 생성 계획을 조정해야 하는 경우 적절하게 변경한 다음 이 단계를 반복합니다.

  13. 데이터 메뉴에서 데이터 생성기를 가리키고 데이터 생성을 클릭합니다.

    대상 데이터베이스의 데이터 생성 대화 상자가 나타납니다.

  14. 대상 데이터베이스에서 AdvWorksSandbox 데이터베이스에 대한 연결을 클릭하고 확인을 클릭합니다.

  15. "새 행을 삽입하기 전에 선택된 테이블의 내용을 지우시겠습니까?"라는 메시지가 표시되면 를 클릭합니다.

    지정한 내용에 따라 데이터가 생성됩니다. 생성이 완료되면 모든 데이터가 성공적으로 생성되었음을 의미하는 녹색 확인 표시가 각 행에 나타납니다. 데이터가 생성되지 않은 경우에는 오류 목록 창에 오류가 나타납니다.

  16. Transact-SQL 편집기 창을 클릭합니다.

  17. 일반적으로 여기에서 트리거를 다시 사용하도록 설정합니다. 그러나 단위 테스트의 일부로 트리거를 사용하지 않도록 설정하고 다시 사용하도록 설정할 필요가 없도록 데이터베이스 단위 테스트를 단순화하려면 트리거를 사용하지 않도록 설정한 상태로 둡니다.

데이터 생성 계획 결과를 확인하려면

  1. 데이터 메뉴에서 Transact-SQL 편집기를 가리키고 새 쿼리를 클릭합니다.

    데이터베이스에 연결 대화 상자가 나타납니다.

  2. 격리된 개발 환경의 데이터베이스에 대한 연결이 있는 경우 8단계로 이동합니다.

  3. 새 연결을 클릭합니다.

    연결 속성 대화 상자가 나타납니다.

  4. 서버 이름에서 데이터베이스를 배포한 데이터베이스 서버의 이름(예: (local)\SQLExpress)을 입력하거나 클릭합니다.

  5. 서버에 로그온에서 Windows 인증 사용을 클릭합니다.

  6. 데이터베이스에 연결에서 데이터베이스 이름 선택 또는 입력을 클릭하고 AdvWorksSandbox를 입력한 다음 확인을 클릭합니다.

    연결이 만들어지고 데이터베이스에 연결 대화 상자의 목록에 추가됩니다.

  7. 데이터베이스에 연결 대화 상자에서 격리된 개발 환경의 데이터베이스에 해당하는 연결 문자열을 클릭하고 확인을 클릭합니다.

    AdvWorksSandbox 데이터베이스에 대한 활성 연결이 있는 Transact-SQL 편집기가 나타납니다.

  8. Transact-SQL 편집기에서 다음을 입력합니다.

    SELECT * from HumanResources.Employee;
    
  9. F5 키를 눌러 쿼리를 실행합니다.

    결과 창이 나타나고 데이터 생성 결과가 표시됩니다.

  10. 파일 메뉴에서 닫기를 클릭하여 Transact-SQL 편집기를 닫습니다.

    그런 다음 기존 데이터베이스 코드를 확인하는 데이터베이스 단위 테스트를 정의합니다.

단위 테스트 정의

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

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

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

단위 테스트를 만들려면

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

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

  2. 스키마 뷰에서 스키마 폴더, dbo 폴더, 프로그램 기능 폴더를 차례로 엽니다.

  3. 함수 폴더를 마우스 오른쪽 단추로 클릭하고 단위 테스트 만들기를 클릭합니다.

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

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

    참고

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

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

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

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

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

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

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

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

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

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

    참고

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

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

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

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

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

  3. 디자이너의 위쪽 창에 있는 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에서 다른 값으로 변경합니다.

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

단위 테스트 빌드 및 실행

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

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

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

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

  2. 테스트 메뉴에서 을 가리키고 테스트 목록 편집기를 클릭합니다.

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

  3. dbo_ufpLeadingZeroTest의 확인란을 선택하고 마우스 오른쪽 단추를 클릭한 다음 선택한 테스트 실행을 클릭합니다.

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

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

보류 중인 변경 내용 체크 인

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

솔루션을 팀과 공유하려면

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

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

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

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

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

다음 단계

솔루션을 버전 제어에 체크 인했으므로 이제 팀의 각 멤버가 자신에게 할당된 작업을 수행할 수 있습니다. 변경 내용을 공유할 준비가 될 때까지 각 멤버는 격리된 데이터베이스 개발 환경에서 작업할 수 있습니다.

연습: 격리된 개발 환경에서 반복 데이터베이스 개발 수행에서는 리팩터링을 사용하여 격리된 개발 환경에 있는 데이터베이스 개체의 이름을 바꿉니다. 변경 내용을 체크 인하기 전에 변경 내용을 빌드, 배포 및 테스트해야 하며, 그런 다음 다른 팀 멤버가 해당 변경 내용을 자신의 격리된 개발 환경과 동기화할 수 있습니다.

참고 항목

작업

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

개념

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

단위 테스트를 사용하여 데이터베이스 코드 확인

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

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

변경 기록

날짜

변경 내용

이유

SQL Server 2008 R2 및 AdventureWorks2008R2에 대한 지원이 추가되었습니다. 고객 의견에서 지적된 데이터 생성 및 단위 테스트 문제도 일부 해결되었습니다.

SP1 기능 변경