[되새김질] 테스트에 대한 고찰

jeyong·2024년 2월 26일
0
post-custom-banner

해당 게시물은 인프런 "Java/Spring 주니어 개발자를 위한 오답노트" 강의를 참고하여 작성한 글 입니다.

1. 용어 정리

Regression

  • 회귀 버그 : 서비스를 제공하지 못하던 상황으로 회귀하는 상황.
  • 회귀 테스트 : 서비스에 회귀 버그가 있는지 확인하는 테스트.

SUT

  • System under test : 테스트 하려는 대상

TDD

  • RED : 깨지는 테스트를 먼저 작성한다.
  • GREEN : 깨지는 테스트를 성공시킨다.
  • BLUE : 리팩토링 한다.

BDD

  • Behaviour driven development : 메소드 위주의 테스트코드보다 시나리오에 기반하여 테스트 하는 방식
  • given - when - then

flaky

  • 불규칙한 테스트: 대상 코드에 아무런 변경이 없음에도 불구하고 실패하는 테스트

brittle

  • 깨지기 쉬운 테스트 : 실제로는 버그가 없음에도, 심지어 검증 대상 코드와 관련조차 없는 변경때문에 실패하는 테스트
  • 테스트에 필요한 가정들이 명시적으로 작성되있지 않을 경우 발생

interaction test

  • 상호작용 테스트 : 대상함수의 구현을 호출하지 않으면서 그 함수가 어떻게 호출되는지를 검증하는 기법
  • 상호작용 테스트를 이용하여 상호작용을 테스트하는 것 보다는 상태를 테스트하는 것을 추천

Dummy

  • 더미: 아무런 동작도 하지않고, 그저 코드가 정상적으로 돌아가기 위해 전달하는 객체

Fake

  • Local에서 사용하거나 테스트에서 사용하가위해 만들어진 가짜 객체, 자체적인 로직이 있다는게 특징

Stub

  • 미리 준비된 값을 출력하는 객체
  • mockito 프레임 워크를 사용하여 구현 가능

Spy

  • 메소드 호출을 전부 기록했다가 나중에 확인하기위한 객체

2. Mock vs BDDMockito

BDDMockito는 BDD를 사용하여 테스트코드를 작성할 때, 시나리오에 맞게 테스트 코드가 읽힐 수 있도록 도와주는 Mock 프레임워크에서 이름만 변경한 프레임 워크이다.

참고: https://velog.io/@lxxjn0/Mockito%EC%99%80-BDDMockito%EB%8A%94-%EB%AD%90%EA%B0%80-%EB%8B%A4%EB%A5%BC%EA%B9%8C

3. private 메소드를 테스트해야할까?

참고: https://kukim.tistory.com/84

4. 그렇다면 final 메소드는?

  • final 메소드를 스터빙(stubbing)해야 할 필요성이 있다면, 설계를 재고해야 한다는 신호일 수 있다. 의존성을 약화시키는 방법을 모색하자.

5. DRY < DAMP

  • DRY(건조한) : Don't Repeat Yourself
  • DAMP(습한) : Descriptive And Meaningful Phrase

'반복하지 마라(Don't Repeat Yourself)' 원칙과는 달리, '설명적이고 의미 있는 구문(Descriptive And Meaningful Phrases)'을 사용하여 테스트 코드를 이해하기 쉽게 만드는 것이 테스트코드 작성에 있어서는 올바르다.

참고 : https://stackoverflow.com/questions/6453235/what-does-damp-not-dry-mean-when-talking-about-unit-tests

6. 의존성 추상화

테스트하기 어려운 의존성(예: 난수 생성, 시간 관련 기능, HTTP 요청 등)을 처리하기 위해 추상화를 사용한다.

참고 : [되새김질] 의존성에 대한 고찰 , [되새김질] 추상화에 대한 고찰

테스트는 단순히 문제를 찾아내는 과정이 아니라, 우리의 코드가 더 견고하고 신뢰할 수 있도록 만드는 과정이다. 테스트를 통해 코드의 내구성을 높이고, 유지보수를 단순화할 수 있다. 테스트 루틴이 없는 코드는 레거시한 코드라고 생각한다.

profile
노를 젓다 보면 언젠가는 물이 들어오겠지.
post-custom-banner

0개의 댓글