본문 바로가기

분류 전체보기59

테스트 코드 최적화 여행기 (3) 우리는 처음에 Context를 재사용 하기 위해서 Dirties Context를 제거했습니다. 그리고 그를 통해 비약적인 테스트 속도 개선을 이뤄냈습니다. 그래서 저는 이제 모든 테스트가 동일한 Context를 돌려 사용한다고 생각했고, 안심하고 있었습니다. 그런데 전체 테스트를 진행했을때 이상한점을 찾았습니다. 테스트가 잘 진행되다가 중간중간에 한번씩 뚝,뚝, 걸리는 부분이 있는겁니다. 그래서 그 뚝 뚝 걸리는 테스트를 확인해 봤더니 왠걸... 새로운 Context를 Load하고 있었습니다. 왜 이런일이 발생하는가 소스를 비교하고 실험해본 결과, 스프링이 테스트에서 컨텍스트를 관리하는 방법과 관련이 있었습니다. 스프링은 기본적으로 테스트를 진행할 때 Context를 캐싱하여 여러 테스트에서 돌려 사용할.. 2021. 10. 7.
테스트 코드 최적화 여행기 (2) 안녕하세요 깃들다팀의 손너잘 입니다. 테스트 최적화의 두번째 글을 작성하게 되었습니다. 이전 글에서 작성하였듯, 첫번째로 할 것은 DirtiesContext의 제거입니다. 많은 프로젝트에서 매번 테스트의 환경을 초기화 시키기 위해 DirtiesContext를 사용합니다. 하지만 DirtiesContext는 스프링 테스트가 매 테스트마다 Application Context를 다시 Load하도록 합니다. 이는 스프링 테스트가 제공해주는 Application Context의 캐싱의 이점을 전혀 가져가지 못합니다. 깃들다팀 또한 처음 프로젝트를 시작했을 떄 테스트의 환경을 초기화해주기 위해(정확히는 인메모리 DB초기화를 위함이지만요) DirtiesContext를 사용했습니다. 심지어 BEFORE_EACH_TES.. 2021. 10. 7.
테스트 코드 최적화 여행기 (1) 우테코 3단계를 진행하면서 프로젝트로 깃허브 기반의 SNS를 제작하고 있다. 팀의 컨벤션으로 테스트코드를 정말 빡시게 짜고있는데, 덕분에 리팩토링, 트러블 슈팅 등 많은 부분에서 큰 도움을 얻고 있다. 하지만 프로젝트의 기능이 하나식 추가되고 커지면서 문제점이 발생하는데, 바로 큰 도움을 준 테스트 코드가 그 주인공이다. 테스트 코드를 작성하다보니 어느 순간 500개가 넘는 TC가 쌓였다. 하지만 그에 따른 테스트 시간이 비약적으로 증가하였다. 체감상으로는 테스트가 쌓일수록 지수그래프를 따라 상승하는 것 같다. 또한 그 뿐만 아니라, 짧은 시간안에 많은 기능들을 구현하고자 하니 팀원들간의 테스트 컨벤션이 맞질 않아 테스트 픽스쳐가 여기저기 흩뿌려져 있고, 인수테스트의 경우 api를 호출하는 코드가 여기저.. 2021. 10. 7.
우리는 왜 CI/CD에 실패하였는가? 이전글에서 필자는 필자가 생각하는 CI/CD에 대하여 논하였다. CI/CD란 무엇인가? CI/CD란 무엇인가? 프로젝트를 진행하면서 CI/CD 를 통한 자동화 배포 프로세스를 구축하는 경우가 많다. 우테코에서 이번 팀 프로젝트를 진행하면서 우리팀 역시 CI/CD 프로세스를 구축했으나 결론적으로 CI/CD를 제 bperhaps.tistory.com 그렇다면 이번 글에서, 왜 필자가 이번 프로젝트에서 CI/CD를 실패했다고 생각했는지에 대하여 작성해 보도록 하겠다. 엄밀히 말하자면 필자는 CD보다는, CI에 실패했다고 생각하고 있다. 이전글에서도 말했듯, CI의 가장 큰 목적은 머지데이의 안좋은점을 제거하는데 있다고 생각한다. 하지만 프로젝트를 진행하면서 나름 치밀하게 CI/CD를 구축했다고 생각했음에도 불.. 2021. 9. 27.