본문 바로가기

전체 글75

[Java/Spring] 테스트 작성 시 JPA Repository를 분리하는 방법 DB 세팅에 들어가는 시간들 기존에 TDD 기반 테스트 코드를 작성 시 테스트용 DB를 따로 도커 컨테이너에 올려놓았다. 하지만 이 방법은 프로젝트 개발 기간이 늘어나고 코드양이 많아지고 DB에 생성되는 테이블의 갯수가 많아질수록 불편해졌다. 1. deleteAll()의 지옥 모든 테스트는 독립적으로 진행되어야 한다, 는 원칙에 맞춰 테스트를 할 때 마다 db의 데이터를 초기화 시켜주어야 했다. 때문에 모든 테스트에서 테이블 당 deleteAll()을 진행해주어야 했는데 이게 여간 불편했다. 먼저, 테이블 간 제약 조건이 늘어날수록 deleteAll 의 순서가 충돌을 일으키기도 하고 예외가 발생했을 때 삭제도 제대로 되지 않았다. 또 비즈니스 로직이 변경됨에 따라 기존에 테이블에서 구조가 확장될 때 기존.. 2025. 12. 24.
[회고] 2달간의 추가개발 프로젝트 진행하며(테스트코드, JPA Auditing) 테스트 작성 Arrange 단계에서의 변화실무에서 커서AI의 도움을 받아 TDD를 진행하며 테스트 코드는 600개이상이 쌓였다. 늘어가는 테스트 코드 갯수와 전체 테스트 통과와 함께 보이는 초록불을 보고 있으면 뿌듯한 마음이 든다. 이전부터 느꼈지만 테스트를 하기 위해 사전준비해야 하는 단계(Arrange)는 크게 3단계로 나뉜다. 1. deleteAllapi를 실행하고 테스트용 db에 i/o 를 함께 테스트하기 때문에 사전에 db를 청소해주는 단계가 필요하다. 이 단계가 없으면 이전 테스트 코드에 의해 현재 테스트 코드의 결과값이 오염될 수 있다. 그런데 이 단계를 설정하는데 은근히 많은 비용이 든다. 먼저 외래키 제약 조건을 고려해야 한다.테스트 db는 실제 db와 동일한 환경으로 구성되어 있고 외.. 2025. 11. 5.
[회고] TDD를 처음 실무에 적용하며(Spring boot, Java) 내가 TDD를 시작하게 된 이유 TDD에 대해 처음 관심을 갖기 시작한 것은 내 코드에 대한 확신이 부족해지면서부터였다. 협업을 하는 동료와의 관계에서 가장 중요한 것은 신뢰이다. 이 신뢰를 만드는데 중요한 가치 중 하나는 '예측 가능함' 이다. 이 사람이라면 이렇게 생각하고 개발하겠지, 물어보면 어떤 식으로 대답하겠지 하는 사소한 것들이 일정 시간에 걸쳐 쌓이다 보면 얻을 수 있다. 그리고 그보다 더 기저에 존재하는 것이 있다. 그것은 업무에 대한 퍼포먼스이다. 이것은 개발을 잘하고 화려한 스킬을 갖춘다는 의미와는 다르다. 내가 강조하고 싶은 것은 예측 가능함의 범주에 속한 퍼포먼스이다. 이 사람에게 업무를 맡기면 어느 정도의 시간에 걸쳐 이정도의 결과물이 나오겠구나, 하는 생각이 무의식적으로 들게 만.. 2025. 8. 20.
직선 코스 평일에는 출근 전, 주말에는 조금 이른 아침에 일어나서 중랑천에 가 달리기를 합니다. 달리기는 힘들지만 참 재밌는 운동이에요. 달리는 킬로 수가 늘어날수록 느껴지는 감정이 조금씩 다르거든요. 초반에는 비교적 체력이 남아있으니 달릴만 합니다. 주변 경치와 이제 막 뜨는 태양을 보며 마음이 비워지는 경험을 하게 됩니다. 하지만 그 구간이 지나가면 호흡이 점점 가빠옵니다. 심박수는 빨라지고 머리와 몸에 점점 땀에 젖어요. 다리가 조금씩 무거워지기 시작하고 엉덩이는 뻐근해집니다. 그때부터는 주변을 둘러보는 횟수가 급격하게 줄어듭니다. 당장 앞만 보고 달리게 돼요. 혹은 땅바닥에 벌레를 혹시나 밟지는 않을까 밑을 보면서 달립니다. 중반~후반부가 되면 이제 아무런 생각도 들지 않습니다. 그냥 길이 있고 저는 그저 .. 2025. 8. 20.
변화의 가치 이태원 클라쓰라는 웹툰을 재밌게 봤습니다. 이후에는 드라마로도 나왔었죠. 드라마도 재밌게 완결까지 달렸던 기억이 납니다. 극 중에서 박새로이 역을 맡은 박서준이 장근원 역을 맡은 안보현에게 했던 명대사가 기억이 납니다. “내 계획은 15년짜리거든.” 가진 것 하나 없던 박새로이가 거대 기업 장가에 복수하기 위해 계획한 기간이 15년이라는 의미였습니다. 시청자들에게 박새로이가 어떤 사람인지를 각인시켜주는 멋진 대사였습니다. 아무리 부모님의 원수를 갚기 위해서라고 해도 어떤 목표를 이루기 위해 15년동안 노력하는 사람은 많지 않겠지요. 한가지 재미난 상상을 해봤습니다. 박새로이의 계획이 순탄치 않게 흘러가는 겁니다. 가게를 열었는데 장사가 잘 안돼서 망해버립니다. 그래서 또 막노동을 해서 돈을 벌고 다른 사.. 2025. 8. 20.
한걸음 물러서서 웹 개발 업무를 하는 중이었습니다. 대시보드에 올바른 데이터가 나올 수 있도록 잘 가공하는 일이었습니다. 그런데 특정 부분에서 자꾸만 틀린 데이터가 나오는 버그가 발생하는 상황이었어요. 이틀을 고민해도 해결을 할 수가 없었습니다. 물론 다른 업무와 병행하는 중이었다고는 해도 사소한 버그를 고치지 못하고 있다는게 자존심이 상했습니다. 제가 작성한 코드였음에도 잘 이해하기 힘든 복잡한 형태였어요. 그러다 보니 계속 보고 있으면 어느 순간 머리가 멍해지면서 두뇌가 파업을 하는 듯한 현상이 벌어졌습니다. 결국 토요일 아침 커피와 함께 식탁에 앉았습니다. 노트북을 켜고 원격 접속을 통해 사무실 pc로 들어갔습니다. 처음으로 돌아가서 현재 이 버그를 고치지 못하고 있는 근본적인 원인에 대해 생각했습니다. 코드가 이.. 2025. 8. 20.