본문 바로가기

전체 글

(41)
2019년 회고 2019년, 우아한테크코스, 학생 신분도, 나의 20대도 다 끝났다. 여러 가지로 2019년은 정말 특별한 해였다. 나의 한 해를 돌아보았다. 1월 디지털 노마드 그동안 동경했던 디지털 노마드 삶을 태국의 치앙마이에서 간접 체험하고 왔다. 치앙마이는 값싼 물가와 여유로운 분위기 그리고 적당한 놀거리로 '한 달 살이 여행'으로 주목받고 있는 관광지다. 치앙마이의 맛집, 마사지샵, 펍 등을 소개하는 치앙마이 지도를 개발했지만 완성은 못 했다. 토이프로젝트라서 그럴까? 디지털 노마드 삶은 생각보다 즐겁지도, 쉽지도 않았다. 생각보다 관광할 시간도 없었고 개발에 집중하기도 힘들었다. 마치 두 마리의 토끼를 쫓으려다가 둘 다 노친 격이랄까? 3월~4월 구직 활동 그동안 배운 내용을 정리하면서 회사와 내가 함께 성.. 다이어리 2019. 12. 29. 17:11
테스트 커버리지는 높을수록 좋을까? 이번 포스팅은 Effective Unit Testing를 정리한 글입니다. 서론 옛날에 만들었던 프로그램들을 TDD로 다시 만들면서 테스트 커버리지 수치에 신경 썼습니다. 어느덧 95%는 넘었고 더 높이기 위해서는 검증이 필요하지 않은 로직을 테스트 해야 했고, 문득 이런 생각이 들었습니다. 100%가 된다고 과연 완벽할까? 테스트 작성도 결국 비용이 아닌가? 이런 고민을 하던 찰나 마침 Effective Unit Testing 에서 정답을 찾았습니다. 100% 코드 커버리지 달성이 중요한 게 아니다. 테스트의 가치는 테스트가 확인하지 못한 코드가 어떤 것인가와 테스트가 프로그래밍 실수를 얼마나 정확하게 잡아내는가에 좌우된다. 100%를 달성했다고 해서 결합이 없다고 보장해주는 건 아니다. 애플리케이션 .. Test 2019. 12. 28. 19:42
JUnit 5 Parameterized Tests 사용하기 혹시 테스트 코드를 작성할 때 아래와 같은 중복되는 코드를 작성하고 계신가요? @Test @DisplayName("User 생성 name 2자 미만 예외처리") void createUserException01() { IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> new User(VALID_EMAIL, "q", password)); assertThat(e.getMessage()).isEqualTo(NAME_NOT_MATCH_MESSAGE); } @Test @DisplayName("User 생성 name 10자 초과 예외처리") void createUserException02() { IllegalArgumentE.. Java 2019. 12. 28. 19:33
우아한테크코스 레벨3 회고 레벨3(9/17~11/15)가 끝난지도 벌써 11일이 지났다. 방학 동안 실컷 놀다가 뒤늦게 회고를 쓰는 내 자신이 부끄럽지만 할 건 해야지 😅 지난 두 달간 배운 것들 우아한테크코스에서 레벨3 미션으로 진행한 것은 다음과 같다. 1~2주: HTTP 이해 - 웹 서버 구현 3~4주: MVC 프레임워크 5~6주: JDBC 라이브러리 7~9주: DI 프레임워크 이 과정을 통해서 네트워크, 자바, 프레임워크 만들기, 스프링, 약간의 DB 등.. 정말 많은 것을 배웠다. 항상 애플리케이션만 만들다가 프레임워크를 만드는 입장이 되어보니 고려해야 하는 부분이 달라서 이 과정이 쉽진 않았지만 재미있었고 스프링에 대한 이해도도 높아지게 되었다. 특히 DispatcherServlet과 ArgumentResolver, D.. 우아한테크코스 2019. 12. 28. 19:32
TDD의 장점은 무엇일까? 한참 TDD를 공부할 때 A가 물었다. A: TDD가 뭐에요? 왜 써야 하죠? 나: TDD는 테스트 코드를 먼저 작성하고 프로덕션 코드를 작성하는…. (중략) 설계 기법이고요. ~~한 장점이 있습니다. A: 어? 그거 테스트 코드 작성했을 때의 장점 아니에요? 먼저 프로덕션 코드 작성하고 테스트 코드 작성하면 되지 않아요? 저는 테스트 코드 작성은 필수지만, TDD는 안 해도 된다고 생각해요. '어 그러네..? 분명 TDD만의 장점이 있는데….' 나는 할 말을 잃었다. 왜 쓰는 걸까? 그 당시 나는 TDD의 장점을 이렇게 말했다. 피드백이 빠르다. 변화에 대한 두려움을 줄여준다. (리팩토링이 편하다) TDD를 하면 코드 복잡도가 떨어진다. 디버깅 시간을 줄여준다. 동작하는 문서 역할을 한다.. Test 2019. 12. 28. 19:28
자바 리플렉션이란? 작년 이맘때 궁금하지만 어려워서 넘어갔던 기술들이 있었습니다. 대표적으로 엘라스틱 서치와 리플렉션이 있었는데 최근에 하나씩 공부하면서 지난번과 달리 비교적 쉽게 체득할 수 있었는데요. 그 이유는 학습 방법의 변화 덕분입니다. 작년에 리플렉션을 공부할 때는 무작정 개념과 사용방법만 익히려고 했는데 이번에는 Why 에 초점을 맞춰서 공부했더니 더 쉽게 이해하고 활용을 잘할 수 있게 되었습니다. '이 기술은 왜 나왔을까? 왜 사용할까?' 를 이해하는 것은 중요합니다. 그래서 작년의 저와 같은 사람에게 도움이 되었으면 해서 리플렉션이 무엇인지 정리를 해보기로 했습니다. 리플렉션의 사용방법은 다루지 않습니다. 사용 방법은 아래 링크를 추천합니다 https://www.baeldung.com/java-reflecti.. Java 2019. 12. 28. 19:06