*책 내용과 다르게, 다음과 같은 환경에서 프로젝트 생성
- Windows11(윈도우 11) 환경
- 자바 JDK 17 버전 설치 https://yungenie.tistory.com/11
[Java] 차근차근 Java 설치하기 (JDK17, Window 11)
자바 개발 도구 설치 방법에 대해서 알아보겠습니다. Java17은 LTS(Long Term Support : 장기 지원) 릴리즈로 1년 후까지 기술 지원 및 버그를 개선한 서비스를 제공받을 수 있습니다. 업데이트 버전을 꾸
yungenie.tistory.com
- 스프링 부트 4.31.0 사용 - STS(Spring Tool Suite) 설치(Spring Tools for Eclipse - https://spring.io/tools)
=> https://priming.tistory.com/147 참고
[Windows] Spring Tool Suite 4(STS 4) 다운로드 및 설치
STS란?Spring Tool Suite(STS)는 스프링 프로젝트를 생성하고, 개발할 수 있게 해주는 도구입니다. STS 설치 과정에 대해 설명드리겠습니다. 설치 파일 다운로드STS 공식 사이트에서 설치 파일을 다운로
priming.tistory.com
- MySQL Community Server 8.0.42 설치 https://dev.mysql.com/downloads/mysql/
MySQL :: Download MySQL Community Server
Select Version: 9.3.0 Innovation 8.4.5 LTS 8.0.42 Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris mac
dev.mysql.com
- Gradle
**STS에서 Gradle 프로젝트 생성한 과정
*** 함께 보면 좋은 글
스프링 부트 핵심 가이드(장정우 지음) - 스프링 부트 개요
1. 스프링 프레임워크자바(Java) 기반 애플리케이션 프레임워크로, 엔터프라이즈급(기업 환경 대상 개발) 애플리케이션을 위한 다양한 기능 제공-> 오픈소스 경량급 애플리케이션 프레임워크로
keep-programming-study.tistory.com
스프링 부트 핵심 가이드(장정우 지음) - 개발에 앞서 알면 좋은 기초 지식
1. 서버 간 통신마이크로서비스 아키텍처에서 한 서버가 다른 서버에 통신을 요청하는 것을 의미-> 한 대는 서버/다른 한 대는 클라이언트가 됨 가장 많이 사용되는 방식은 HTTP/HTTPS 방식(TCP/IP, SOA
keep-programming-study.tistory.com
스프링 부트 핵심 가이드(장정우 지음) - REST API 명세를 문서화하는 방법(Swagger), 로깅 라이브러리
*책 내용과 다르게, 다음과 같은 환경에서 프로젝트 생성 Windows11(윈도우 11) 환경자바 JDK 17 버전 설치 https://yungenie.tistory.com/11 [Java] 차근차근 Java 설치하기 (JDK17, Window 11)자바 개발 도구 설치 방법
keep-programming-study.tistory.com
*테스트 코드란?
작성한 코드나 비즈니스 로직 자체를 테스트하기 위해 작성한 코드
1. 테스트 코드를 작성하는 이유
- 개발 과정에서 문제를 미리 발견
- 코드 리팩토링의 리스크 감소
- 애플리케이션을 가동해서 직접 테스트하는 것보다 시간 소요가 적음
- 하나의 명세 문서로서의 기능 수행
- 몇 가지 프레임워크에 맞춰 테스트 코드를 작성하면 좋은 코드 생산 가능
- 코드가 작성된 목적을 명확하게 표현할 수 있으며, 불필요한 내용이 추가되는 것을 방지
2. 테스트 방식 분류: 테스트 대상 범위
*테스트 비용이란?
- 개발에 필요한 금전적인 비용과 시간/인력을 포괄적으로 말함
- 통계적으로 한 서비스를 개발할 때 개발 과정에서 60%, 테스트 과정에서 40%의 비용이 듬
1) 단위 테스트(Unit Test)
- 정의: 애플리케이션의 개별 모듈을 독립적으로 테스트하는 방식
- 가장 작은 단위의 테스트 방식
- 모듈을 하나하나 독립적으로 테스트
-> 데이터베이스/네트워크 등 외부 요인들을 제외하고 진행 - 일반적으로 메서드 단위로 테스트를 수행하며, 메서드 호출 시 의도한 결괏값이 나오는지 확인하는 수준으로 진행
- 테스트 비용이 적게 들고, 테스트 피드백을 빠르게 받을 수 있음
2) 통합 테스트(Intergration Test)
- 정의: 애플리케이션을 구성하는 다양한 모듈을 결합해, 전체적인 로직이 의도한 대로 동작하는지 테스트하는 방식
- 모듈 통합 과정에서의 호환성 등을 포함해, 애플리케이션이 정상적으로 동작하는지 확인하기 위해 진행
- 여러 모듈을 함께 테스트해서 정상적인 로직 수행 가능 여부 판단
-> 데이터베이스/네트워크 등 외부 요인들을 포함하여 진행 - 테스트를 수행할 때마다 모든 컴포넌트가 동작해야 하므로, 테스트 비용이 커지고 테스트 피드백이 느릴 수 있음
3. 테스트 코드를 작성하는 방법
1) Given-When-Then 패턴
- 테스트 주도 개발(TDD/Test Driven Development)에서 파생된
행위 주도 개발(BDD/Behavior Driven Development)을 통해 탄생한 테스트 접근 방식 - 비교적 많은 환경을 포함해 테스트하는 인수 테스트에서 사용하는 것에 적합하다고 알려져 있음
- 불필요하게 코드가 길어져 간단한 테스트로 여겨지는 단위 테스트에서는 잘 사용하지 않음
-> 그러나 '명세' 문서의 역할을 수행한다는 측면에서 많은 도움이 됨
(1) Given
- 테스트를 수행하기 전 테스트에 필요한 환경을 설정하는 단계
- 테스트에 필요한 변수를 정의하거나, Mock 객체로 특정 상황에 대한 행동 정의
(2) When
- 테스트의 목적을 보여주는 단계
- 실제 테스트 코드가 포함되며, 테스트를 통한 결괏값을 가져옴
(3) Then
- 테스트의 결과를 검증하는 단계(when 단계에서 나온 결괏값을 검증)
- 결괏값이 아니더라도, 이 테스트를 통해 나온 결과에서 검증해야 하는 부분이 있다면 이 단계에 포함
2) F.I.R.S.T 전략
- 테스트 코드를 작성하는데 도움이 될 수 있는 5가지 규칙
- 대체로 단위 테스트에 적용 가능한 규칙
(1) 빠르게(Fast)
- 테스트가 느리면 코드를 개선하는 작업이 느려져 코드 품질이 떨어질 수 있음
- 목적을 단순하게 설정해서 작성하거나, 외부 환경을 사용하지 않는 단위 테스트를 작성
(2) 고립된/독립적(Isolated)
- 하나의 테스트 코드는, 목적으로 여기는 하나의 대상에 대해서만 수행
- 한 테스트가 다른 테스트 코드와 상호작용하거나,
내부에서 관리할 수 없는 외부 소스를 쓰면 외부 요인으로 인해 테스트 수행 불가
(3) 반복 가능한(Repeatable)
- 어떤 상황에서도 반복 가능하도록 작성
- 개발 환경의 변화나 네트워크의 연결 여부와 상관없이 테스트가 수행되어야 함
(4) 자가 검증(Self-Validating)
- 테스트 자체만으로도 테스트의 검증이 완료되어야 함(테스트 성공/실패 확인 코드를 함께 작성)
- 결괏값과 기댓값을 비교하는 작업을 코드가 아니라 개발자가 직접 확인하고 있다면 좋은 테스트 코드가 아님
(5) 적시에(Timely)
- 테스트 코드는 테스트하려는 애플리케이션 코드를 구현하기 전에 완성되어야 함
- 테스트 코드가 너무 늦게 작성되면 정상적인 역할 수행이 어려워질 수 있으며,
그로 인한 문제가 있다면 해결을 위해 개발 비용이 더 크게 소모될 수 있음