hanghae99/TIL
[항해 취업코스] 취준 기록 10일차
욘아리
2024. 3. 15. 11:43
📌 프로젝트 관련 예상 질문
1. 테스트코드를 사용하지 않고 기능 테스트를 했던 경험을 상세하게 설명해주세요, 부족한 부분이 있었다면 어떠한 부분이 부족했는지 설명해주세요.
- 포스트맨을 사용하여 테스트를 진행했습니다. 포스트맨을 사용하면 직관적인 인터페이스를 통해 빠르게 요청을 보내고 응답을 확인할 수 있었습니다.
- 하지만, 자동화된 테스트를 수행하기 어려웠고, 수동으로 확인하는 것은 많은 시간이 소요됩니다. 또한, 수동으로 테스트를 수행한 결과는 재사용하기 어려워 새로운 기능을 추가하거나 수정할 대마다 동일한 테스트를 수행해야 했습니다.
- 따라서 테스트 코드를 작성하여 자동화된 테스트 케이스를 개발할 필요성을 느꼈습니다.
2. JPA의 더티체킹이 어떤 방식으로 동작하는지 설명해주시고, 만약 JPA를 사용하지 않는다면 어떤 식으로 개발을 하셨을 것 같으신가요?
- 더티 체킹이란 JPA에서 엔티티의 상태를 감지하고, 변경이 일어나면 자동으로 변경된 내용을 데이터베이스에 반영하는 기능입니다.
- JPA에서는 엔티티를 조회하면 해당 엔티티의 현재 상태를 스냅샷으로 저장합니다. 그리고 트랜잭션이 끝나는 시점에 비교해서 다른 점이 있다면 update 쿼리를 생성하여 데이터베이스로 전달합니다.
- 만약 JPA를 사용하지 않는다면, 직접 SQL 쿼리를 작성하고 데이터베이스와 상호 작용을 관리해야 합니다. 엔티티의 상태 변화를 감지하는 데 필요한 추가적인 로직을 개발해야 합니다.
3. 유닛 테스트와 e2e 테스트에 대해 설명해주세요.
- 유닛 테스트는 작은 단위의 코드에 집중하여 기능이 제대로 동작하는지를 확인하고, E2E 테스트는 전체 시스템의 동작을 확인하여 사용자의 관점에서 시스템이 예상대로 동작하는지를 확인합니다.
- 유닛은 보통 함수, 메서드 또는 클래스와 같은 작은 단위를 의미하고, 이러한 각각의 유닛이 예상대로 동작하는지 검증하기 위해 작성됩니다. 즉, 특정 기능이나 동작에 대해 제대로 수행하는지를 확인합니다. 보통 가상 객체를 사용하여 외부 의존성을 제어하고, 테스트의 격리성을 보장합니다.
- E2E 테스트는 시나리오를 시뮬레이션하여 사용자 경험을 확인하고, 시스템의 완전한 통합을 확인합니다. 이는 특정 기능의 모든 구성 요소들이 함께 잘 동작하는지를 확인하는 데 중점을 둡니다.
4. API에서 Role마다 접근 가능/불가 기능을 구현하려면 어떻게 할 수 있을까요?
- API에서 역할에 따라 접근 가능/불가능한 기능을 구현하는 것은 권한 관리 시스템을 통해 이루어집니다. 사용자의 역할에 맞는 권한을 설정하고, 이 권한에 따라 특정 API 엔드포인트에 대한 접근을 허용하거나 차단하는 것입니다.
- 저는 스프링 시큐리티를 활용하여 각 요청에 대한 권한을 설정했습니다. API 엔드포인트에 대한 접근을 제어하는 데에는 ‘hasRole()’ 메서드를 사용하고, JWT 토큰을 통해 사용자의 역할을 확인하여 권한을 관리합니다. 이를 통해 역할마다 접근 가능/불가능한 기능을 구현할 수 있었습니다.
항해 개발자 취업 리부트 코스를 수강하고 작성한 콘텐츠 입니다.
https://hanghae99.spartacodingclub.kr/reboot
IT 커리어 성장 코스 항해99, 첫 취업부터 현직자 코스까지
항해99는 실무에 집중합니다. 최단기간에 개발자/PM으로 취업하고, 현직자 코스로 폭발 성장을 이어가세요. 실전 프로젝트, 포트폴리오 멘토링, 모의 면접까지.
hanghae99.spartacodingclub.kr