728x90

전파 및  이론 정리, 리마인드 겸 작성 한다. 

 

테스트 주도 개발은 테스트가 주도하는 개발 방법론이다. 자동화된 테스트로 개발을 이끌어 나가는 방식

단순 규칙만 따른다.

  • 오직 자동화된 테스트가 실패한 경우에만 새로운 코드를 작성.
  • 중복을 제거.

TDD와 단위테스트를 혼돈 하는 경우가 있지만 TDD의 결과물이 단위테스트 일 뿐  TDD와 단위트세트는 목적이 다르다.

 

 

비즈니스 로직을 먼저 구현하고 단위테스트를 작성 했더니 코드 설계, 모듈들 간에 의존성 등에서 여러가지 문제점이 발생하여 유지보수가 힘들어진다. 이를 테스트를 먼저 작성하여 설계가 좋은 코드를 만들 수 있지 않을까라는 것에서 시작된 것이 TDD

 

TDD 개발 방법론이고 설계/ 관점에서 이해 해야하고 TDD는 테스트 케이스를 먼저 작성하고 비즈니스 로직 구현

 

 

  • 먼저 실패하는 테스트 코드를 작성 (RED)
  • 테스트코드를 성고하기 위한 설제 코드를 작성(GREEN)
  • 중복코드 제거, 일반화 등의 리팩토링을 수행(BLUE)

위 3가지를 반복 하여 코드 작성

 

 

테스트 케이스를 먼저 정의하면 좋은점

유닛 단위 테스트를 하려면 유닛간의 종속서을 끊어낼 수 있도록 설계되어 있어야 하기 떄문 

종속성의 커플링이 약한 설계가 유지보수가 좋다고 할 수 있는데 결국 단위 테스트 작서을 통해 자연스레 커플링이 약한 좋은 설계를 얻어 낼수 있다.(TDD 순수 단위테스로 존재X)

 

실제로 작서을 해보면 일정관리에서 오는 리소스 부담이 커서 적용이 어려운 경우가 많다. 혹은 기획이나 요구사항이 미흡하여 테스트 케이스를 만들기 어려운경우도 있고..

 

그럼에도 불구하고 내가 느끼기에는 단위테스트를 작성 함으로써  추후 테스트 시간을 단축하기때문에 적절히 잘 적용하면 좋을듯 하다. 

 

 

 

 

728x90
728x90

사내 코드를 정리하다 보니 전파가 필요한 테스트 코드 작성방법을 공유하고자  이 글을 정리하고 쓴다.

 

 

AAA 패턴이란 준비(arrange), 실행(act), 검증(assert) 세단계로 Test를 작성하는 패턴을 의미

모든 테스트가 단순하고 균일한 구조를 갖는데 도움이 된다(유지 보수에 유리).

 

  • Arrange(준비)

Arrange 단계에서는 테스트 환경을 설정하는 일을 한다.

테스트에 필요한 객체, 변수 또는 데이터를 생성하고 준비
테스트 대상 객체를 초기화 하거나 설정
필요한 상태나 조건을 설정

 


  • Act(실행)

Act 단계에서는 테스트 대상 코드를 호출하거나 실행


  • Assert(검증)

  Assert에서는 Act로 실행한 코드의 결과를 검증하고 예상 동작 확인 


  • AAA 장점 
  • 가독성 향성 - 각 단계가 명확하게 구분되고, 다른 개발자들이 테스트 코드를 쉽게 이해하고 따라감.
  • 유지 보수성 향상 - 각 단계가 분리되어 변경 또는 확장이 필요 한 경우 해당 단계만 수정
  • 버그 식별 용이성 - Assert 단계에서 예상한 결과와 다른 경우, 문제를 더 쉽게 파악할 수 있다.
  • 자동화 용이 - AAA 패턴에 따르면 테스트 케이스를 자동화 하기 더 쉽다.

  • 유사 테스트 GWT (Given - When - Then)
  • Given - 준비(arrange)에 해당
  • When - 실행(act) 에 해당 
  • Then - 검증(assert)에 해당

JUNIT5를 통해 굉장히 심플하고 편하게 단위 테스트 가능

728x90

+ Recent posts