Unit Testing을 통해서

Viva의 놀이터·2022년 12월 18일
0
post-thumbnail

단위 테스트

이 책의 목적 및 방향성

지난 20년간 단위 테스트의 중요성을 강조하여 많은 기업들에서 단위 테스트를 작성하고 있다. 이 책에서 말하고 싶은 것은 단위 테스트의 중요성은 인지하여 작성을 하고 있는데

어떻게하면 좋은 단위 테스트를 작성 할 수 있을까? 어떤게 좋은 단위 테스트일 것인가? 를 고민하고 이야기 하고자 한다.

다른 책에서는 단위 테스트의 중요성 그리고 기본적인 사용법을 다룬다면 그 이후의 사용 및 학습은 독자에게 맡기는데 이 책에서는 그 이후를 다루고 있다.

단위 테스트의 목적

프로젝트의 초기에는 진척사항이나 진행 속도가 빠르다. 하지만 시간이 지날수록 기존의 코드에 각종 기능들으 추가되면서 새로운 기능을 추가하기 어려운 상황이 온다.
이를 흔히 소프트웨어 엔트로피라고 지칭한다. 소프트웨어 엔트로피의 증가는 막을 수는 없지만 늦출수는 있고 엔트로피의 증가 추세를 낮출수있다.
지속적인 정리, 리팩터링 등과 같은 적절한 관리를 함으로써 늦출수있다.

리팩터링, 지속적인 정리를 하다가 잘못 건드리면 새로운 오류나 버그가 발생하는데 이를 모르고 시간이 지나게 되면 어디서부터 잘못됬는지 알수가 없다.
이는 안정적인 버전으로 회귀가 힘들다는 것을 의미하는데 단위 테스트가 이를 도와주는 안전망 역할을 할 수 있다.

단위 테스트를 사용하여 리팩토링, 코드 정리 후에도 기존 기능이 잘 동작하는지 확인하는데 도움이된다.

하지만 단위 테스트는 초반에 노력(추가적인 코드의 작성)이 필요하다. 그러나 프로젝트 후반에도 지속적으로 성장 할 수 있도록 하므로 장기적으로 초반에 작성하는데 소요된 비용을 충분히 메울 수 있다.

테스트 스위트

그럼 좋은 단위 테스트는 어떤것일까? 좋은 테스트 코드 달콤한 단위 테스트 코드를 테스트 스위트라고 칭하는것 같다.

테스트 코드를 수치화하는 것을 테스트 커버리지 라고 칭한다. 그럼 테스트 커버리지 수치가 높으면 좋은 테스트 코드인것일까?

꼭 그렇지많은 않다. 그래서 좋은 테스트 코드를 평가하기 위한 지표로 테스트 커버리지 수치로 설정하고 이에 초점을 맞추게되면 불필요한 테스트 코드가 증가하고

오히려 악영향을 끼칠수있다.

그럼 테스트 스위트인 코드는 어떤 코드가 있을까?? 어떤게 좋은 테스트 코드인것일까? 이 책에서는 성공적인 테스트 스위트에는 3가지 특징이 있다고 기술한다.

  • 개발 주기에 통합돼 있다.

  • 코드베이스에서 가장 중요한 부분만을 대상으로 한다.

    • 작성한 모든 코드에 대한 테스트보단 가장 중요한 기능을 중점으로 테스트 코드를 작성
    • 일반적으로 비즈니스 로직의 검증
  • 최소한의 유지비로 최대의 가치를 끌어내낟.

    • 테스트 코드의 작성 목표는 최소의 비용으로 프로젝트의 유지비용을 지불하는 것 따라서 테스트 코드도 가성비 있게 작성하는게 중요하다.
    • 좋은 테스트 코드를 작성하기 위해서는 베이스코드의 이해가 필요하다. 또한 가성비 있는 테스트 코드를 작성하기 위해서는 베이스코드가 간결하고 작성이 잘되어 있어야 한다.
    • 이 책은 테스트 코드를 다루는 책이지만 어떻게 베이스코드를 설계하고 작성해야 테스트 코드를 가성비 있게 작성 할 수 있는지를 알려준다. 따라서 이 책에서는 어떻게 프로젝트를 설계해야 되는지도 같이 기술할 예정이라고 한다.

이 책을 관통하는 가장 중요한 핵심

단위 테스트는 소프트웨어가 지속적으로 성장 가능하게 하는것이다.

  • 시간이 흐르면 새로운 기능을 추가 할 때 너무 많은 시간이 소요되고 성장하는데 많은 비용이 든다.
  • 테스트 코드를 작성함으로 오래된 소프트웨어도 새로운 기능이 추가될 때 개발 속도를 빠르게 유지하기 위함이다.
profile
역사를 잊은 기술에겐 미래가 없다

0개의 댓글