1. 스프링 부트의 테스트

1-1. SpringBootTest 어노테이션

: 단위 테스트를 위한 어노테이션으로 JUnit 기반으로 구현되어 있다.

 

1-2. ExtendWith 어노테이션

: Spring 5 버전 이후 테스트 기능을 구현하기 위한 어노테이션

@ExtendWith(SpringExtension.class)

 

 

2. 형상관리

2-1. 형상관리의 필요성

: 소프트웨어를 만드는 규모가 커짐에 따라 협업관리의 필요성이 커지자 이에 대한 작업 저장 공간의 중요성 또한 커지면서 좀 더 안전한 개념의 관리 시스템이 고안되어 생겨남.

 

2-2. 형상 관리의 종류

2-2-1. 동시 버전 관리 시스템

  • CVS(Concurrent Versions System): 한 서버를 두고(중앙 서버식) 여러 개발인원이 공유하는 형태.
  • SVN(SubVersion): 여러명이서 작업하는 프로젝트의 경우 버전관리나 각자 만든 소스의 통합과 같은 문제를 해결하기 위해 저장소를 만들어 그곳에 소스를 저장해 소스 중복이나 여러 문제를 해결하기 위한 소프트웨어

 

2-2-2. 분산 버전 관리 시스템

  • Github: 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하는 깃(Git)의 특성을 살려 이를 하나의 관리 시스템화(Hub) 한 것.

 

2-3. Git을 이용한 형상관리

  • 리모트(Remote): 형상관리를 조종(Remote)하는 서버단위. 이를 깃허브와 같은 저장소가 관리한다.
  • 리포지토리(Repository): 형상관리를 하는 저장소의 개념으로 리모트 서버 내에서 구분되는 프로젝트 단위.
  • 브랜치(Branch): 분산 저장을 위한 독립된 작업을 진행하는 작업 공간의 개념.
  • 오리진(Origin): 최초로 선언한 브랜치.
  • 클론(Clone): 리모트 서버의 리포지토리에서 클라이언트로 파일을 복제하는 행위.
  • 풀(Pull): 리모트 서버의 최신 소스를 가져와서 로컬 소스에 병합(Merge)해주는 명령.
  • 패치(Fetch): 리모트 서버의 최신 이력을 내 클라이언트로 가져오되 병합은 하지 않는 명령.
  • 커밋(Commit): 저장소에 저장할 파일을 추가하여 원하는 변경사항을 스테이지에 올린 후 변경 사항들을 포장하는 것.
  • 푸시(Push): 커밋을 통해 포장된 변경 사항들을 리모트 서버로 업로드하는 것.
  • 머지(Merge): 다른 브랜치에서 작성한 코드들을 마스터 브랜치에게 요청하여 하나의 코드로 만드는 것.