Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back

TIL - 9장 단위 테스트

#clean_code
11개월 전
334

오늘 TIL 3줄 요약

  • TDD를 적용할 때는 세 가지 법칙을 잊지말자

  • 테스트 코드 또한 깨끗해야한다

  • Fast. Independent, Repeatable. Self-validating. Timely.


TIL (Today I Learned) 날짜

2024. 09. 06


오늘 읽은 범위

  • 9장. 단위 테스트


책에서 기억하고 싶은 내용을 써보세요.

  • TDD 법칙 세 가지

    • 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.

    • 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.

    • 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.

  • 테스트를 깨끗하게 유지하지 않으면 결국은 잃어버린다.

  • 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 단위 테스트다.

  • 테스트 당 assert 하나 또는 개념 하나 (잘 고민해보자)

  • FIRST

    • Fast: 테스트가 빨리 돌아가야 여러번 자주 돌릴 수 있다.

    • Independent: 테스트끼리 서로 의존하지 않아야한다.

    • Repeatable: 어떤 환경에서도 테스트가 돌아가고 반복 가능해야한다.

    • Self-Validating: 테스트의 결과는 성공 또는 실패다. 결과를 가지고 테스터가 판단하여 성공/실패를 결정하면 안된다.

    • Timely: 테스트는 실제 코드를 구현하기 직전에 구현한다. 잘못하면 테스트가 불가능한 코드를 작성하게 될 수 있기 때문이다.


오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 나는 테스트 코드를 많이 작성해보지 않았다. 그렇기에 더욱 집중해서 해당 챕터를 읽었고 기억에 남는다. 가장 공감이 되는 부분은 테스트 케이스가 있다면 수정했을 때 버그가 생길까 걱정이 사라진다는 부분이다. 지금 회사에서는 테스트 코드란 존재하지않는다. 상당히 무서운 코드이다. 너무나 테스트 코드가 필요하다.

  • 목록 9-4는 조금 더 고민이 필요하지않을까 생각된다. 책에서는 의미만 안다면 눈길이 문자열을 따라 움직이며 결과를 재빨리 판단한다라고 작성되어있지만 알기 위해서는 getState를 한 번은 꼭 읽어야한다. 그리고 기억해야한다. 각 장비의 앞 글자만 따온 문자열을 기억하기 쉬울까? 또한 장비가 추가되거나 장비끼리 그룹을 나누어 일부만 테스트할 수 없다.

  • Q. 위의 9-3 코드를 좀 더 좋은 방향으로 바꿔보자

    • 사실 이거다! 할 정도의 코드는 떠오르지않는다. 하지만 책에서 설명하는 오른쪽을 읽고 왼쪽을 읽는 형태는 불편하기는 하다. 9-4와 같이 변경하면 어떨까 생각이 든다.

    • assertEquals(hw.heaterState(), true) 이렇게 작성하는 것이 가능한지는 모르겠다. 가능하다면 9-3보다 훨씬 읽기 편하다고 생각한다. assert는 Equals로 모두 동일할테니 다음 줄을 읽을 때 Equals인지 True인지 False인지 주의 깊게 보지않아도 된다. 그러면 자연스럽게 "hw의 heaterState가 True여야 한다." 라고 읽게 된다. 그러면 책에서 설명했던 불편한 부분을 해소할 수 있다고 생각한다.


궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.


오늘 읽은 다른사람의 TIL

  • https://nomadcoders.co/community/thread/10188

    • 풀었던 퀴즈에서 틀렸던 부분을 다시 확인하고 복습하는 모습이 인상 깊습니다.

    • 저도 2개 틀렸는데 왜 틀렸는지는 찾아보지 않았다. 하나는 이해가 됐고 하나는 이해가 안됐다. 지금이라도 찾아봐야겠다.

  • https://blog.naver.com/21numbers/223572613472

    • 내용 정리를 할 때 제목 > 내용 순서를 맞추어 작성해주셨고 제목은 눈에 띄어서 잘 읽힙니다. 다시 돌아보실 때 제목만 먼저 보시고 기억이 안난다면 내용을 볼 수 있어 복습하기에도 좋다고 생각합니다. 추가로 동료의 말을 기억해두고 책의 내용과 비교하며 어떤 부분이 장단점인지 찾아보는 노력이 멋있다.

    • 내용을 작성하실 때 정말 상세하게 작성해주셨다. 페이지까지,, 언제든지 복습이 가능한 다시 찾아볼 준비가 되어있다고 보인다.

  • https://velog.io/@hjeong1200/TIL-%EC%98%A4%EB%A5%98-%EC%B2%98%EB%A6%AC

    • 어쩌다보니 저번에 읽고 최애 TIL로 작성했던 분의 글을 또 읽게되었고 다른 이유로 다시 작성하게 되었습니다. 이번에는 소감을 상세하게 작성해주셨습니다. 단순히 읽고 느낀 부분이 아니라 책을 읽고 공부했던 내용과 연관하여 추가적인 정보를 전달해주셨습니다. 나만 읽는 TIL이 아닌 남이 읽었을 때도 도움이 되는 글이라고 생각합니다.

    • 이렇게 다른 분들의 TIL을 읽고 새로운 정보를 얻거나 다른 개발자 분의 생각을 봤을 때 조금 뿌듯하고 기분이 좋습니다. 오늘도 기분 좋은 글을 작성해주신 작성자분께 감사합니다.