ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 테스트 코드
    Java & Spring 2024. 6. 13. 20:00

    테스트 코드?

    기능과 동작을 테스트하는데 사용되는 코드를 말한다.
    개발자가 요구사항에 맞게 개발한 기능이 의도대로 정확히 동작하는지 검증하는 절차를 코드화 해 놓은 것

    그럼 왜 작성해야 하나?

    - 개발관점
    신규 기능 개발 과정 중 예상하지 못했던 문제를 미리 발견할 수 있고 작성한 코드가 의도한 대로 동작하는지 검증할 수 있다.

    -리팩토링관점
    단순 구조 변경(중복, 제거, 캡슐화 등) 을 적용 했을 때, 이전과 동일하게 기능이 정상 동작하는지 확인할 수 있다.
    코드 수정이 필요한 상황에서 유연하고 안정적인 대응을 할 수 있다.

    테스트의 종류?

    테스트 종류는 테스트 대상 범위나 성격에 따라 3가지로 구분 된다.
    UI, Service, Unit Test 등으로 구분한다.

    Unit Test란? 그리고 장점과 단점

    • 가장 작은 단위로 기능을 나누어 테스트하는 기법이다.
    • 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다.
      (여기서 모듈은 객체의 기능 즉 메서드를 의미한다.)

    장점
    - 단위 테스트는 회기성을 보장하기 때문에 코드 수정에 따른 불안감을 해소 할 수 있다.
    - 언제든지 빠르고 쉽게 테스트 할 수 있기 때문에 신규 기능 및 리팩토링에 대한 불안감을 낮출 수 있다.
    - 코드 자체가 API의 기능을 설명하는 문서 기능을 제공할 수 있다.

    단점
    - 객체는 객체 간의 협력을 통해서 기능을 완성시킨다. 하지만 단위 테스트 작성 시, 이러한 의존성 문제를 해결 해야 하는 불편함이 있다.

    통합 테스트란?

    • 통합 테스트는 모듈을 통합하여 독립적으로 하나의 기능을 수행할 수 있는 단위를 만드는 과정에서 서로 다른 모듈 혹은 객체 간 상호 작용의 유효성을 검증하는 테스트를 말한다.
      예를 들어 웹페이지의 로그인 기능을 작은 단위로 나누면 아래와 같다.
      1. User ID 및 Password 값에 대한 유효성 검사
      2. User ID 및 Password 기반으로 회원 여부 확인
      3. Password 확인
      4. 토큰 발급
      이렇게 나눠져 있는 모듈들을 하나로 합쳐서 로그인 API를 만들고 테스트하는 단계를 통합 테스트라고 말한다.

    TDD란 그리고 장단점?

    Test Driven Development의 약자로 테스트 주도 개발이라고 한다.
    실패하는 코드로 시작해서 리팩토링으로 종료되는 일련의 스프린트 방식을 여러 번 거쳐서 요구사항을 충족하는 코드를 점진적으로 완성시켜가는 개발 방법론이다.

    장점
    1.디버깅 시간 단축
    모듈별 자동화된 테스트 코드가 없으면 모든 코드를 확인해야 하지만, TDD 유닛 테스트 코드가 있어 오류를 쉽게 찾을 있다.

    2.불안정성 개선
    TDD 사용하면 코드가 사용자에게 도달하기 전에 문제를 진단받아 코드의 불안정성과 불확실성을 해소할 있다.

    3.재설계 시간 단축
    테스트 시나리오를 작성하려면 기능에 대한 포괄적인 이해가 필요해 개발자가 명확한 요구사항을 이해하고 시작할 있다. 이는 완성도 높은 설계로 이어진다.

    4.추가 구현 용이
    비즈니스 변화에 따라 기존 코드 변경 TDD 자동화된 유닛 테스트로 테스트 시간을 단축할 있다.

    5.요구사항과 코드의 긴밀한 연결
    복잡한 문서를 필요 없이 테스트 코드와 함께 있는 테스트 케이스로 메서드의 기능 정의를 이해할 있다.

    단점
    1. 시간이 많이 소요된다.
    실패되는 테스트 코드를 1차원적으로 수정하면서 시작하기 때문에 시간이 많이 소요된다. 그렇기 때문에 무조건 TDD를 적용하는 것을 옳지 않다.

     

    JUnit이란 그리고 장점은?

    - 자바 프로그래밍 언어용 Unit Test Framework
    - 테스트를 위한 API로 JUnit Jupiter API를 제공한다.
    - 컴포넌트는 JUnit Platform JUnit Jupiter, Junit Vintage으로 구성되어 있다.

    장점

    - 테스트 결과는 Test클래스로 동료 개발자에게 테스트 방법 클래스의 History 공유해 있다.
    - 단정(Assert) 메서드로 Test Case 테스트 결과를 손쉽게 판별할 있다.
    - 어노테이션으로 간결하게 Test Code 작성할 있는 기능을 제공한다.

    단정 메서드

    기본적인걸 정리했고 다음에는 JUnit에 대한 메서드들과 라이프 사이클 등등 다시 정리해야겠다. 

Designed by Tistory.