본문 바로가기
CICD

[기술면접] 240119 CI/CD, TDD

by studymode 2024. 1. 19.

21. CI/CD에 대해서 설명해주세요.

CICD는 어플리케이션의 지속적인 통합, 지속적 서비스 제공, 지속적인 배포를 도와줍니다.

 

CI (지속적 통합)

소스 코드 변경이 이루어질 때마다 자동으로 빌드 및 테스트를 수행하여 코드 변경 사항이 메인 코드베이스와 통합되는지 확인합니다. 

CD(지속적 제공/ 지속적 배포)

CI 단계를 통과한 코드는 자동으로 테스트 및 빌드 된 후 배포된니다. 

자동화된 테스트 및 배포 과정을 통해 안정적으로 소프트웨어를 지속적으로 제공할 수 있습니다. 

  • 자동화된 프로세스: 빌드, 테스트, 배포 등의 프로세스가 자동으로 이루어져 빠르고 안정적인 개발 및 배포가 가능합니다.
  • 빠른 피드백: 코드 변경이 빌드 및 테스트를 거쳐 바로 피드백을 받을 수 있어 개발자들은 빠르게 오류를 수정하고 품질을 향상시킬 수 있습니다.
  • 신뢰성과 안정성: 지속적인 배포를 통해 코드의 품질을 유지하고, 안정적인 환경에서 사용자에게 서비스를 제공할 수 있습니다.
  • 효율적인 협업: 팀 전체가 동일한 코드베이스에서 작업하고 통합하므로 효율적인 협업이 가능합니다.
 

새로운 코드 통합 시 테스트 단계에서부터 배포까지 지속적인 자동화와 지속적인 모니터링을 제공해 어플리케이션을 더욱 짧은 주기로 고객에게 제공하도록 도와줍니다. 소프트웨어 개발의 속도, 안정성, 신뢰성을 증진하기 위해 사용합니다. 

 

 

 

 

22. TDD에 대해서 설명해주세요.

  • Test Driven Development
  • TDD는 테스트 주도 개발로, 테스트케이스를 먼저 작성한 이후, 리팩토링으로 실제 코드를 개발하는 개발 방법입니다..
  • 장점으로는 작업과 동시에 테스트를 진행하기 때문에 실시간으로 오류를 파악할 수 있습니다.
  • 개발주기가 짧아 고객의 요구사항을 빠르게 수용하고, 진행상황 파악이 쉬워집니다.
  • JUnit과 같은 자동화 도구를 이용한 TDD테스트케으스를 단위 테스트로 사용이 가능합니다.
  • 개발자가 기대하는 앱의 동작에 관한 문서를 테스트하여 제공해줌
  • 단점
  • 기존 개발 프로세스에서 테스트케이스 설계가 추가되므로 생산 비용 증가
  • 테스트의 방향성, 프로젝트 성격에 따른 테스트 프레임워크 선택 등 추가로 고려할 부분이 증가