목차

기능에서의 상황

예시 기능

  • 파일에서 숫자를 읽어와 숫자의 합을 구한다.
  • 파일에는 한 줄마다 한개의 숫자를 포함 한다.

예외적인 상황

  • 파일이 없는 상황
  • 파일에 숫자가 아닌 잘 못된 데이터가 존재하는 상황

테스트 코드는 주어진 상황에 따라 기능 실행 결과가 달라질 수 있다.

→ 테스트 코드 구조에도 영향을준다.

→ 결과에 영향을 줄 수 있는 가능한 많은 예외 상황을 찾기 위한 노력이 필요하다.

 

테스트 코드의 구성 요소: 상황, 실행, 결과 확인

상황, 실행, 결과 확인 :Given, When, Then

 

상황설정 방법

  • 테스트를 생성할 때마다 상황을 설정
  • beforeEach() 를 이용하여 똑같은 상황을 설정
  • 상황이 없는 경우도 존재한다.

실행 결과 확인 방법

  • 실행 결과의 리턴 값을 사용하여 결과 확인
  • 익셉션을 발생하여 결과 확인
위의 구조로 테스트를 작성하지 않아고 된다.
하지만 테스트 코드를 보고 테스트 내용을 이해할 수 있어야 한다.

 

외부 상황과 외부 결과

테스트는 실행할 때마다 동일한 결과를 보장해야 한다.

하지만, 상황이 항상 테스트 대상으로 국한된 것은 아니다.

외부 요인도 있다.

 

( 외부 요인 예 ) 파일이 존재 하지 않는 상황

대처 방법

  • 명시적으로 파일이 없는 상황을 만든다.
  • 파일을 미리 준비해둔다. ( 준비 해둔 파일도 같이 버전 관리대상에 추가)
  • 테스트를 시작할 때 상황에 맞는 파일을 만드는 코드를 추가한다.

❏ 외부 상태가 테스트 결과에 영향을 주지 않게 하기

회원 가입 기능을 예로 들면 

  • 중복된 ID가 이미 존재하면 가입 실패

이 경우 외부상태(다른 테스트에서 같은 ID 를 사용)가  테스트 결과에 영향을 주게 된다.

 

테스트의 성공 여부가 바뀌지 않으려면 

  • 테스트 실행 전에 외부를 원하는 상태로 만든다.
  • 테스트를 실행 후에 외부 상태를 원래대로 되돌려놓는다.

❏ 외부 상태와 테스트 어려움

상황과 결과에 영향을 주는 외부요인 : 파일, DB, 외부 서버 등 다양

( 예시 ) 자동이체 등록 기능에 대한 테스트 상황 (REST API 이용, 외부 API 이용)

  • REST API 응답 결과가 유효한 계좌 번호인 상황
  • REST API 응답 결과가 유효하지 않은 계좌 번호인 상황
  • REST API 서버에 연결할 수 없는 상황
  • REST API 서버에서 응답을 5초 이내에 받지 못하는 상황

외부 API사용하여 하기 어려운 테스트

  • 서버에 연결할 수 없는 상황
  • 서버에서 응답을 5초 이내에 받지 못하는 상황

이 처럼 외부 요인은 테스트 코드에서 다루기 힘든 존재

 

→ 테스트 대상의 상황과 결과에 외부 요인이 관여할 경우 대역을 사용

+ Recent posts