테스트코드/ATDD, 클린 코드 with Spring

[ATDD, 클린 코드 with Spring 6기] 1주차 정리

2023. 2. 5. 22:38
목차
  1. 1. 개요
  2. 2. 1주차 리뷰
  3. 3. 느낀 점

1. 개요

이번에 회사 동기분들과 함께 Next Step에서 진행하는 ATDD, 클린 코드 with Spring 6기에 참여하게 되었다. 과정 속에서 배운 것과 정리할 내용을 남겨두고자 하는데, 아무래도 유료 강의이다 보니 많은 내용을 기재하기는 어려워서 간단하게만 가능할 것 같다.

 

1) ATDD vs TDD

  • TDD는 단위 테스트를 기반으로, ATDD는 인수 테스트를 기반으로 코드를 작성 및 검증한다
  • TDD가 "구현한 대로 동작하는가?"에 집중한다면, ATDD는 시나리오 형태의 요구사항에 집중한다

 

2) 인수테스트(Acceptance Test)란?

  • 명세나 계약의 요구사항이 충족되는지를 확인하는 테스트
  • 작업을 종료시켜도 되는지 검증하는 테스트

 

3) 블랙박스 테스트

  • 인수테스트는 블랙박스 테스트의 성격을 가지고 있음
  • 블랙박스 테스트란 내부 구현이나 기술을 검증하지 않고, 표면적으로 확인할 수 있는 요소를 검증하는 것을 의미한다

 

 

2. 1주차 리뷰

1) 피드백

테스트 격리

  • 1) API 통신을 통한 E2E테스트에서 @Transactional을 사용하는 것은 불가능하다
  • 2) @DirtiesContext는 매번 새로운 Context를 구성하므로 비용이 너무 크다
  • 3) @Sql을 통한 쿼리 수행은 좋은 방법이지만, 테이블이 추가될 때마다 해당 쿼리 수정이 필요하다는 단점이 있다.
  • 4) 코드상으로 테이블을 truncate 시키기
    • https://tecoble.techcourse.co.kr/post/2020-09-15-test-isolation/
    • https://mangkyu.tistory.com/264

 

테스트 가독성 향상시키기

  • 테스트 가독성이 좋지 않으면 테스트로써의 기능이 저하되고, 변경 사항에 대해 대응하기 어렵게 만드므로 테스트가 점점 방치된다(@Ignore나 @Disabled를 통해)
  • 가독성 꿀팁1) 테스트 코드 중복 제거
    • 메서드 분리, CRUD 추상화, BDD 도구 사용
  • 가독성 꿀팁2) 각 step의 의도 드러내기
    • 별도의 Steps 클래스를 만들어 static 메서드로 만듦으로써 다른 인수 테스트에서 재사용할 수 있다

 

2) PR

  • https://github.com/next-step/atdd-subway-map/pull/612
  • https://github.com/next-step/atdd-subway-map/pull/651
  • https://github.com/next-step/atdd-subway-map/pull/696

 

3) 리뷰 정리

  • JPA의 중요한 특성들을 잘 이해하고 사용하자
    • DirtyChecking, 객체 간의 참조(관계), 부모 객체 - 자식 객체 간의 관계(Cascade 등), fetch join 등
  • 메서드와 클래스명에서 의도를 명확히 하자
  • 구현을 노출시키는 메서드 시그니쳐를 지양하자
  • 테스트 픽스쳐 생성이나 검증문 등 반복되어 사용되는 기능은 static 메서드 등이나 별도의 Steps 클래스로 추출하자
  • 일급 컬렉션 사용을 고려하라

 

 

3. 느낀 점

인수테스트 및 테스트 격리에 대해서 배웠다. 인수테스트는 실무에도 적용해서 적극적으로 사용해야겠다는 생각이 든 반면, 테스트 격리는 그 필요성은 절실히 느끼면서도 현재 회사의 개발환경상 적용하기가 상당히 까다로울 것 같았다. 좀 더 다양한 방면으로 검토해보고 적용해봐야겠다. 또, 그동안 JPA의 기본적인 개념을 많이 놓쳤었다... 반성하고 계속 공부하고 익혀야겠다.

저작자표시 비영리 (새창열림)

'테스트코드 > ATDD, 클린 코드 with Spring' 카테고리의 다른 글

[ATDD, 클린 코드 with Spring 6기] 4주차 정리  (2) 2023.03.13
[ATDD, 클린 코드 with Spring 6기] 3주차 정리  (0) 2023.03.02
[ATDD, 클린 코드 with Spring 6기] 2주차 정리  (0) 2023.02.20
  1. 1. 개요
  2. 2. 1주차 리뷰
  3. 3. 느낀 점
'테스트코드/ATDD, 클린 코드 with Spring' 카테고리의 다른 글
  • [ATDD, 클린 코드 with Spring 6기] 4주차 정리
  • [ATDD, 클린 코드 with Spring 6기] 3주차 정리
  • [ATDD, 클린 코드 with Spring 6기] 2주차 정리
코택
코택
TaxFree코택 님의 블로그입니다.
코택
TaxFree
코택
전체
오늘
어제
  • 분류 전체보기 (369)
    • Spring (29)
      • Spring (18)
      • 스프링 핵심 원리 - 고급편 (11)
    • Spring Batch (4)
    • JPA (4)
    • CS (89)
      • 자료구조 (2)
      • 네트워크 (5)
      • 운영체제 (1)
      • 데이터베이스 (4)
      • SQL (7)
      • 알고리즘 이론 (4)
      • 알고리즘 문제 풀이 (66)
    • 웹 (28)
      • React.js (4)
      • Next.js (1)
      • Node.js (14)
      • FastAPI (4)
      • Django (5)
    • 프로그래밍 언어 (45)
      • Python (5)
      • Java + Kotlin (29)
      • JavaScript + TypeScript (11)
    • 테스트코드 (26)
      • ATDD, 클린 코드 with Spring (4)
      • 이규원의 현실 세상의 TDD: 안정감을 주는 코드.. (20)
    • 인프라 (6)
      • AWS (2)
      • Kubernetes (4)
    • 트러블슈팅 (25)
    • 책 (89)
      • Effective Java (54)
      • Effective Kotlin (14)
      • 도메인 주도 개발 시작하기: DDD 핵심 개념 정.. (11)
      • 웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 (6)
      • 도메인 주도 설계 첫걸음 (4)
    • Git (10)
    • 회고 (5)
    • etc (8)

블로그 메뉴

  • 홈
  • 방명록
  • 관리
  • GitHub
  • LinkedIn

공지사항

  • 스킨 관련

인기 글

태그

  • mysql
  • 파이썬
  • 브루트포스
  • atdd
  • Git
  • BOJ
  • 그래프
  • dp
  • 깊이 우선 탐색
  • fastapi
  • 장고
  • Shortest Path
  • 백준
  • 그래프 탐색
  • http

최근 댓글

최근 글

hELLO · Designed By 정상우.
코택
[ATDD, 클린 코드 with Spring 6기] 1주차 정리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.