TDD

    REST-Assured 알아보기 (테스트를 위한 클라이언트 객체)

    REST Assured? REST API를 단순히 테스트하는 Java DSL(Domain-specific language)이다. POST, GET, PUT, DELETE, PATCH 및 HEAD Request를 지원하며, 요청과 응답을 검증하는 데 사용한다. 왜 사용하는가? 기존의 단위 테스트, 통합 테스트로 개발자의 안심을 이끌어 낼 수 있지만, 이는 내부 개발자의 관점이다. Rest-Assured는 외부 사용자의 관점에서 코드에 상관없이 요청과 응답으로 REST API 자동화 테스트를 구성하고 확인할 수 있어서, 사용자의 관점에서 한번 더 안심을 할 수 있다. 어떻게 보면 테스트를 더 추가하는 거라 과도한 테스트 코드라 의심할 수 있지만, 사용법이 매우 단순하기 때문에 간단히 Java를 알면 사용자 ..

    ATDD 1주차 - 인수테스트 후기📖

    NEXTSTEP에서 진행하는 교육과정 ATDD와 함께 클린 API로 가는 길 4기다. (글을 작성하는 시점에서는 과정명이 ATDD, 클린 코드 with Spring으로 변경되었다.) ATDD, 클린 코드 with Spring edu.nextstep.camp 🚀 1단계 - 노선 관리 기능 구현 step1 : 노선 관리 기능 구현 by loop-study · Pull Request #165 · next-step/atdd-subway-map 안녕하세요 리뷰어님. 박현철입니다. 기존의 지하철 인수 테스트를 참고하여 노선 관리 기능 구현을 했습니다. 앞으로 많은 지도 부탁드립니다! 🙇🏻‍♀️ github.com 요구사항 아래 인수 조건을 검증하는 인수 테스트 작성하기 작성한 인수 테스트를 충족하는 기능 구현하기..

    ATDD는 무엇인가?

    누구나 겪을 수 있는 상황 개발을 하다 보면 요구사항이 명확하지 않거나 부족한 경우에 많은 고민을 해본 적이 있을 것이다. 기획자에게 물어보거나 같이 요구사항을 해석하면서 개발하면 고객이 원하는 결과물이 아닐 경우가 높다. 기획자와 같이 요구사항을 재확인하여 수정해야 한다. 이런 상황을 예방하고 올바른 요구사항을 충족하려면 고객에게 질문해야 한다. 전화를 하거나 이메일 보내도 고객이 실시간으로 확인하는 것 아니기 때문에 응답에 시간이 걸린다. 답변을 받아도 이해하기 힘들 경우에 다시 정리해서 요청하기도 한다. 개발은 점점 딜레이 되고 고객의 불만이 조금씩 쌓인다. 문제의 원인은 서로 생각하는 관점이 다르기 때문이다. 괴리감을 해결하기 위해선 커뮤니케이션이 필요한데 전화 & 이메일은 한계가 뚜렷하다. 결과..

    시작글 - 테스트 주도 개발로 배우는 객체 지향 설계와 실천

    11월에 읽기 시작한 테스트 주도 개발로 배우는 객체 지향 설계와 실천이다. 이 책을 통해 테스트 주도 개발에 대한 의미를 새롭게 가지게 되었다. 이전까지 TDD를 오버엔지니어링을 막고, 변화에 유연하게 대처할 수 있는 개발 방법이라 생각했었지만 미쳐알지 못했던 혹은 제대로 인식을 못했던 테스트 코드에 대한 많은 내용을 알게 해주었다. 책은 5부(27장)까지 이뤄져있다. 1부 - 서론 : 테스트 주도 개발의 간단한 소개와 도구를 언급하는데, 도구는 당시 기준으로 JUnit4와 햄크레스트 매처, jMock2 설명한다. 2부 - 테스트 주도 개발 과정 : ATDD 방법론과 객체지향에 대해 설명한다. 3부 - 동작하는 예제 : 이전까지 설명한 내용을 경매시스템 예제를 통해 ATDD 방법으로 작성한다. 예제가 ..

    Mockito 알아보기 (부제 : BDD)

    테스트 코드 입문자라면 겪어보는 문제 테스트 코드를 작성한지 얼마 안 되었을 때 의존성이 있는 객체의 테스트 코드를 작성하면서, 의존하는 객체의 실제 인스턴스를 생성해서 진행한 적이 많았다. 나중에 변경이 생기면 관련된 테스트가 모두 실패하는 상황이 잦았다. (고치는 것도 고역이였다.) 그러다 보니 나중엔 테스트 코드 때문에 변경이 무서워지는 상황이 생겼다. 유연하게 변경하기 위한 테스트 코드 때문에 변경이 무섭다니... 아이러니한 상황이다. 또한 외부 API를 의존할 경우에 테스트 코드를 어떻게 작성해야 할지 막히는 경우도 있다. 잘못된 걸 인식했으면 해결하기 위해 고민을 해야 했는데 당시에는 '테스트 코드가 복잡해지면 이런갑다~' 하고 아무 생각없이 넘어갔다. DDD 세레나데 교육과 인프런 백기선 강..

    JUnit5 알아보기

    인텔리제이를 사용하는 자바 개발자가 90% 이상 사용한다는 JUnit을 간단히 알아보러 한다. 자세한 내용은 공식 가이드를 참고하기 바란다. JUnit 5 JUnit이란? JUnit은 자바 프로그래밍 언어용 유닛 테스트 프레임워크이다. JUnit은 컴파일 타임에 JAR로서 링크된다. [위키백과] JUnit5 구성요소 Junit5는 3가지로 구성되어 있다. - JUnit Platform : JVM에서 테스트 프레임워크를 실행하는 기반, 테스트 엔진 API 제공 - JUnit Jupiter : 테스트를 작성하기 위한 프로그래밍 & 익스텐션 모델을 제공 - JUnit Vintage : 이전 버전을 위한 테스트 엔진 제공 (JUnit3 & JUnit4 호환) 왜 JUnit5 인가? JUnit 시리즈 중에서 20..

    토비의스프링 vol.1 - 2장, 테스트

    토비의 스프링 vol.1 2장 테스트 내용을 정리하며 오래된 버전이라 예제를 따라서 실행하는 것보단 스프링이 추구하는 객체지향 설계에 대해 생각해본다. 자세한 내용이 궁금하면 읽는 걸 추천한다. 토비의 스프링 3.1 세트 - 교보문고 스프링의 이해와 원리 + 스프링의 기술과 선택 | 『토비의 스프링 3.1』은 스프링을 처음 접하거나 스프링을 경험했지만 스프링이 어렵게 느껴지는 개발자부터 스프링을 활용한 아키텍처를 설계 www.kyobobook.co.kr 2장을 시작하며 스프링이 제공하는 중요한 가치 중에는 객체지향과 테스트가 있다. 애플리케이션은 꾸준히 변하고 커져간다. 그 변화에 대응하는 첫 번째가 바로 확장과 변화를 고려한 객체지향적 설계와 IoC/DI 기술이라면, 두 번째가 코드에 대한 확신과 변화..

    이규원님의 현실 세상의 TDD 깊은 곳, 마지막편 : 코딩 계획

    테스트 주도 개발의 마지막 시간, 코딩 계획이다. 간단한 설명 후 이전시간에 보여준 ATDD를 예시로 진행한다. 📖 자세한 내용이 궁금하면 이규원 님의 TDD 수강하는 걸 추천드립니다. 👍 The RED : 이규원의 현실 세상의 TDD : 안정감을 주는 코드 작성 방법 | 패스트캠퍼스 그동안 우리나라에는 TDD를 제대로 다루는 책도 강의도 없었죠. 그래서 제가 개발 현장에서 활용하는 TDD를 정확하게 알려드리고자 강의를 만들었습니다. 이제 TDD에 대한 잘못된 인식은 버리고, ' fastcampus.co.kr 코딩 작업 설계 목표를 명확히 기술 - 어떤 가치를 구현하기 위해 코드를 쓰고 연결할 것인가? - 코딩은 하위 문제에 집중하게 함 - 명확한 이정표가 없다면 프로그래머는 자원을 낭비 - 사용자 스토..