TDD

    [강의 후기] Practical Testing: 실용적인 테스트 가이드 후기

    TDD 스터디를 마치고 실제 회사에서는 어떤 방식으로 테스트를 진행하는지 궁금증을 가지던 중에 인프런에 테스트에 대한 신규 강의와 수강평이 좋아 수강을 하게 되었다. 해당 글은 내가 테스트 강의를 들으면서 공감이 되는 부분을 중점으로 기술한다. 테스트는 왜 필요할까? 강사의 테스트 생각 : 귀찮다. 나의 생각 : 고려해야 할 것이 많다. QA에 대한 테스트 커버할 수 없는 영역이 발생한다. 경험과 감에 의존한다. 늦은 피드백이 발생한다. 유지보수의 어려움 소프트웨어 신뢰도가 낮아진다. 테스트를 하는 이유 빠른 피드백 자동화 소프트웨어 신뢰도 상승 테스트 코드를 작성하지 않을 경우 변화가 생기는 매순간마다 발생할 수 있는 모든 Case를 고려해야 한다. 변화가 생기는 매순간마다 모든 팀원이 동일한 고민을 ..

    [TDD] 테스트 범위와 종류

    [TDD] 테스트 범위와 종류

    테스트 범위 하나의 기능이 올바르게 동작하려면 컨트롤러, 서비스, 모델과 같은 자바 코드와 프레임워크, 설정에 문제가 없어야 할 뿐 아니라 브라우저에서 실행되는 자바스크립트 코드, HTML과 CSS 등이 정상 동작해야 한다. 또한, DB의 테이블도 올바르게 생성해야한다. 기능 테스트와 E2E테스트 기능 테스트(Functional Testing)는 사용자 입장에서 시스템이 제공하는 기능이 올바르게 동작하는지 확인한다. 이 테스트를 수행하려면 시스템을 구동하고 사용하는데 필요한 모든 구성요소가 필요하다. 기능 테스트는 사용자가 직접 사용하느 웹 브라우저나 모바일 앱부터 시작해서 데이터베이스나 외부 서비스에 이르기까지 모든 구성 요소를 하나로 엮어서 진행한다. 기능 테스트는 끝에서 끝가지 올바른지 검사하기 때..

    [TDD] 테스트 가능한 설계

    [TDD] 테스트 가능한 설계

    테스트 어려운 코드 모든 코드를 테스트할 수 있는 것은 아니다. 개발을 진행하다 보면 테스트하기 어려운 코드를 만나게 된다. 이를 살펴보고 이를 어떻게 테스트 가능한 코드로 변경하는 지 파악한다. 하드 코딩된 경로 Path path = Paths.get("D:\\\\data\\\\pay\\\\cp0001.csv) 하드 코딩된 경로뿐만 아니라 하드코딩된 IP 주소, 포트 번호도 테스트를 어렵게 만든다. 의존 객체를 직접 생성 private PayInfoDao payInfoDao = new PayInfoDao(); 테스트를 어렵게 만드는 또 다른요인은 의존 대상을 직접 생성하고 있다는 점이다. 해당 코드를 테스트 하려면 PatInfoDao가 올바르게 동작하는데 필요한 모든 환경을 구성해야한다. DB를 준비해..

    [TDD] 대역

    [TDD] 대역

    외부 요인은 테스트 작성을 어렵게 만들 뿐만 아인라 테스트 결과도 예측할 수 없게 만든다. Double 영어로 된 테스트 관련 글을 읽으면 test double이란 표현이 자주 나오는데 여기서 double은 본 장에서 설명하는 대역에 해당한다. 즉, test double은 테스트에서 진짜 대신 사용할 대역을 의미한다. 대역의 종류 대역종류 설명 대역종류 설명 스텁(Stub) 구현을 단순한 것으로 대체한다. 테스트에 맞게 단순히 원하는 동작을 수행한다. 가짜(Fake) 제품에는 적합하지 않지만, 실제 동작하는 구현을 제공한다. DB대신에 메모리를 이용해서 구현한 것과 같다. 스파이(Spy) 호출된 내역을 기록한다. 기록한 내용은 테스트 결과를 검증할 때 사용한다. 스텁이기도 하다. 모의(Mock) 기대한대..

    [TDD] 테스트 코드의 구성

    [TDD] 테스트 코드의 구성

    이번 주차 블로그 글은 GDSC에서 제가 직접한 글을 첨부하도록 하겠습니다. [TDD] 5. 테스트 코드의 구성 작성자 : 한규범 기능에서의 상황 주어진 상황에 따라 기능 실행 결과는 달라진다. 이는 테스트 코드 구조에도 영향을 주는데 이에 관한 내용을 이어서 살표보자. 상황 찾기 노련한 개발자는 어 gdsc-mju.tistory.com Reference. 테스트 주도 개발 시작하기 - YES24 TDD(Test-Driven Development)는 테스트부터 시작한다. 구현을 먼저 하고 나중에 테스트하는 것이 아니라 먼저 테스트를 하고 그다음에 구현한다. 구현 코드가 없는데 어떻게 테스트할 수 있을까? 여기 www.yes24.com