서비스를 배포하기 전 버그를 최대한 많이 찾아내기 위해 테스트를 많이 해야 함.
테스트 방법
- 블랙박스 테스팅
: 소프트웨어 내부 구조나 동작원리를 모르는 사용자 입장에서 웹 서비스의 동작은 검사하는 방법- 장점
- 누구나 테스트 가능
- 단점
- 기능이 증가될수록 테스트의 범위 증가 (시간이 갈수록 테스트하는 사람이 계속해서 늘어나야 됨.)
- 테스트하는 사람에 따라 테스트 퀄리티가 다를 수 있음 (QA 직군이 있는 이유)
- 장점
- 개발자 테스트
: 개발자가 직접 본인이 작성한 코드를 검증하기 위해 테스트 코드를 작성하는 것- 장점
- 빠르고 정확한 테스트 가능
- 테스트 자동화가 가능
- 배포시 테스트코드가 수행되어 동작 검증해줌
- 리팩토링이나 기능 추가할 때 더욱 편리
- 단점
- 개발 시간이 오래 걸림
- 유지보수 비용
- 스프링에서는 테스트코드를 작성할 수 있는 환경을 제공해 줌. => 그 환경이 바로 " JUnit "
- 장점
JUnit
: 자바프로그래밍 언어용 단위 테스트 프레임워크
- build.gradle 파일에서 JUnit에 대한 환경설정이 되어있는 것을 볼 수 있음
- JUnit은 테스트 실행환경을 따로 가지고 있기 때문에 main 메서드나 서버를 따로 실행시키지 않아도(= main이 존재하지 않음.) 각각의 메서드 혹은 기능별로 테스트코드를 작성해 실행시킬 수 있음
- JUnit5부터는 접근제어자를 넣지 않아도 됨.
- 메서드를 실행시키려면 @Test 라는 annotation을 달아줘야 함.
테스트코드
- 프로젝트를 생성할 때 test라는 경로가 미리 만들어져 있는 것을 확인할 수 있는데 테스트코드는 해당 경로 아래에 만들어주면 됨.
클래스명 우클릭 > Generate > test ... > OK (단축키: Ctrl + Shift + T)
Lombok
: 자바 프로젝트를 진행할 때 필수적으로 필요한 메서드, 생성자 등을 자동으로 생성해 코드를 절약할 수 있도록 도와주는 라이브러리
설정 방법
: Ctrl + Alt + S > Annotation Processors 클릭 > Enabld annotation processing 클릭 > apply, ok 클릭 > shift 를 두 번 눌러 검색창에 plugins 작성하고 enter > Installed 클릭 > 검색창에 lombok 작성 > 오른쪽 화면 봤을 때 disable이 아니면 install 클릭
Lombok Annotation
@Getter
- Lombok이 이 메서드를 어떻게 만들어주는지 확인 가능
- 오른쪽 gradle에서 build를 눌러 컴파일 해주고 왼쪽에서 build.classes.java.main.Memo 클릭 > accept 클릭하면 컴파일된 파일을 보여주면 getter가 자동으로 추가된 것을 볼 수 있음.
- getter 메서드 자동 생성
@Setter
- setter 메서드 자동 생성
@AllArgsConstructor
- 모든 필드를 가지고 있는 생성자를 만들어 줌
@NoArgsConstructor
- 기본 생성자를 만들어 줌
@RequiredArgsConstructor
- 요구되는 필드들을 가지는 생성자를 만들어 줌 (= final이 달린 필드를 가지는 생성자 생성)
- required에 속하는 필드로 만들어주려면 final을 달아주면 됨.
application.properties
: 스프링과 관련된 설정을 할 때 사용되는 파일
- resources밑에 존재
- 자동으로 설정되어 있던 설정 값들을 해당 파일에서 쉽게 수정 가능
- DB연결시 DB에 정보를 제공해야 할 때 해당 파일을 이용해 쉽게 값 전달 가능
- yml이라는 형식으로도 파일 관리 가능 하지만 Spring에서 기본적으로 설정하는 것이 X (스프링에서 기본적으로 설정하는 것은 properties)
apache tomcat 포트번호 변경
기본 설정되어 있는 포트번호 : 8080
server.port=8081
해당 파일에 이와 같이 적어주고 실행을 하면 포트번호가 바뀐 것을 확인할 수 있음.
용어정리
- 버그
: SW가 예상하지 못한 결과를 내는 것
'내일배움캠프(Sparta) > Spring' 카테고리의 다른 글
[Spring] Jackson / Path Variable / Request Param (1) | 2023.11.02 |
---|---|
[Spring] 데이터를 Client에 반환하는 방법 (0) | 2023.11.02 |
[Spring] Controller / 정적 페이지 / 동적 페이지 (0) | 2023.11.02 |
[Spring] Spring MVC / Front Controller (1) | 2023.11.01 |
[Spring] Gradle / Server / HTTP (1) | 2023.10.31 |