<CodeStates> Spring MVC 테스팅

한주영·2023년 5월 8일
0

코드스테이츠 학습

목록 보기
21/24

테스트를 해야하는 이유?

테스트 대상이 어떤것이든 테스트를 제대로 잘 거쳐서 테스트 대상이 검증 과정에 잘 통과하게 만들어 최대한 더 나은 결과를 얻기위해서이다

java기반의 애플리케이션 테스트

코드를 작성 후에 작성한IDE에서 애플리케이션을 실행 후 실행시킨
애플리케이션에서 Postman으로 HTTP요청을 전송해서
기대했던 JSON응답 결과가 출력되는지 확인 하는것

단위 테스트(Unit Test)

특정 단위를 구분해서 진행하는 테스트
메서드 단위로 대부분 작성됨
최대한 독립적이고, 최대한 작은 단위일수록 좋다.

단위테스트를 해야하는 이유?

-구현코드가 의도한 대로 동작하는지 결과를 빠르게 확인할수있다.
-작은 단위의 테스트로 버그를 미리미리 찾을수있기때문에
문제가 생겼을 경우 더 적은 시간안에 문제를 찾아낼 가능성이 높다

단위테스트를 F.I.R.S.T원칙

Fast(빠르게)

Independent(독립적으로)

Repeatable(반복 가능하도록)

Self-vaildating(셀프 검증이 되도록)

Timely(시기 적절하게)

Given-When-Then 표현 스타일

Given
-테스트를 위한 준비과정을 명시할수있다
-테스트에 필요한 전제 조건들이 포함된다.
-테스트 대상에 전달되는 입력값(테스트 데이터)가 포함된다.

When
-테스트할 동작을 지정한다
-단위 테스트에서는 일반적으로 메서드 호출을 위해 테스트를 진행하므로
한 두줄정도로 작성이끝나는 부분이다.

Then
-테스트의 결과를 검증하는 영역
-일반적으로 예상하는 값(expected)과 테스트 대상 메서드의 동작 수행결과 값(actual)을 비교해서
기대한대로 동작을 수행하는지 검증(Assertion)하는 코드들이 포함된다.

Assertion(어써션)이란?

테스트 결과를 검증할때 주로 사용된다
예상하는 결과 값이 참(true)이길 바라는것


사진출처: 코드스테이츠
애플리케이션의 일반적인 테스트 분류

기능테스트

주로 애플리케이션을 사용하는 사용자 입장에서 애플리케이션이 제공하는 기능이 올바르게 동작하는지를 테스트 한다.

통합테스트

클라이언트 측 툴없이 개발자가 짜놓은 테스트를 실행시켜서 이루어지는 경우가 많음.
예를들어 개발자가 Controller의 API를 호출 후 테스트 코드를 작성한 후에 실행하면 서비스, 데이터액세스를 거쳐 DB에 실제로 접속해서 기대했던 대로 동작을 하는지 테스트하는것도 통합테스트의 하나라고 볼수 있음.

슬라이스 테스트

계층별로 쪼개어 테스트한다는 의미
Mock(가짜객체)를 사용해서 계층별로 끊어서 테스트할수있기 때문에,
테스트 범위를 좁히는 것이 가능하다.

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글