본문 바로가기

토비의 스프링 정리

토비의 스프링 - 2.1 UserTest 다시 보기

2.1.1 테스트의 유용성

  1. 예상하고 의도했던 대로 코드가 정확히 수행되는지 검증
  2. 코드 수행 검증을 할 수 있는 테스트 코드 덕분에 코드 개선(리팩토링) 가능
  3. 기능을 추가할 때 유용하게 사용 가능하여 점진적 개발 가능
  4. 모든 기능을 구현하지 않아도 코드가 정상 동작하는지 확인 가능

💡 로그인 기능 웹사이트를 구현할 때 테스트가 없다면 파싱, DB 연결, SQL 실행 등 어디서 문제가 발생했는지 확인하기 어려움

 

2.1.2 작은 단위의 테스트

  • 명확한 테스트 대상에만 집중해서 테스트하는 것이 바람직함
  • 한번에 많은 테스트 대상을 테스트하면 어디서 오류가 발생하는지 찾기 어려움
  • 테스트는 가능하면 작은 단위로 쪼개서 집중할 수 있어야 함
  • 작은 단위의 코드에 대해 테스트 수행한 것을 단위 테스트(Unit Test)라 함
  • 단위 테스트는 충분히 하나의 관심집중해서 효율적으로 테스트할 만한 단위임
  • 통제할 수 없는 외부 리소스에 의존하는 테스트는 단위 테스트가 아님
  • 단위 테스트가 필요한 이유는 개발자 스스로 코드가 의도한 대로 동작하는지 확인하기 위함

2.1.3 자동수행 테스트

  • 테스트의 전 과정이 자동화
  • 자동수행 테스트는 빠른 시간안에 테스트할 수 있어 자주 수행해도 부담 없음
  • 자동수행 테스트는 매우 중요

2.1.4 UserTest의 문제점

  1. 수행 확인 작업의 번거로움
    • add()의 입력 값과 get()의 출력 값이 일치하는지 검증하지 않음
    • 결과를 사람 눈으로 검증하는 과정 필요
    • 테스트 성공은 사람의 책임임
    • 이러한 이유로 완전한 자동수행 테스트가 아님
  2. 실행 작업의 번거로움
    • 지금은 간단히 실행 가능한 main() 하나임
    • 하지만, DAO마다 검증하기 위해 main()을 여러개 만들면 일일이 확인 해야 됨
    • 결과를 사람 눈으로 확인해서 기록하고, 이를 종합해서 테스트 결과를 정리하는데 번거로움