개념 공부30 [Test Code / Java] Spring 프로젝트에서 Persistence Layer의 테스트 Persistence Layer의 테스트Persistence Layer는 데이터에 액세스하는 영역이다.데이터베이스에 액세스하는 로직만 갖고 있기 때문에, 단위 테스트의 성격을 많이 띠고 있다.Persistence Layer를 테스트하는 이유는 내가 작성한 코드로 인해 쿼리가 제대로 나갈 것인가를 검증하기 위함이다. @SpringBootTest, @DataJpaTest@SpringBootTest: 스프링에서 통합 테스트를 제공하는 어노테이션. 이 어노테이션을 달고 테스트하면 스프링 서버를 띄워서 테스트할 수 있다.@DataJpaTest: 얘도 스프링 서버를 띄워서 테스트하는 어노테이션이다. 근데 이 어노테이션은 스프링부트 테스트보다는 가볍다. JPA 관련된 빈들만 띄워서 주입을 해주기 때문이다. Persi.. 2024. 12. 29. [Test Code / Java] @DisplayName과 BDD 테스트는 []다.테스트란 문서라고 할 수 있다.테스트 코드는 프로덕션 기능을 설명하는 문서가 될 수 있다.다양한 테스트 케이스를 통해 프로덕션 코드를 이해하는 시각과 관점을 보완할 수 있다.어느 한 사람이 과거에 경험했던 고민의 결과물을 팀 차원으로 승격시켜서, 모두의 자산으로 공유할 수 있다.DisplayName@DisplayName은 Junit5부터 시작된 어노테이션이다.테스트 메서드 이름만으로는 이 테스트가 어떤 테스트인지 알아보기 어려울 수 있다.이때 @DisplayName 어노테이션을 통해 테스트에 대한 좀 더 상세한 설명을 적을 수 있다.또한 인텔리제이에서 작업할 때 @DisplayName을 사용하면 유용한 점이 하나 더 있다.인텔리제이의 Settings > Build, Execution, D.. 2024. 12. 28. [Test Code / Java] TDD(Test Driven Development) TDD: Test Driven Development란?프로덕션 코드보다 테스트 코드를 먼저 작성하여 테스트가 구현 과정을 주도하도록 하는 방법론즉, 기능 구현보다 테스트를 먼저 구현하고, 기능을 구현하거나 수정할 때 테스트 코드의 도움을 받을 수 있는 방식을 의미한다. Red-Green-RefactorTDD의 방법으로는 Red, Green, Refactor를 주로 언급한다.Red: 실패하는 테스트를 먼저 작성. → 기능 구현이 돼있지 않기에 테스트가 실패하는 것이 당연하다.Green: 빠른 시간 내에 테스트를 통과하는 최소한의 기능 구현하기. → 초록불을 볼 수만 있다면, 이 단계에서의 구현은 다소 엉터리여도 된다.Refactor: 테스트 통과 상태를 유지하면서 구현 코드를 개선해나간다.Red-Green.. 2024. 12. 27. [Test Code / Java] 단위 테스트 단위 테스트작은 코드 단위(클래스 또는 메서드)를 독립적(=네트워크를 탄다든가 하는 외부 상황에 의존하지 않음)으로 검증하는 테스트검증 속도가 빠르고 안정적이다.JUnit5단위 테스트를 위한 테스트 프레임 워크XUnit - Kent Beck자바 말고도 여러 진영에서 사용여러 어노테이션 지원 (ex. @Test)AssertJ테스트 코드 작성을 원활하게 돕는 테스트 라이브러리풍부한 API, 메서드 체이닝 지원깔끔한 코드 작성 가능 테스트 케이스 세분화하기질문하기: 암묵적이거나 아직 드러나지 않은 요구사항이 있는가?이런 것을 항상 염두에 두어야 한다.해피 케이스예외 케이스ex) 아메리카노 0개 이런식으로 입력되면 어떡함?→ 경계값 테스트가 굉장히 중요하다!범위(이상, 이하, 초과, 미만), 구간, 날짜예를 .. 2024. 12. 26. [Network] OSI 7계층 OSI 7계층이란?OSI 7계층이란 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 의미한다. 7계층을 4개로 나누어서1, 2계층: Network Interface3계층: Internet 계층4계층: Transport 계층5, 6, 7계층: Application 계층으로 구분하기도 한다. 송신할 때는 송신 측에서 7계층, 6계층, ... 윗 계층부터 하나씩 거치면서 데이터에 헤더를 하나씩 붙인다. (캡슐화)그리고 수신 측에서는 1계층, 2계층, ... 아래 계층부터 거치면서 헤더를 하나씩 제거하는 형태이다. (역캡슐화)7계층으로 나눈 이유는?계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다.흐름을 파악하기가 쉽고, 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 .. 2024. 12. 22. [Redis] Redis 데이터의 영구 저장(RDB, AOF) Redis PersistencyRedis는 인메모리 DB이지만, 데이터를 디스크에 영구 저장 할 수 있는 특징이 있다.그래서 Redis가 restart되더라도 디스크에 저장해놓은 데이터를 다시 읽어서 메모리에 로딩하기 때문에 데이터가 유실되지 않는다. Redis에는 데이터를 저장하는 방법이 RDB(snapshotting) 방식과 AOF(Append only file) 두가지가 존재한다. RDB(snapshotting)특정 시점에 메모리에 있는 모든 데이터를 바이너리 파일로 저장하는 방식이다.이는 개발자가 직접 세팅하지 않아도 자동으로 .rdb라는 확장자의 파일에 인메모리 데이터를 저장하도록 기본으로 설정돼있다. 이 방식은 특정 시점으로 데이터를 복구하는 것이 가능하며, 레디스 데이터의 버저닝 또한 가능하.. 2024. 12. 10. 이전 1 2 3 4 5 다음