테스트코드

테스트코드

[ATDD] 인수테스트 주도 개발에 대한 짧은 고찰

1. 인수테스트의 의미명세나 계약의 요구사항이 충족되는지를 확인하는 테스트작업을 종료시켜도 되는지 검증하는 테스트  2. 인수테스트 주도 개발의 의미와 목적인수테스트 주도 개발은 기획, 개발, 테스트 등 다양한 관점을 가진 팀원들과 협업을 위한 애자일 방법론 중 하나이다다양한 관점(기획, 개발, 테스트 등)을 지닌 팀원이 함께 사전 기획 단계에서 유저스토리와 인수 기준을 도출하면, 개발단계에서 자동화된 인수테스트를 먼저 작성하고 소프트웨어 개발을 이어나간다프로젝트에 참여하는 인원들이 다양한 관점(기획, 개발, 테스트 등)을 지닌 만큼, 커뮤니케이션이 부족하다면 서로 다른 결과물을 상상하면서 작업을 진행할 수 있다이 경우 결과물이 나오는 시점에야 서로의 생각이 다름을 인지하게 된다인수테스트 주도 개발은 이..

테스트코드

직접 Stub 객체 만들어서 유연한 테스트 코드 작성하기

Mockk 등의 라이브러리 대신 직접 Stub 객체를 만들어서 테스트 코드를 개선한 경험을 공유하고자 한다. 참고로 지정한 응답을 주는 객체를 의미한다. 기존 레거시 코드를 리팩토링 하기 전에 앞서 단위 테스트를 먼저 작성하고 있었고, 이때 의존성을 테스트 대역으로 대체했다. 테스트 코드를 작성하다 보니 애매한 부분이 생겼다. 테스트하려는 코드는 대략 이런 느낌이었고, 다양한 상황을 세팅하고 getUsableCoupons를 호출했을 때 적절한 쿠폰이 반환되는지를 확인하려고 했다. @Service class CouponService( // ... private val couponRepository: CouponRepository ) { fun getUsableCoupons(): List { // ... v..

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

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

1. 개요 1) 테스트 하기 쉬운 코드로 만들기 (영상) 테스트하기 쉬운 코드란? 같은 입력에 항상 같은 결과를 반환하는 코드 외부 상태를 변경하지 않는 코드 테스트하기 쉬운 코드로 만들기 STEP1) 테스트하기 쉬운 코드와 어려운 코드를 분리한다 STEP2) 두 분류의 코드를 최대한 바깥쪽에서 만나게 한다 테스트의 어려움은 안에서 밖으로 전파된다 따라서 테스트하기 쉬운 코드와 어려운 코드를 최대한 바깥쪽에서 만나게 해야 한다 STEP3) 두 분류의 코드가 만나는 지점을 자동 테스트로 검증한다 2) 인수 테스트 리팩터링 기존 인수 테스트의 문제점 테스트의 목적이 다름에도 불구하고 같은 로직을 검증하는 인수 테스트가 생기게 됨 즉, 중복이 발생함 인수 테스트 통합 각 기능 단위로 분산되어 있던 인수 테스트..

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

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

1. 개요 1) 통합 테스트 통합 테스트의 다양한 정의 단위테스트의 조건에 하나라도 부합하지 않으면 통합테스트다 자신이 혼자 만든 것을 확인하는 것은 단위테스트며, 다른 이들과 같이 만든 것을 확인하는 것은 통합테스트다 개별 단위 간의 유기적인 연결을 확인하는 것 → 본 강의에선 이를 통합 테스트로 규정했다 통합 테스트의 넓은 의미와 좁은 의미 넓은 의미: 전체적인 모듈들이 잘 동작하는 지를 검증하는 것 좁은 의미: 각각의 요소들만 잘 동작하는 지를 검증하는 것 (=서로 다른 모듈 간의 통합이 잘 이루어지는지 검증) 2) 관리 의존성 vs 비관리 의존성 관리 의존성 내 애플리케이션을 통해서만 상태를 바꿀 수 있는 것 ex) 내 애플리케이션에만 연결된 DB 실제 환경을 구축해서 통합 테스트를 하는 편이 좋..

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

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

1. 개요 1) 단위테스트와 협력객체 단위테스트의 특징 작은 코드 조각(단위)를 검증한다 빠르게 수행 가능하다 격리된 방식으로 처리한다 통합과 고립(Sociable and Solitary) 협력 객체를 실제 객체로 사용하는지(통합) 또는 Mock 객체로 사용하는지(격리)에 따라 테스트 구현이 달라진다 협력 객체가 없는 단위테스트는 작성하기가 쉽다. 2) 테스트 대역 (Test Double) 실제 객체 대신 사용되는 모든 종류의 객체에 대한 일반 용어 즉, 실제를 가짜로 대체한 것 대역 종류 (참고링크) 1) Stub: 지정한 응답을 주는 객체 (간접 입력) 2) Fake: 의존성 계약을 준수하는 가벼운 구현체 (테스트용 가짜 객체) 3) Mock: 테스트 대상 내부의 행위(상호작용)을 검증 4) Spy:..

코택
'테스트코드' 카테고리의 글 목록