반응형

https://bit.ly/4hTSJNB

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

1) 공부시작

 

2) 공부끝

 

3)수업장

 

4)

 

 

내용

 

 

1. 통합 테스트가 무엇이며, 왜 중요한가요?

답변:

통합 테스트는 소프트웨어 시스템의 개별 모듈이나 구성 요소가 함께 작동하는지 확인하는 테스트입니다. 단위 테스트가 개별 기능을 검증한다면, 통합 테스트는 이들이 상호작용할 때 발생할 수 있는 문제를 잡아냅니다. 중요성은 시스템의 안정성과 신뢰성을 보장하며, 배포 전 결함을 줄이는 데 있습니다.

 

2. 통합 테스트와 단위 테스트의 차이는 무엇인가요?

답변:

단위 테스트는 개별 함수나 모듈을 독립적으로 테스트하며, 외부 의존성을 모킹합니다. 반면 통합 테스트는 여러 모듈이나 시스템 간 상호작용을 검증하며, 실제 환경에 가까운 조건에서 진행됩니다. 예를 들어, API와 데이터베이스 간 연결을 확인하는 건 통합 테스트입니다.

 

3. 통합 테스트를 설계할 때 어떤 전략을 사용하나요?

답변:

주로 상향식(Bottom-Up), 하향식(Top-Down), 샌드위치(Sandwich) 전략을 사용합니다. 상향식은 하위 모듈부터 테스트하며, 하향식은 상위 계층부터 시작해 스텁을 활용합니다. 저는 시스템 구조와 의존성에 따라 적합한 전략을 선택하며, 보통 상향식을 선호합니다.

 

4. 통합 테스트에서 외부 종속성을 어떻게 관리하나요?

답변:

외부 종속성은 모킹(Mocking)이나 스터빙(Stubbing)으로 관리합니다. 예를 들어, 외부 API가 필요할 때 가짜 응답을 제공하는 모의 객체를 만들거나, 테스트 전용 데이터베이스를 설정해 실제 환경을 시뮬레이션합니다. 이렇게 하면 테스트의 독립성과 재현성을 높일 수 있습니다.

 

5. 통합 테스트에 사용하는 도구는 무엇인가요?

답변:

저는 주로 Postman(API 테스트), Selenium(웹 애플리케이션), JUnit이나 pytest(코드 기반 테스트)를 사용합니다. 데이터베이스 통합 테스트에는 H2나 Docker를 활용해 가상 환경을 설정합니다. 도구 선택은 프로젝트 요구사항과 테스트 대상에 따라 달라집니다.

 

6. 통합 테스트에서 흔히 겪는 도전 과제와 해결 방법은?

답변:

흔한 도전 과제는 환경 불일치, 데이터 의존성, 테스트 실행 시간입니다. 이를 해결하기 위해 컨테이너화(Docker)로 환경을 표준화하고, 테스트 데이터를 사전에 준비하며, 병렬 실행으로 시간을 단축합니다. 예를 들어, Jenkins에서 병렬 파이프라인을 설정한 경험이 있습니다.

 

7. 통합 테스트 실패를 디버깅하는 방법은 무엇인가요?

답변:

먼저 로그를 확인해 오류의 원인을 좁히고, 실패한 테스트 케이스를 재현합니다. 그 다음, 모듈 간 데이터 흐름을 추적하며 브레이크포인트를 설정해 디버깅합니다. 예를 들어, API 응답이 예상과 달랐을 때 Postman으로 요청을 재검증한 적이 있습니다.

 

8. CI/CD 파이프라인에서 통합 테스트의 역할은 무엇인가요?

답변:

CI/CD에서 통합 테스트는 코드 변경 후 시스템이 여전히 제대로 작동하는지 확인하는 안전망 역할을 합니다. 빌드 후 단위 테스트를 거친 뒤 통합 테스트를 실행해 배포 전 문제를 잡아냅니다. 저는 GitHub Actions에서 이를 자동화한 경험이 있습니다.

 

9. 통합 테스트 중 성능 문제를 어떻게 다루나요?

답변:

성능 문제는 JMeter나 Locust 같은 도구로 부하 테스트를 병행해 식별합니다. 통합 테스트 중 응답 시간이 느리면 병목 지점을 찾아 최적화하거나, 캐싱을 추가합니다. 예를 들어, 데이터베이스 쿼리 최적화로 성능을 개선한 적이 있습니다.

 

10. 통합 테스트를 안전한 환경에서 수행하려면 어떻게 하나요?

답변:

네트워크 격리와 접근 제어를 위해 VPN이나 로컬 테스트 환경을 설정합니다. 민감한 데이터는 마스킹하거나 더미 데이터를 사용하며, 테스트 환경을 초기화합니다. 보안 스캔 도구를 추가로 돌려 취약점을 점검하기도 합니다.

반응형

+ Recent posts