팀 프로젝트를 여러 사용자가 공유한 후에 테스트를 진행하게 됩니다. 테스트 과정에서 로컬 PC의 변경 사항을 팀 테스팅 서버로 내보내거나 팀 테스팅 서버의 변경 사항을 로컬 PC로 가져와야 합니다. 로컬 PC의 변경 사항을 팀 테스팅 서버로 내보내는 것을 커밋(Commit), 팀 테스팅 서버의 변경 사항을 로컬로 가져오는 것을 업데이트(Update)라고 합니다.
커밋
로컬 PC의 작업 내용을 팀 테스팅 서버에 반영하는 것을 커밋이라 합니다. 팀 테스팅 서버에 반영된 작업 내용은 다른 사용자들과 공유됩니다. 팀 테스팅 서버와 로컬의 리비전이 다른 상태로 커밋하면 다른 사용자의 변경 사항을 되돌리거나 덮어쓸 수 있습니다. 커밋할 때는 팀 테스팅 서버와 로컬의 리비전이 같아야 합니다. 만약 로컬의 리비전이 팀 테스팅 서버보다 낮다면 업데이트한 후에 커밋하여야 합니다.
사용자는 두 가지 방법으로 커밋할 수 있습니다.
- 테스트 실행 후, 변경 사항과 테스트 결과를 함께 커밋(자동 커밋)
- 사용자가 직접 커밋(수동 커밋)
- 사용자가 직접 커밋하는 경우, 커밋할 내용을 커밋 대화상자에서 확인할 수 있습니다.
업데이트
팀 테스팅 서버의 작업 내용을 로컬 PC로 가져오는 것을 업데이트라 합니다. 업데이트할 때, 팀 테스팅 서버에서 내려받을 자원이 로컬에서 이미 수정한 자원인 경우를 충돌이라고 합니다. 충돌이 발생하면 업데이트 대화상자에서 충돌을 해결하고 업데이트를 진행합니다.
업데이트는 다음과 같이 진행됩니다.
- 팀 테스팅 서버와 로컬의 리비전을 확인하고 업데이트합니다.
- 업데이트 대화상자에서 업데이트할 자원을 확인합니다. 자원의 종류에 따라 다른 형식의 비교 뷰어를 사용하여 업데이트 대화상자가 여러 번 뜰 수 있습니다.
- 충돌이 발생하면 두 가지 방법으로 충돌을 해결할 수 있습니다.
- 서버의 형상으로 저장하기
(서버에서 로컬로 복사) 아이콘을 선택하여 팀 테스팅 서버의 형상을 로컬에 복사합니다.. 팀 테스팅 서버에서 로컬로 복사하는 경우, 로컬에서의 변경 사항을 팀 테스팅 서버의 형상으로 덮어쓰며 로컬 형상을 수정할 수 없습니다.
(복사 취소) 아이콘을 통해 복사한 형상을 원래대로 되돌릴 수 있습니다.
- 사용자가 직접 수정하여 저장하기
- 팀 테스팅 서버의 형상을 복사하지 않고 사용자가 직접 로컬의 형상을 수정합니다. 현재 로컬의 형상과 팀 테스팅 서버의 형상을 참고하여 사용자가 작성한 형상으로 저장합니다. 사용자가 직접 수정하면
(해결됨으로 표시) 아이콘을 선택하여 해당 자원의 충돌이 해결됨을 표시하여야 합니다.
- 팀 테스팅 서버의 형상을 복사하지 않고 사용자가 직접 로컬의 형상을 수정합니다. 현재 로컬의 형상과 팀 테스팅 서버의 형상을 참고하여 사용자가 작성한 형상으로 저장합니다. 사용자가 직접 수정하면
- 서버의 형상으로 저장하기
- 모든 충돌이 해결되면 [확인] 버튼이 활성화되며 [확인]을 클릭하여 업데이트를 진행합니다.
- 업데이트한 자원의 종류에 따라 업데이트 후 재분석이 필요합니다.
팀 테스팅에서는 로컬의 형상을 항상 최신으로 유지할 수 있도록 업데이트 알림 기능을 제공합니다. 업데이트 알림 외에도 커밋할 때 팀 테스팅 서버와 로컬의 리비전이 다르면 업데이트가 필요하다는 안내를 합니다.
공유 자원의 변경
스텁, 클래스 코드 등 테스트 결과에 영향을 줄 수 있는 공유 자원을 변경하면 해당 자원과 연결된 테스트의 결과가 바뀔 수 있습니다. 변경된 자원을 커밋하면 팀 테스팅 서버에 있는 테스트의 결과를 신뢰할 수 없게 되므로 해당 자원과 연결된 테스트의 결과가 팀 테스팅 서버에서 삭제됩니다. 이런 경우, 프로젝트의 커버리지가 감소할 수 있습니다.
void func() {
if( returnNum() == 1 ) {
/* ... */
} else {
/* ... */
}
}
위 코드에서 returnNum()
에 대한 스텁을 생성하여 void func()
에 대한 테스트에 연결하면 returnNum()
스텁의 반환 값에 따라 커버리지가 달라질 수 있습니다. 테스트와 연결된 공유 자원을 수정할 때는 연결된 테스트를 재실행하여야 합니다. 수정한 자원을 커밋하면 해당 자원과 연결된 테스트의 실행 결과가 팀 테스팅 서버에서 삭제됩니다. 실행 결과가 삭제된 테스트는 ‘재실행 필요 테스트’로 관리됩니다. 업데이트할 때, 재실행 필요 테스트가 있으면 [유닛/통합 테스트] 뷰에서 해당 테스트에 !
표시를 합니다. 재실행 필요 테스트를 다시 실행하면 새로운 결과가 커밋되고 !
가 사라집니다.
공유 자원을 변경하고 해당 자원과 연결된 테스트를 실행하여 자동 커밋하면 실행된 테스트는 새로운 테스트 결과가 커밋되었기 때문에 재실행 필요 테스트로 관리하지 않습니다.
참고 영상
커밋/업데이트/충돌 관련하여 참고할 수 있는 영상입니다.
- 스텁을 생성한 후 테스트를 실행하여 자동으로 커밋하고 다른 PC에서 커밋한 스텁을 업데이트하는 영상입니다.
- 소스 코드를 변경한 후 수동으로 커밋하고, 다른 PC에서 업데이트 알림을 통해 업데이트하는 영상입니다.
- 사용자 스텁을 수정하여 커밋하고 업데이트하는 과정에서 발생한 충돌을 해결하는 영상입니다.
Need more help with this?
Don’t hesitate to contact us here.