2012-03-28 3 views
1

데이터베이스 중심 서비스를위한 자동화 된 단위 테스트 스위트를 고려하십시오. 많은 소규모 부품은 데이터베이스 연결없이 단위 테스트가 가능하지만 실제 데이터베이스 스냅 샷 (또는 스냅 샷)을 플러그인하고 더 큰 통합 시나리오를 실행할 수있는 것도 유용합니다. 따라서 일부 주요 테스트에는 테스트 코드 자체와 별도로 사전 실행 및 사후 실행 데이터 스냅 샷의 형태가 포함됩니다.데이터베이스 중심 테스트 스위트 유지 보수

서비스가 빠르게 발전하고 데이터베이스 스키마도 발전합니다. 이는 테스트 데이터를 끊임없이 무효화하고 결함이있는 동작을 업데이트 된 스냅 샷에 넣지 않고 개발자가 테스트 스위트를 최신 상태로 유지하는 것이 어려워집니다.

일반적으로 이전 (테스트 데이터베이스) 스키마에 대해 새로운 버전의 서비스를 실행할 수 없습니다. 이는 초기화 (테스트 입력) 및 순전히 점검 (예 : 예상 테스트 출력)을 위해 사용되는 데이터베이스 스냅 샷의 두 가지 레이어를 가짐으로써 해결할 수 있습니다. 초기화 스키마/데이터는 응용 프로그램과 함께 자동으로 업그레이드 될 수 있지만 예상되는 출력 데이터는 아닙니다.

나는 몇 번이나이 글을 읽었지만, 사람들의 경험, 기술 및 방법론, 특히 자바, .NET 및 순수 데이터베이스 환경의 맥락에서 주제에 대한 더 많은 정보를 얻을 수있는 링크를 제공해 주시면 감사하겠습니다. .

이 질문은 내가 그것에서 배울 것을 모르기 때문에 의도적으로 다소 광범위하지만, 여기 또한 좁은 버전 :

을 만드는 어떤 널리 사용되는 Java 또는 .NET 프레임 워크가 있습니까 개발자가 동작 (데이터) 차이와 스키마 차이를 쉽게 알 수 있고 기존 테스트 데이터를 새 스키마로 반자동으로 쉽게 업데이트 할 수 있습니까?

답변

0
  1. 그것은 오히려 데이터베이스 변경을 모니터링 프레임 워크를하는 것보다 테스트 스위트의 구성의 문제입니다. 예를 들어, Hibernate/EJB 영속성 모델을 사용한다면, 테스트 스위트를 실행하기 전에 Hbm2Ddl을 사용하여 객체 매핑으로부터 데이터베이스를 생성 할 수 있습니다. 그런 다음 각 테스트는 엔티티를 저장하여 (즉 직접 SQL을 사용하지 않고) 필요한 객체를 만듭니다. 기본적으로이 경우 응용 프로그램의 지속성 계층을 통해서만 데이터베이스를 직접 처리하지 않습니다. 실행이 끝나면 데이터베이스 스키마가 삭제됩니다.

  2. 한편으로는 프로세스의 문제입니다. 모든 데이터베이스 변경은 테스트 무결성을 유지해야합니다. 어떤 사람들은 테스트 무결성을 돌보지 않고 데이터베이스를 변경하는 것과는 다릅니다. 기본적으로 코드 나 데이터베이스 구조의 변경과 상관없이 테스트가 중단되면 소스의 변경 사항을 허용해서는 안됩니다. 환언

개발 과정 + 적절한 테스트 환경에서 특정 분야 위 (지속성 층을 통해 작업 설정이 있어야한다, 즉하지 않고 테스트를 제조 데이터베이스의 덤프 인 테스트 데이터베이스 또는 최소한의 설정/해체로).

+0

1. 흥미로운 특별한 경우에 귀하의 접근 방식을 좋아합니다. 서비스가 데이터베이스의 유일한 소유자 인 경우 매우 매력적입니다. 다른 경우, 데이터베이스는 테스트 스위트가 다루고 자하는 서비스 또는 서비스 그룹 이외의 다른 에이전트에 의해 생성되고 부분적으로 채워집니다. 기술이 너무 이질적 일 때, 다른 모듈의 모의 구조 또는 다른 객체에 의해 생성 된 테스트 데이터가 어떻게 든 유지되어야합니다. 2. 이것은 일반적으로 사실이지만, 다른 사람들과 기술이 다를 수있는 테스트 스위트를 사람들이 쉽게 업데이트 할 수있게하려면 어떻게해야합니까? –

+0

TeamCity 또는 Bamboo와 같은 테스트 통합 도구를 사용합니까?이 경우 사람들은 테스트가 잘못되었다는 알림을받습니다 (예 : 변경 사항의 작성자). 그리고 그것은 책임이 있거나 테스트 (또는 코드)를 고칠 수있는 사람에게 매우 빠르게 에스컬레이션 될 수 있습니다. –

+0

우리는 사전 커밋 (pre-commit) 및 사후 커밋 (post-commit) TeamCity와 유사한 홈 메이드 프레임 워크를 사용합니다. 필자가 가지고있는 문제는 테스트 스위트를 잘못 업그레이드하는 것이 너무 쉽다는 것입니다 (차이점의 대부분이 예상과 같이 정확할 때 whoe 실제 결과를 옳게 선언하려는 유혹입니다). 이는 하나의 변경으로 수백 가지 테스트 케이스가 무효화되고 각 사례 및 변경된 데이터 행이 모두 수동으로 검사되지 않는 경우에만 문제가됩니다. –