빨간 막대 패턴 한단계 테스트 우리들인 테스트를 할 때 어떠한 방법으로 하는지 API를 개발할 때 컨트롤러부터 테스트할 때 도 있고 DAO나 Repository 먼저 테스트하는 경우도 있습니다. 켄트백은 이러한 상향식 프로그래밍 하향식 프로그래밍은 TDD 프로세스에 대해 효과적으로 설명할 수 없다고 말을 합니다. 이와 같은 수직적 메타포는 시간에 따른 단순한 변화일 뿐이라고;; 메타포: 본래 표현되어야 할 내용을 간접적으로 명시하는 것이다. 예시: 인생은 여행이다. 켄트백은 TDD에 대해 성장이라는 키워드에 초점을 맞췄다. 우리는 TDD를 처음 접할 때는 더닝 크루거 효과처럼 TDD에 아주 얕은 부분만 알고 알고있는 테스트만 작성을 합니다. 그렇게 알고 있는 테스트만 작성하게 된다면 우리는 해당 테스트가..
분류 전체보기
켄트백의 테스트 주도 개발책을 읽으면서 "어떻게 테스트 할 것 인가?" 에 대해 아래와 같이 먼저 생각해보고 가장 기본적인 전략에 관한 질문에 답해야 한다고 말합니다. - 테스트 한다는 것은 무엇을 뜻하는가? - 테스트는 언제 해야 하는가? - 테스트할 로직을 어떻게 고를 것인가? - 테스트할 데이터는 어떻게 고를 것인가? 첫번째 질문을 답하는데 테스트 코드와 관련해서 여러 세미나 영상이나 개발 커뮤니티를 찾아보면서 생각했던 건 테스트는 켄트백이 말했던 것 처럼 위험한 리스크를 지루함으로 바꿔주는 것이라고 생각한다. 왜냐하면 테스트를 반복 할 수록 스트레스 받는 정도가 많아지고 더 많은 시간을 투자하면서 점점 지루해지지만 사전에 일어날 수 있는 오류를 발견하고 에러를 줄일 수 있어서 리스크를 줄일 수 있..
켄백의 테스트 주도 개발에 대한 1부를 읽고 작성한 회고록 입니다. 테스트 코드가 필요한 이유? 현재 스타트업을 근무하면서 기업 특성상 짧은 시간안에 빠르게 아웃풋을 내고 유저들의 반응을 살피고 안정성은 나중에 생각하다보니 주니어인 제가 봐도 부족한 부분이 많이 존재하고 실제로 테스트 코드 없이 개발을 진행하고 빨리 빨리 기능을 구현을 하다보니 QA과정에서나 배포가 되고 난 뒤 문제점을 발견하게 되고 한부분을 고치게 되면 다른 곳에서 버그가 터지는 버그의 연속이 생기게 되었습니다. 이러한 문제점을 사전에 발견하고 테스트 코드를 작성한 뒤 중복코드를 제거하고 리팩토링을 하는 과정에서 좀 더 클린한 코드, 아키텍처와 안정된 서비스를 운영할 수 있도록 하기 위해서는 필수 불가결하다고 생각합니다. 1부 예제를 ..
JWT Authentication Flow HTTP는 connectionless, stateless한 성질을 가지고 있는 프로토콜 입니다. 그렇기에 유저 인증이 필요한 경우 인증이 필요할 때 마다 로그인을 할 수 없으므로 토큰이나 세션을 통해 유저 인증 상태를 관리하게 되는데 그중 가장 널리 사용되는 JWT 토큰 전략을 스프링 시큐리티 활용하여 사용방법과 동작과정을 정리한 글입니다. 1. 유저 정보를 자바에서 Validation을 활용하여 유저 정보를 체크하고 H2 데이터 베이스에 저장을 합니다. 2. 스프링 시큐리티를 통해 유저 로그인 정보를 인증하고 토큰을 발급 받습니다. 3. 스프링 시큐리티를 통해 전달 받은 토큰을 통해 인가 과정을 거친 후 서비스 로직을 동작하도록 합니다. 스프링 시큐리티가 있는..
자바에서 실수 표현 하는 방법 정수 제공하는 실수형 데이터 타입에는 float과 double이 있다. 정수형 int, long 타입과 동일하게 각 4, 8 바이트의 메모리 공간을 활용하지만 실수를 가수와 지수부분으로 나누어 표현하는 부동 소수점 방식을 기반으로 더 넓은 범위의 값을 표현 할 수 있습니다. 컴퓨터는 실수도 2진수로 표현하기 때문에 두가지 방법으로 상대적으로 꽤 복잡하게 동작하게 됩니다. 실수를 표현하는 방식으로는 고정 소수점 방식(Fixed-Point Number Representation)과 부동 소수점 방식(Floating-Point Number Representation)으로 나뉘어 사용이 됩니다. 고정 소수점 방식 고정 소수점 방식(Fixed-Point Number Represent..
서론 TDD 스터디를 운영하면서 팀원들과의 책 내용을 보면서 따라하기보단 서로 개념을 나누면 좋을 것 같다는 생각에 이와 같이 블로그 글을 정리하는 것으로 더 오래 기억이 남게하기 위해 간단하게 정리를 한 글입니다. 본론 필자는 각각의 테스트를 목록화를 시키면서 다음과 같이 테스트를 진행을 하게 되는데 살펴보자면 테스트 코드 작성 테스트를 실행하고 구현한 코드가 실패하는지 확인 코드 작성 테스트 성공 확인 리팩토링을 통해 중복제거 필자는 아래의 과정을 통해 아래와 같은 점을 느낄 수 있다고 말합니다. 각각의 테스트가 기능의 작은 변경에도 얼마나 커버가 되는지 새 테스트를 동작하기 위해 얼마나 많은 하드 코딩을 하는지 테스트를 얼마나 자주 실행하는지 수없이 작은 단계를 거치면서 수많은 리팩토링을 합니다. ..