본문 바로가기

부트캠프 개발일기123

57일차: API 문서화 ❯ API 문서화 애플리케이션의 API를 사용할 수 있도록 해주는 것을 API 문서화라고 한다. 클라이언트가 백엔드 애플리케이션에 요청을 전송하기 위해 알아야하는 요청 정보(URL, RequestBody, Query Parameter 등)를 문서로 정리한 것을 API 문서, API 스펙(사양)이라고 한다. API 문서를 직접 작성할수도 있겠지만 혹시 코드 일부가 변경되었을 때 해당 부분을 찾아서 수정해야하는 번거로움이 있다. 따라서 문서 자동화를 통해 시간을 단축하고 완성도를 향상시킬 수 있다. API 문서화를 하는 방법은 크게 두가지가 있다. Swagger: API 문서 자동화 오픈소스. 소스코드에 @ApiOperation, @ApiResponse, @ApiParam 등의 애너테이션을 붙여서 문서화를.. 2023. 5. 3.
56일차: Mockito ❯ Mock 사전적으로 "가짜의, 모의의, 거짓의" 라는 뜻을 가진다. 진짜와 유사하게 기능을 테스트 해볼 수 있도록 하는 가짜 객체를 의미한다. 프로그래밍에서 Mock 객체를 사용하는 것을 Mocking 이라고 한다. 테스트에서 Mock 객체를 사용하는 이유는 슬라이스 테스트 등에서 해당 테스트 영역에 집중하기 위해서이다. Mock 객체를 사용하지 않을때는 Controller 테스트를 위해서 서비스계층과 데이터 액세스 계층까지 흐름이 이어진다. 이 때 Mock 서비스 객체를 사용해서 Mock 객체의 메서드를 호출함으로써 다른 계층들까지 흐름이 이어지지 않는다. ❯ Mockito Mock 객체로 Mocking을 할 수 있게 해주는 대표적인 오픈 소스 라이브러리이다. 1. @MockBean @MockBea.. 2023. 5. 2.
55일차: 슬라이스 테스트 슬라이스 테스트란 특정 계층만 잘라서(Slice) 테스트하는것을 의미한다. ❯ API 계층 테스트 API 계층 테스트 대상은 클라이언트 요청을 받아들이는 Controller 라고 할 수 있다. 크게 두가지 애너테이션을 사용해 테스트 코드를 작성할 수 있다. @SpringBootTest: 스프링 부트 기반 애플리케이션 테스트를 위한 Application context를 생성한다. @AutoConfigureMockMvc: Controller 테스트를 위한 자동 구성작업을 해준다. MockMvc 객체를 사용가능하게하며 MockMvc를 통해 Controller의 메서드를 호출할 수 있다. // Controller 테스트 클래스 기본 구조 import org.junit.jupiter.api.Test; import.. 2023. 5. 1.
54일차: 테스팅(단위테스트, JUnit) ❯ 테스팅(Testing) 애플리케이션 구현을 하고나면 코드가 의도한대로 작동하는지 테스트를 해야한다. 테스트란 어떤 대상에 대한 기준을 정해놓고 정해진 기준에 맞는지 검증하는것을 의미한다. 애플리케이션 테스트는 크게 네가지로 구분할 수 있다. 기능테스트: 애플리케이션을 사용하는 사용자 입장에서 기능이 올바르게 동작하는지 테스트 하는것 통합테스트: 클라이언트 툴 없이 테스트 코드를 통해 애플리케이션이 정상 동작하는지 테스트 하는것 슬라이스 테스트: 특정 계층이 올바르게 동작하는지 테스트 하는것. Mock(가짜) 객체를 사용해서 테스팅 단위테스트: 기능이 제대로 동작하는지 테스트하는것. 대부분 메서드 단위로 작성됨. 단위테스트 F.I.R.S.T 원칙 Fast: 테스트 케이스는 빨라야한다. Independe.. 2023. 4. 28.
53일차: @Async 비동기처리와 Spring Event (+ Transaction) 오늘은 트랜잭션 구현 실습을 진행했다. 사실 스프링에서 트랜잭션은 @Transactional을 사용하면 쉽게 구현할 수 있다. 그래서 실습에서 몇가지 제약 조건을 걸고 트랜잭션을 구현했다. (Case) 회원가입을 하면 가입한 메일로 가입 완료 메일이 전송된다. 만약 가입 완료 메일이 정상적으로 전송되지 않으면 가입 과정에서 오류가 생긴 것으로 보고 회원가입 정보를 삭제하는 코드를 구현하였다. (실제 상황이라면 메일 전송에 오류가 생기면 카톡이나 SMS를 보내거나, 혹은 회원가입을 진행 중 상태로 두는 등 여러 가지 조치방법이 있을 수 있다.) 회원 데이터 저장과 메일 전송을 *비동기적으로 처리하여 실행 시간을 단축시키는 방법을 사용해야한다. "동기(Synchronous) 방식"은 진행 과정이 순차적으로 .. 2023. 4. 27.
52일차: Transaction(트랜잭션) ❯ Transaction(트랜잭션) Transaction은 31일차 SQL 학습에서 가볍게 다루고 넘어갔던 내용이다. 여러개의 작업을 하나의 그룹처럼 묶어서 처리하는 작업 단위이다. 작업 중 하나라도 처리에 실패하면 전체가 실패한 것으로 간주하며, 모든 작업이 성공해야 정상적으로 종료되는 단위를 말한다. 트랜잭션은 ACID의 특성을 가진다. (참고: 2023.03.28 - [부트캠프 개발일기/Database] - 부트캠프 31일차 - SQL, ACID) Commit: 모든 작업을 최종적으로 데이터베이스에 반영하는 명령어이다. commit 명령을 수행하면 하나의 트랜잭션이 종료되며 변경된 내용이 데이터베이스에 영구적으로 저장된다. Rollback: 작업 중 문제가 발생했을때 트랜잭션에서 수행했던 작업을 취.. 2023. 4. 26.