I leaned

단위테스트란? 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차 JUnit은 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위테스트를 쉽게 해주는 테스트 지원 프레임워크 junit 단정(assert) 메서드로 테스트 케이스의 수행 결과를 판별합니다. ( assertEquals(예상val, 실제val)) JUnit4 부터는 테스트를 지원하는 어노테이션을 제공합니다. ( @Test, @Before, @After) @Test 메서드가 호출할 때마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지게 합니다. Juiit 지원 어노테이션 @Test - 해당 어노테이션이 선언되면 메서드는 테스트를 수행하는 메..
단위 테스트 순서 1. 더미데이터 준비(테스트를 위한 데이터를 준비한다. 직접 데이터를 테스트코드에서 넣어도 되고 FakeStroe,FakeUser 등의 클래스나 함수를 만들어 둬도 된다. 또는 spring data-faker 라이브러리를 이용해도 된다. 2. Test할때는 데이터베이스 새로 만들어서 해야한다. 실제 데이터베이스와의 연결을 끊어야함(실수조심!!) config파일여러개 만들어서 관리해야함(spring boot 기능) 3. 테스트 패키지에 테스트 파일을 생성한다. 4. 테스트 코드 작성 레포지토리 테스트의 목적은 올바른 쿼리, 좋은 쿼리가 나가도록 테스트하는 것이다. 기본적으로 JPA메소드들은 잘 만들어져 있다. 의도대로 쿼리가 나가는지, 과도한 쿼리, 쓸데없이 무거운 쿼리가 나가지는 않는지..
Open In View "Open in View"는 웹 애플리케이션에서 사용되는 개념으로, 데이터베이스의 트랜잭션을 뷰(View) 가 렌더링되는 시점까지 연장하는 것을 의미한다. 이 개념은 주로 ORM(Object-Relational Mapping) 프레임워크에서 사용된다. 전통적인 방식에서는 트랜잭션을 서비스(Service) 레이어에서 시작하고, 데이터 액세스 계층(DAO, Repository)에서 종료한다. 스프링부트에서는 @Transactional이 붙은 레이어(서비스)에서 트랜잭션이 시작되고, 서비스가 종 료될 때, 트랜잭션이 종료된다. 이것은 open in view를 false로 설정한 것과 동일하다. "Open in View"를 사용하는 경우 트랜잭션의 시작은 서비스이고, 트랜잭션의 종료도 서..
DTO Data Transfer Object"의 약어로, 데이터 전송 객체를 의미 DTO는 소프트웨어 시스템에서 데이터를 전송하거나 교환하는 데 사용되는 객체 일반적으로 DTO는 비즈니스 계층과 프레젠테이션 계층 사이에서 데이터 전달을 위해 사용된다. 비즈니스 계층은 데이터베이스나 외부 시스템과 상호 작용하여 데이터를 검색하거나 수정하는 작업을 수행 이러한 작업은 DTO를 사용하여 필요한 데이터를 프레젠테이션 계층에 전달하거나 외부 시스템으로 전송하는 데 사용될 수 있다. DB - Table - Model - DTO Model또는 Entity 또는 테이블을 노출시키지 않음 - 필요한 정보만 외부(프론트엔트)로 넘겨줌 DTO는 공유해서 사용하면 안된다. - API스펙이 바뀔경우 수정이 어렵다.
컨트롤러의 책임 클라이언트의 요청(값) 수신 Content-Type을 확인해서 application/json 이면 @RequestBody를 붙여준다. x-www-form-urlencoded 이면 DTO로 받아준다. 유효성검사(DB가 필요없는 모든 검사) DispatcherServlet이 @Valid 어노테이션과 Errors errors 매개변수를 작성해주면 자동으로 유효성 검사를 진행해주고, 유효성 검사가 실패하면 errors 변수에 에러를 담아준다. 잘못 받은 값에 대한 응답 AOP(관점지향 프로그래밍)처리하는 것이 좋다. 정상적으로 처리되었을 때 응답 서비스의 책임 DB연결 DTO 생성 비즈니스 로직 구현 서비스 레이어는 애플리케이션의 비즈니스 규칙을 구현합니다. 비즈니스 로직은 애플리케이션의 핵심 ..
DTO(Domain Transfer Object) 유효성 검사 소프트웨어 개발에서 DTO 객체의 데이터가 요구사 항에 맞는 유효한 값인지 확인하는 과정 DTO는 주로 데이터 전송을 위해 사용되는 객체로, 사용자 인터페이스(UI)와 비즈니스 로직 간의 데이터 전달을 담당. DTO 유효성 검사는 다음과 같은 목적을 가지고 수행된다. 데이터의 유효성 확인: DTO 객체의 데이터 필드에 입력된 값이 올바른 형식, 범위, 제약 조건 을 충족하는지 확인 ex) 숫자 필드에는 숫자 값이 입력되어야 하고, 문자열 필드 에는 특정 길이나 패턴이 적용되어야 한다. 비즈니스 규칙 준수 확인: DTO 객체의 데이터가 비즈니스 규칙을 준수하는지 검사 ex) 주문을 나타내는 DTO에서 수량 필드는 음수가 될 수 없고, 가격 필드..
N + 1 문제 연관관계가 설정된 엔티티 사이에서 한 엔티티를 조회하였을 때, 조회된 엔티티의 개수(N 개)만큼 연관된 엔티티를 조회하기 위해 추가적인 쿼리가 발생하는 문제를 의미 개인적으로 한 엔티티를 조회하는데 여러개의 쿼리가 나가는 것이니깐..1+N이 더 맞는 말이 아닐까하는 생각이 있다.. 한번의 쿼리로 가져올 수 있음에도 테이블 수 만큼의 쿼리가 나간다는 뜻 (물론 상황에 따라 좋을 수도 안좋을 수도 있다.) ex) 멤버와 팀 테이블이 있을 때 팀정보는 필요업속 멤버만 필요하다면 각각 나가는 것이 유리하다. 멤버와 팀 정보가 항상 같이 필요할 때는 쿼리가 한번만 나가는 것이 유리하다. Fetch join 과 일반Join 비교 일반 Join Fetch Join과 달리 연관 Entity에 Join을..
· I leaned/Etc
BDD패턴(given, when, then) 행위 주도 개발 (Behavior Driven Development) BDD는 TDD를 근간으로 파생된 개발 방법이다. TDD(Test Driven Development)에서 한발 더 나아가 테스트 케이스 자체가 요구사양이 되도록 하는 개발 방법이다. BDD 기본 패턴 Given (주어진 상황): 테스트를 수행하기 위해 필요한 초기 상태를 설정합니다. 테스트에 필요한 객체, 데이터 또는 환경을 준비한다. When (동작): 실제로 테스트하려는 동작이 발생합니다.특정 메서드를 호출하거나 어떤 이벤트가 발생하는 등의 동작을 실행합니다. Then (결과): 기대하는 결과를 명시합니다. 예상되는 동작의 출력, 상태 변화 또는 예외 발생 등을 확인합니다. 테스트 결과를..
윤재에요
'I leaned' 카테고리의 글 목록 (4 Page)