팀 프로젝트를 여러 사용자가 공유한 후에 테스트를 진행하게 됩니다. 테스트 과정에서 로컬 PC의 변경 사항을 팀 테스팅 서버로 내보내거나 팀 테스팅 서버의 변경 사항을 로컬 PC로 가져와야 합니다. 로컬 PC의 변경 사항을 팀 테스팅 서버로 내보내는 것을 커밋(Commit), 팀 테스팅 서버의 변경 사항을 로컬로 가져오는 것을 업데이트(Update)라고 합니다.

커밋

로컬 PC의 작업 내용을 팀 테스팅 서버에 반영하는 것을 커밋이라 합니다. 팀 테스팅 서버에 반영된 작업 내용은 다른 사용자들과 공유됩니다. 팀 테스팅 서버와 로컬의 리비전이 다른 상태로 커밋하면 다른 사용자의 변경 사항을 되돌리거나 덮어쓸 수 있습니다. 커밋할 때는 팀 테스팅 서버와 로컬의 리비전이 같아야 합니다. 만약 로컬의 리비전이 팀 테스팅 서버보다 낮다면 업데이트한 후에 커밋하여야 합니다.

사용자는 두 가지 방법으로 커밋할 수 있습니다.

  1. 테스트 실행 후, 변경 사항과 테스트 결과를 함께 커밋(자동 커밋)
  2. 사용자가 직접 커밋(수동 커밋)
    • 사용자가 직접 커밋하는 경우, 커밋할 내용을 커밋 대화상자에서 확인할 수 있습니다.

업데이트

팀 테스팅 서버의 작업 내용을 로컬 PC로 가져오는 것을 업데이트라 합니다. 업데이트할 때, 팀 테스팅 서버에서 내려받을 자원이 로컬에서 이미 수정한 자원인 경우를 충돌이라고 합니다. 충돌이 발생하면 업데이트 대화상자에서 충돌을 해결하고 업데이트를 진행합니다.

업데이트는 다음과 같이 진행됩니다.

  1. 팀 테스팅 서버와 로컬의 리비전을 확인하고 업데이트합니다.
  2. 업데이트 대화상자에서 업데이트할 자원을 확인합니다. 자원의 종류에 따라 다른 형식의 비교 뷰어를 사용하여 업데이트 대화상자가 여러 번 뜰 수 있습니다.
    • 프로젝트 특성, 툴체인 등 JSON이나 XML 형식으로 관리하는 자원은 텍스트 비교로 업데이트 내용을 확인할 수 있습니다.
    • 스텁, 클래스 코드 등 코드 형태의 자원은 소스 코드 비교로 업데이트 내용을 확인합니다.
    • 요구사항 추적성 등 DB로 관리하는 자원은 DB의 데이터를 텍스트 형식으로 비교하여 업데이트 내용을 확인합니다.
    • 결함 주입의 경우, 결함 주입 뷰와 유사한 형태로 업데이트 내용을 확인합니다.
    • 테스트의 경우, 테스트 편집기의 형태로 업데이트 내용을 확인합니다.
  3. 충돌이 발생하면 두 가지 방법으로 충돌을 해결할 수 있습니다.
    • 서버의 형상으로 저장하기
      • (서버에서 로컬로 복사) 아이콘을 선택하여 팀 테스팅 서버의 형상을 로컬에 복사합니다.. 팀 테스팅 서버에서 로컬로 복사하는 경우, 로컬에서의 변경 사항을 팀 테스팅 서버의 형상으로 덮어쓰며 로컬 형상을 수정할 수 없습니다. (복사 취소) 아이콘을 통해 복사한 형상을 원래대로 되돌릴 수 있습니다.
    • 사용자가 직접 수정하여 저장하기
      • 팀 테스팅 서버의 형상을 복사하지 않고 사용자가 직접 로컬의 형상을 수정합니다. 현재 로컬의 형상과 팀 테스팅 서버의 형상을 참고하여 사용자가 작성한 형상으로 저장합니다. 사용자가 직접 수정하면 (해결됨으로 표시) 아이콘을 선택하여 해당 자원의 충돌이 해결됨을 표시하여야 합니다.
  4. 모든 충돌이 해결되면 [확인] 버튼이 활성화되며 [확인]을 클릭하여 업데이트를 진행합니다.
  5. 업데이트한 자원의 종류에 따라 업데이트 후 재분석이 필요합니다.

팀 테스팅에서는 로컬의 형상을 항상 최신으로 유지할 수 있도록 업데이트 알림 기능을 제공합니다. 업데이트 알림 외에도 커밋할 때 팀 테스팅 서버와 로컬의 리비전이 다르면 업데이트가 필요하다는 안내를 합니다.

공유 자원의 변경

스텁, 클래스 코드 등 테스트 결과에 영향을 줄 수 있는 공유 자원을 변경하면 해당 자원과 연결된 테스트의 결과가 바뀔 수 있습니다. 변경된 자원을 커밋하면 팀 테스팅 서버에 있는 테스트의 결과를 신뢰할 수 없게 되므로 해당 자원과 연결된 테스트의 결과가 팀 테스팅 서버에서 삭제됩니다. 이런 경우, 프로젝트의 커버리지가 감소할 수 있습니다.

void func() {
 if( returnNum() == 1 ) {
    /* ... */
 } else {
    /* ... */
    }
}

위 코드에서 returnNum()에 대한 스텁을 생성하여 void func()에 대한 테스트에 연결하면 returnNum() 스텁의 반환 값에 따라 커버리지가 달라질 수 있습니다. 테스트와 연결된 공유 자원을 수정할 때는 연결된 테스트를 재실행하여야 합니다. 수정한 자원을 커밋하면 해당 자원과 연결된 테스트의 실행 결과가 팀 테스팅 서버에서 삭제됩니다. 실행 결과가 삭제된 테스트는 ‘재실행 필요 테스트’로 관리됩니다. 업데이트할 때, 재실행 필요 테스트가 있으면 [유닛/통합 테스트] 뷰에서 해당 테스트에 ! 표시를 합니다. 재실행 필요 테스트를 다시 실행하면 새로운 결과가 커밋되고 !가 사라집니다.
공유 자원을 변경하고 해당 자원과 연결된 테스트를 실행하여 자동 커밋하면 실행된 테스트는 새로운 테스트 결과가 커밋되었기 때문에 재실행 필요 테스트로 관리하지 않습니다.

참고 영상

커밋/업데이트/충돌 관련하여 참고할 수 있는 영상입니다.

  • 스텁을 생성한 후 테스트를 실행하여 자동으로 커밋하고 다른 PC에서 커밋한 스텁을 업데이트하는 영상입니다.
  • 소스 코드를 변경한 후 수동으로 커밋하고, 다른 PC에서 업데이트 알림을 통해 업데이트하는 영상입니다.
  • 사용자 스텁을 수정하여 커밋하고 업데이트하는 과정에서 발생한 충돌을 해결하는 영상입니다.

Need more help with this?
Don’t hesitate to contact us here.

Thanks for your feedback.