Backend
Algorithm
Project
codesche’s blog
/
Education
/
Practical Testing: 실용적인 테스트 가이드
Backend
Algorithm
Project
codesche’s blog
/
Education
/
Practical Testing: 실용적인 테스트 가이드
Share
Backend
Algorithm
Project
🧪
Practical Testing: 실용적인 테스트 가이드
생성일
2025/01/24 05:52
태그
inflearn
게시일
Practical Testing: 실용적인 테스트 가이드
Search
Layered Architecture → 관심사의 분리
통합 테스트
•
여러 모듈이 협력하는 기능을 통합적으로 검증하는 테스트
•
일반적으로 작은 범위의 단위 테스트만으로는 기능 전체의 신뢰성을 보장할 수 없다.
•
풍부한 단위 테스트 & 큰 기능 단위를 검증하는 통합 테스트
Spring
Library vs Framework
•
Library - 내 코드가 주체가 되어 필요한 기능이 있는 경우 외부에서 가져올 수 있는 것을 의미
•
Framework - 이미 동작할 수 있는 갖추어진 틀에서 내 코드가 수동적으로 역할을 하게 됨
11. Spring & JPA 기반 테스트
테스트는
문서
다.
•
프로덕션 기능을 설명하는 테스트 코드 문서
•
다양한 테스트 케이스를 통해 프로덕션 코드를 이해하는 시각과 관점을 보완
•
어느 한 사람이 과거에 경험했던 고민의 결과물을 팀 차원으로 승격시켜서, 모두의 자산으로 공유할 수 있음
DisplayName을 섬세하게
•
DisplayName을 IDE에서 확인할 수 있음
•
정리 1
•
정리 2
10. 테스트는 [] 다.
Test Driven Development
프로덕션 코드보다 테스트 코드를 먼저 작성하여 테스트가 구현 과정을 주도하도록 하는 방법론
•
실패하는 테스트 작성
•
테스트 통과 최소한의 코딩
•
구현 코드 개선 테스트 통과 유지
9. TDD: Test Driven Development + 키워드 정리
요구사항
•
가게 운영 시간(10:00~22:00) 외에는 주문을 생성할 수 없다.
테스트 하고자 하는 영역 분리
•
외부로 분리할수록 테스트 할 수 있는 코드는 많아진다.
테스트하기 어려운 영역
•
관측할 때마다 다른 값에 의존하는 코드
•
외부 세계에 영향을 주는 코드
테스트하기 쉬운 영역
8. 테스트하기 어려운 영역을 분리하기 + 키워드 정리
요구사항
•
키오스크 주문을 위한 상품 후보 리스트 조회하기
•
상품의 판매 상태 : 판매중, 판매보류, 판매중지
•
id, 상품 번호, 상품 타입, 판매 상태, 상품 이름, 가격
8. Persistence Layer 테스트(1)
요구사항
한 종류의 음료 여러 잔을 한 번에 담는 기능
테스트 케이스 세분화하기
•
질문하기: 암묵적이거나 아직 드러나지 않은 요구사항이 있는가?
•
세분화하기
테스트 코드 작성 예제
7. 테스트 케이스 세분화하기
단위 테스트
•
작은
코드 단위를
독립적
으로 검증하는 테스트 (
코드 - 클래스 or 메서드
)
•
검증 속도가 빠르고, 안정적이다.
Junit 5
•
단위 테스트를 위한 테스트 프레임워크
•
https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations
AssertJ
•
테스트 코드 작성을 원활하게 돕는 테스트 라이브러리
•
풍부한 API, 메서드 체이닝 지원
•
https://joel-costigliola.github.io/assertj/
6. 단위 테스트 (Unit Test)
요구사항
•
주문 목록에 음료 추가/삭제 기능
•
주문 목록 전체 지우기
•
주문 목록 총 금액 계산하기
•
주문 생성하기
코드 작성
•
Beverage
•
Americano
•
Latte
•
Order
5. 수동테스트 vs 자동화된 테스트
초간단 카페 키오스크 시스템
•
주문 기능에 집중해서 구현
개발 환경
•
IntelliJ Ultimate
•
Vim (plugin)
4. 샘플 프로젝트 소개 & 개발 환경 안내
테스트하면 떠오르는 키워드
•
왜 굳이?
•
귀찮다.
•
시간이 오래 걸린다.
Production code
•
테스트를 하지 않으면 발생할 수 있는 상황
테스트를 통해 얻고자 하는 것
•
빠른 피드백
•
자동화
3. 테스트는 왜 필요할까
•
효과적인 학습을 하기 위해 가장 먼저 선행되어야 하는 것?
•
키워드 정리
2. 어떻게 학습하면 좋을까?
왜 테스트 코드 작성하는가?
•
주니어 개발자에게 가장 기대하는 요소 중 하나
•
채용 시 구현 과제 등에서 테스트 작성 여부, 테스트 코드 구현 방식을 확인
무엇을 학습하는가?
•
테스트 코드가 필요한 이유
•
좋은 테스트 코드란 무엇일까?
•
실제 실무에서 진행하는 방식 그대로 테스트를 작성해가면서 API를 설계하고 개발하는 방법
•
정답은 없지만, 오답은 있다! 구체적인 이유에 근거한 상세한 테스트 작성 팁
1. 강의 소개