2009-01-13 5 views
7

프로젝트에서 많은 사람들이 데이터베이스 스키마를 변경할 수있는 경우 가장 간단한 단위 테스트/테스트/검증 방법은 무엇입니까? 우리가 지금까지 해왔 던 주요 제안은 각 테이블에 대한 테스트를 작성하여 열 이름, 제약 조건 등을 확인하는 것입니다.당신은 어떻게합니까 (단위) 데이터베이스 스키마를 테스트합니까?

다른 누구도 비슷한 작업을 수행 했습니까? 우리는 SQL Server에서 C#을 사용하고 있습니다.

업데이트 :

  • 우리는 단위 테스트 전년도를 작성하는 아주 작은 C# 코드가 있으므로 대부분의 작업을 수행하는 SSIS 패키지를 사용하고 작업중인 프로젝트의 세그먼트 (segment)입니다.
  • 테이블/저장 프로 시저를 만드는 코드는 SQL 파일에 걸쳐 있습니다. 빌드 시스템으로 인해 별도의 VS DB 프로젝트 파일을 유지 관리 할 수는 있지만 스키마를 확인하는 데 도움이되는 방법이 확실하지 않습니다.

답변

4

아마도 하나의 대답은 데이터베이스 개발자를 위해 Visual Studio를 사용하고 나머지 코드로 소스 제어에 스키마를 유지하는 것입니다. 이것은 당신이 차이점을 볼 수있게하고 당신은 누가 무엇을 변경했는지에 대한 기록을 얻습니다.

또는 SQLCompare와 같은 도구를 사용하여 한 데이터베이스에서 수정 된 내용을 다른 데이터베이스와 비교할 수 있습니다.

0

재미있는 질문입니다. 저장 프로 시저를 테스트하기위한 툴은 많이 있지만 데이터베이스 스키마 테스트는 아닙니다.

코드 용으로 작성된 단원 테스트에서 일반적으로 데이터베이스 스키마에 문제가있는 것을 발견하지 못합니까?

필자가 사용한 방법 중 하나는 개발자의 스키마에서 테스트 스키마로 테스트 데이터를 복사하는 저장 프로 시저를 작성하는 것입니다. 스토어드 프로 시저가 일반적으로 스키마 간의 차이점을 발견 할 때 충돌하지만, 아직 알려지지 않은 변경 사항에 대해 경고합니다.

스키마 변경을 모니터링하는 DBA로 누군가를 지명 하시겠습니까?

3

당신의 (관계형) 데이터베이스는 내가 염려하는 한 두 가지 일을합니다 : 1) 데이터 보관 및 2) 데이터 간의 관계 유지. 당신이 그것을

그리고 단지 제약 조건을 사용하여 관계를 보장하기위한 테스트를하지 않을 수 있도록

잡고 데이터가 동작하지 않습니다. 많은 제약. 모든 곳에.

0

이것은 실제로 단위 테스트 패러다임에 맞지 않습니다. 나는 스키마를 제어하는 ​​버전을 제안하고 전체 애플리케이션에 대해 요청 된 변경 사항을 검증 할 수있는 DBA 또는 팀장과 같은 단일 자격을 갖춘 팀 구성원에 대한 쓰기 액세스를 제한합니다. 스키마 변경은 우연히해서는 안됩니다.

0

코드 용으로 작성된 단위 테스트에서 일반적으로 데이터베이스 스키마에 문제가있는 것을 발견하지 못합니까?

물론이 테스트에서는 모든 것이 테스트된다는 것을 전제로합니다.

0

C#이 아니더라도 전에 이런 유형의 작업을 수행해야했습니다.우선, Ode to Code (page 1 of 5)의 토론을 기반으로 스키마 마이그레이션 도구를 만들었습니다 (비슷한 기능을 수행 할 기존 도구도 있음). 중요한 것은 마이그레이션 도구를 사용하여 변경 내용을 적용 할 데이터베이스와 적용 할 버전을 지정할 수 있다는 것입니다. 그런 다음 테스트 첫 번째 방법론에 따라 스키마를 변경해야 할 때마다 테스트 데이터베이스를 작성한 테스트 스크립트를 작성하고 대상 변경 스크립트 전에 버전 변경 사항을 적용하고 일부 데이터를 추가 한 후 변경 스크립트를 적용하십시오. 테스트하고 데이터가 예상 된 상태인지 확인하십시오.

이 주된 목표는 스키마 마이그레이션 중에 데이터가 손실되거나 손상되지 않았는지 확인하고 스키마가 특정 상태에 있는지 구체적으로 확인하지 않는 것입니다. 프로덕션 데이터 세트를 잘 알고 있어야 테스트를위한 대표적인 샘플 데이터를 작성할 수 있습니다.

단위 테스트 또는 통합 테스트로 간주해야하는지 여부는 논란의 여지가 있습니다. 나는 코드를 반복 할 때마다 오래된 테스트를 실행하고 싶지 않다는 사실에 기반하여 통합 테스트를 고려하는 경향이있다. 뭐라 부르고 싶은지, 나는 그것이 그 상황을위한 유용한 도구라는 것을 알았습니다.

관련 문제