2011-08-15 3 views
0

하자 우리가 안드로이드 클라이언트와 자바 API 서버 와 코드가 다른 하위 폴더와 같은 SVN 저장소에 커밋되어있어 말을는 클라이언트 코드의 다른 버전에 대한 테스트를 자동화하는 방법

SVN 버전 1 : Server 버전 1]

SVN 버전 2 : 서버 버전 1] [클라이언트 버전 1]

SVN 버전 3 [서버 버전 2] [클라이언트 버전 1]

SVN 버전 4 : 서버 버전 2] 클라이언트 버전 2]

SVN 버전 5 : Server 버전 3] [클라이언트 버전 2]

개발자 체크인 버전 5, 그것은 설치 buildserver에 쉽게 및 서버 버전 3에 대한 최신 클라이언트 버전 2를 사용하여 통합 테스트를 할 받는다는 요청 암호.

그러나 우리는 버전 1을 사용하는 사용자의 큰 그룹을했다, 우리는 확실히 3

내 질문은 것의 Serverversion에서 클라이언트 버전 1에 대한 이전 버전과의 호환성을 필요로하지 받는다는/buildserver 그 어떤 빌드에서 이러한 유형의 통합을위한 -테스트?

내 예를 들어 내 통합 테스트를 자동화하는 인 TeamCity과 받는다는을 사용하고 있습니다.

============================================== 받는 사람

SVN 레이아웃

svn repository 
    client trunk 
    server trunk 
    released version 
     client release version 1 
     client release version 2 

때마다 개발자 체크인 : =========

Kozelka의 추천을 모색 한 후, 여기에 방법은 내가 자동화 된 테스트를 얻기 위하여려고하고있다 서버 트렁크, 인 TeamCity 빌드 서버 코드의 "받는다는 설치"수행하려고하고, 전쟁 유물로 패키지 및 지역 받는다는 저장소에 설치합니다.

그러면 팀 버전이 클라이언트 버전 1 지점에서 클라이언트 V1 지점의 체크 아웃을 트리거하고 최신 서버 아티팩트에 대한 종속성을 가지며 통합 전에 최신 서버 아티팩트를 사용하여 부두를 시작합니다 클라이언트 버전 1 API보기를 사용하여 테스트하고 테스트합니다.

똑같은 사항이 클라이언트 version2 브랜치에도 적용되며 지원되는 모든 클라이언트 릴리스에 대해 최신 서버가 이전 API 뷰에 대해 뒷받침 할 수 있도록 teamcity에 별도의 하위 프로젝트를 빌드해야합니다.

답변

1

내가 지원하려는 모든 버전에 대한 분기를 사용하도록 권장합니다. 유지 관리해야하는 모든 버전의 분기를 만들 수 있습니다.

테스트가 회귀를 발견하면 해당 특정 분기에 수정 사항을 적용합니다. 당신의 선물 시나리오 전체 테스트 훨씬 덜 유용하므로 수정을 (커밋) 할 수있는 방법이 없습니다.

SVN의 경우, 분기는 here으로 설명됩니다. 실제로 프로젝트 트리를 다른 위치 (일반적으로/branches/아래)에 복사하는 것입니다. SVN에는 별도의 개념이 없기 때문입니다. 다른 버전 관리 시스템은 다르게 작동하지만, 당신이 사용하는 그들의 상관없이, 나뭇 가지 당신이 이럴 가야 방법이 될 것으로 보인다.

아마도 "단점"은 각 분기에서 개별적으로 테스트를 유지해야한다는 것입니다. 이것이 문제라면 (= 테스트 수가 많음), 테스트 코드를 여러 브랜치에서 공유되는 모듈로 나눠서 해결할 수 있습니다. 그러나 일반적으로 동일한 분기점 또는 다른 분기점에 커밋을 병합하여 동일하거나 유사한 기능을 수행합니다. 이 옵션은 분기의 코드와 그 테스트가 충분히 벗어 났을 때 중요합니다.

+0

대답 해 주셔서 감사합니다. svn 브랜칭 기능을 잘 사용하십시오. – laiBilly

1

두 조각이 SVN의 다른 하위 폴더에 있으면 빌드 서버에서 두 개의 다른 프로젝트를 찾고 있다고 생각합니다. 개별적으로 배포하는 방법입니다. 원하는 버전이 있으면 단위 테스트를 호출하십시오.

직면 한 과제 중 일부는 원하는 배포 시간 결정 간의 불일치이며 테스트 및 배포 논리를 "빌드"할 때 많이 수행해야합니다. 이 두 개념을 분리하면 더 많은 행운을 누릴 수 있습니다.

TC에서 생각한 것 중 하나는 다른 "배치"유형을 사용하여 다른 작업을 수행한다는 것입니다. 다른 도구는 배포를 별도의 작업으로 취급합니다.

+0

네, 맞습니다. maven은 항상 모든면을 단일 빌드 프로세스로 패키지화하도록 가르쳐 왔지만 다중 클라이언트 지원으로는 2 단계 검증 만하면됩니다. – laiBilly

관련 문제