나의 삶

요즘 이동욱님 (향로, jojoldu)에게 빠져있습니다.

꼰딩 2023. 3. 1. 11:08

예전에 개발바닥 구독해놓고 가끔 보고 있었는데,


얼마전에 테스트 코드 관련 영상은 아니였지만 테스트 코드에 대해 질문이 나와서 본인은 classicist 여서 mocking을 지양 하신다고 말씀하신것을 보았습니다.


classicist 라는 단어 자체를 처음 들어서 찾아봤는데, 생각보다 깊은 내용이였더라구요.


이미 알고 계신 분들도 많겠지만, 간단히 설명하자면 아래와 같습니다.


Classicist vs Mockist


제가 기존에 알고 있던 테스트 방법은 Test Double 을 사용하는 solitary 테스트 였습니다.


이 테스트 방법을 사용하는 사람들을 mockist라고 하구요.


그에 반해 TDD의 창시자 켄트백, 그리고 마틴 파울러는 이동욱님과 같은 classicist 입니다.


classicist는 mocking을 웬만하면 하지 않고 실제 객체를 사용하는 sociable test을 지향하는 사람들을 가리키는 말입니다.


그러니 original 테스트 방법은 test double을 사용하지 않으니 고전적인 방식이라고 해서 classic 이라는 말이 붙은 것이였습니다.


켄트백이 TDD를 고안한 이후, 런던에서 개별적으로 test double을 사용하는 테스트 방법이 고안됐는데 이것이 solitary test 입니다.


링크드인에서 종종 보던 이규원님도 classicist이고, 블로그에 글을 올리신것도 보았습니다.


전에 제가 링크를 정리해두었습니다.


https://velog.io/@chss3339/Test-Code-TDD-Classicistsociable-vs-MockistSolitary


테스트 코드에 대해 살펴보고, 이동욱님의 블로그를 쭉 둘러보니 정말 배울점이 많은 글들이 많았습니다.


아직 제대로 읽은 것은 회고와 테스트코드 관련 글뿐이지만요.


글을 읽다보니 뭐 하나만 공부해서는 안되겠다는 생각이 들었습니다.


  1. 테스트 코드를 잘 작성하려면, 구현코드가 잘 설계되어야 합니다.
  2. 구현코드가 잘 설계되어야 하려면, 도메인과 비즈니스 로직 등 각 계층이 본인의 역할에 충실해야 합니다.
  3. 그렇게 되려면 OOP를 엄격하게 지켜야 합니다.

이것들은 또한, hexagonal, clean 아키텍처로 발전하기 위한 기초 지식이 됩니다.


node.js에서는 도메인과 oop를 강제하지 않기 때문에,
이동욱님이 알려주시는 예시 코드는 저로서는 상당히 낯설지만 서서히 익숙해지고 있습니다.


다른 개발바닥 영상에서는, 이동욱님이 신입 개발자를 볼 때 OOP, SQL, 테스트코드 세가지의 이해도를 본다고 하시더라구요.


결국 도구의 사용법을 얼마나 익혔는지가 아니라, 가장 기본이 되는 지식을 가지고 있는지 여부를 본다고 하신 거였습니다. (직접 하신말)


이와 관련하여 제가 다니고 있는 회사의 다른 개발자분들께도 많이 여쭤보고 있는데, 하루하루 많은 것을 배우고 있습니다.


아무튼, 요즘 이동욱님께 빠져서 티스토리 블로그도 조졸두 블로그와 비슷하게 만들었고 그분의 개발 철학을 닮아가려고 하고있습니다.