단위 테스트

Choi Wang Gyu·2023년 7월 28일
0

수동테스트 자동화 테스트

수동테스트는 사람의 눈으로 확인하는것을 말한다 예를들어 system.out.prinlnt과 같이 직접 콘솔에 입력하고 결과값이 내가 예상한 대로 나오는것과 같이 검증하는 방법을 말한다. 자동화 테스트는 코드로 실행시켜 Xunit과 같은 테스트 프레임워크로 검증을 코드로서 자동화 시키는것이다.

테스트 케이스 세분화

암묵적이거나 아직 드러나지 않은 요구사항이 있는가 핵심이다 예를들어 음수값이 들어오는 경우

  • 해피 케이스 : 요구사항을 그대로 만족하는 케이스
  • 예외 케이스 : 요구사항에는 해피케이스에 대한 요구사항만 있지만 예외케이스에 대한 이야기는 암묵적인것이 존재한다(아메리카노 0잔) 이렇게 입력시에 어떻게 대처할것인지, 음수일 경우

경계값 테스트 : 범위 이상이하 초과 미만 특정 구간 날짜 경계라던지 경계값이 있는 조건이 있는경우 ex) 3이상일때 A조건을 만족해야한다면 이 요구사항에 대한 해피케이스는 4나5보다 경계값 3이상이니까 3에대한 케이스를 짜는게 좋다. 반대로 예외케이스는 2에 대해 검증하는게 좋다

테스트하기 어려운 영역 분리하기

테스트 값은 매번 실행될때마다 달라지면 안된다. 이런경우는 파라미터로 받는것이 좋다
테스트 가능한 영역에 테스트가 어려운 코드가 들어온다면? 전체가 불가능한 상태가 된다.
따라서 테스트가 실행할때마다 성공했다 실패했다 이렇게 변경이 된다.
따라서 테스트 어려운 영역을 외부로 분리했다.
검증하고자하는게 무엇인가 시간의 범위를 테스트하는것이다 LocalDateTime.now()가 중요한게 아니다

어떤 영역이 테스트하기 어려운것인가?


외부세계에 들어오는 값에 의존하는것과 반대로 우리의 함수가 외부세계에 영향을 주고 그것에 의존하는 경우가 어렵다...
반대로 하기쉬운것은 순수함수 영향을 안받는 함수

테스트 시야를 키워야한다 고민이 중요하다

profile
도파민 채우기

2개의 댓글

comment-user-thumbnail
2023년 7월 28일

많은 도움이 되었습니다, 감사합니다.

1개의 답글