Group Study (22-23)14 [TDD] 8. 테스트 범위와 종류 작성자 : 김연지 실습 환경 Java 11 Spring Boot 2.7.7 목차 및 내용 정리 테스트 범위 통합 테스트 예 테스트 범위 하나의 기능이 올바르게 작동하려면 컨트롤러, 서비스, 모델과 같은 자바 코드와 프레임워크 설정에 문제가 없어야 할 뿐 아니라 브라우저에서 실행되는 자바스크립트 코드, HTML과 CSS 등이 정상 동작해야 한다. 또한, DB의 테이블도 올바르게 생성되어 있어야 한다. 개발자가 코드를 조금씩 수정할 때마다 브라우저부터 DB까지의 전 범위를 테스트해야 하는 것은 아니며 출시 전에 DB와 연동할 때 사용한 쿼리만 확인해서도 안 된다. 테스트의 범위는 테스트의 목적과 수행하는 사람에 따라 달라진다. 테스트 범위에 따른 종류는 세 가지로 나눠볼 수 있다. 단위 테스트 통합 테스트 .. 2023. 3. 5. [TDD] 7. 테스트가 가능한 설계 작성자 : 김정호 실습 환경 - Java 17 - Spring Boot 3.0.1 - wsl 2 테스트가 어려운 코드 개발을 진행하다 보면 테스트할 수 없는 상황이 발생하게 된다. 어떤 경우가 있는지 살펴보도록 하자. 하드 코딩된 경로 존재 의존 객체를 직접 생성 정적 메서드 사용 실행 시점에 따라 달라지는 결과 역할이 섞여있는 코드 그 외 메서드 중간에 소켓 통신 코드가 포함 콘솔에서 입력받거나 결과를 콘솔에 출력 테스트 대상이 사용하는 의존 대상 클래스나 메서드가 final -- 이 경우 대역으로 대체 어려울 수 있음 테스트 대상의 소스를 소유하고 있지 않아 수정 어려움 하드 코딩 & 의존 객체 직접 생성 예시 public class PaySync { // 의존 객체를 직접 생성하고 있다. priva.. 2023. 3. 3. [TDD] 6. 대역 작성자: 정창우 대역의 필요성 외부 요인 테스트를 작성하다보면 외부 요인이 필요한 시점이 있다. 테스트에 관여하는 주요 외부 요인은 다음과 같다. 파일 시스템을 이용 DB로부터 데이터를 조회하거나 데이터를 추가 외부 HTTP 서버와 통신 외부 요인 문제점 테스트 대상이 이런 외부 요인에 의존하면 테스트를 작성하고 실행하기 어려워진다. 테스트 코드에서 사용하는 외부 API 서버가 일시적으로 장애가 나면 테스트를 원활하게 수행하기 어렵다. DB의 경우도 상황에 맞게 데이터를 구성하는 것이 항상 가능한 것은 아니다. 외부 요인의 문제점을 정리하면 다음과 같다. 테스트 작성을 어렵게 만든다. 테스트의 결과를 예측할 수 없다. 테스트 대상에서 의존하는 요인 때문에 테스트가 어려울 때는 대역을 써서 테스트를 진행할.. 2023. 2. 24. [Spring-core-JPA] 6주차 - JPA 영속성 컨텍스트 작성자: 최병윤 안녕하세요. 이번 6주차에는 JPA 영속성 컨텍스트에 대한 스터디를 진행하고자 합니다. 지난 주차와 마찬가지로 단순 단답 위주의 질문 보다는 서술이 가능한 질문 위주로 연습하도록 합니다. 영속성 컨텍스트란? 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해서 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. em.persist(object) 는 엔티티 매니저를 사용해서 object 엔티티를 영속성 컨텍스트에 저장한다는 의미이다. 영속성 컨텍스트의 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 .. 2023. 2. 11. [Spring-Core-JPA] 5주차 - ORM과 JPA의 추상화 계층 그리고 특징들 작성자: 최병윤 이번 5주차에서는 본격적으로 JPA를 공부하기에 앞서서 ORM 그리고 JPA는 무엇이며 이러한 것들이 필요한 이유에 대해서 알아보는 시간을 가지고자 한다. 이번 주는 간단한 답변보다는 서술할 수 있는 수준에 초점을 맞추고자 합니다. 주제에 앞서 먼저 ORM와 JPA의 기본인 영속성에 대해 짚고 넘어가고자 합니다. Persistence Persistence란 무엇인가? Persistence 즉 영속성이란 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말합니다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 됩니다. 즉 휘발성이 있습니다. Object Persistence인 영구적인 객체는 무엇일까요? 메모리 상의 데.. 2023. 2. 4. [Spring-Core-JPA] 4주차 - 컴포넌트 스캔 그리고 의존관계 자동 주입 작성자: 최병윤 이번 4주차 주제는 컴포넌트 스캔 그리고 의존관계 자동 주입이다. 컴포넌트 스캔이란? 스프링 빈을 등록할 때 구성파일에 @Bean을 등록해서 사용할 수 있었다. 하지만 관리할 빈이 많아지면 이 방식이 관리하기 번거로워진다. 그래서 굳이 빈 설정파일을 만들지 않거나 @Bean을 안쓰고 빈 등록을 할 수 있는 방식을 쓰게 되었다. 그게 @Component를 써서 컴포넌트 스캔을 하는 방식이다. 설정파일이 없다면 의존관계를 어떻게 주입할까? @Autowired를 사용해서 자동 의존관계 주입을 한다. 자동 의존관계 주입은 아래서 살펴본다. 컴포넌트 스캔이란 스프링이 스프링 빈으로 등록될 준비가 된 클래스들을 스캔해서 빈으로 등록해주는 과정을 말한다. @Component 어노테이션이 붙어있는 클래.. 2023. 2. 4. 이전 1 2 3 다음