목록으로
Testing

테스트 코드의 필요성

Dev Park
3/21/2024
28 views

서론

Springboot에서 도서관 예약 시스템을 개발하고 있던 중 JUnit을 통해 테스트 코드를 만들게 되었다.
기능별로 테스트 케이스를 만들었지만, 개발 중에 테스크 코드를 통해서가 아닌 다른 방식으로 테스트를 진행하며 개발하던 나에게 이런 테스트 코드 작성이 크게 효율적으로 다가오지는 않았다.
Postman과 같은 프로그램을 통해 하나하나 테스트를 진행하며 개발을 하면되지 않나? 굳이 귀찮게 테스트 코드를 작성해야할 필요성을 못느낀 것이다.
하지만 이번에 코드를 수정하고, 기존의 데이터 객체들을 record로 교체하는 작업을 하던 중 테스트 코드의 필요성을 느끼게 되었다.

본론

테스트 코드는 한번 작성해두면 결과값을 변경할 목적으로 리팩토링을 한것이 아닌 이상 테스트 코드 자체를 수정할 일은 거의 없다.
어플리케이션에서 변경사항이 발생했을때 처음 한번만 테스트 코드를 작성해둔다면 그 다음부터는 원할때마다 테스트를 할 수 있게 되는 것이다.

이게 postman과 같은 프로그램을 통한 수동적 테스트와는 크게 차이가 있는데, postman은 결국 사람이 하나하나 모든 기능을 테스트해야한다.
이게 처음에 기능이 얼마 없을때는 테스트 코드를 작성하는 시간이 아까울 만큼 크게 시간이 드는 작업은 아니다.
하지만 어플리케이션이 점점 완성되어 갈 수록 수동으로 테스트를 하기에는 신경써야하는 부분들이 너무 많고, 시간도 많이 든다.
이때, 기능별로 테스트 코드를 하나하나 작성해두면 원할때마다 테스트 코드를 실행시키기만하면 테스트를 진행할 수 있게된다.

이번에 record를 적용하면서 제대로 적용되고, 어플리케이션에 문제가 생기지 않았는지를 테스트를 해봐야했다.
만약 테스트 코드를 작성해두지 않았다면 DTO를 수정한 시점에서 어플리케이션을 전체적으로 테스트를 해봐야하는데 이걸 수동으로하기에는 어려운부분이 있었다.
하지만 이전에 테스트 코드를 작성해두었기때문에 테스트 코드를 실행시켜보며 해당 변경사항이 옳바르게 적용되었는지를 빠르게 테스트해볼 수 있었다.

결론적으로 어플리케이션에 기능이 추가되거나, 변경되었을때 빠르고 정확하게 테스트를 해볼 수 있기때문에 테스트 코드를 작성해야겠다고 생각했다.

또 다른 이유

또 다른 이유로는 단위 테스트를 통해 실패하는 경우도 전체적으로 테스트해볼 수 있기때문이다.
실패를 테스트한다는 것이 TDD에 익숙하지 않은 사람이라면(나를 포함해서) 생소하게 느껴질 수도 있을 것이다.
어떻게든 성공하게끔만 테스트를 진행하면 되지 않냐고 생각할 수도 있을테지만 그것이 아니다.

여기 데이터에 숫자만 들어와야한다면, 문자가 들어오면 어떻게되는지, 그 외에도 공백, 특수문자, 열거형이 아닌 데이터 등이 들어오면 어떻게 되는지를 테스트 해봐야한다.
그것들을 테스트 해봐야만 실패했을때 어떤 값이 반환되고, 예외처리가 제대로 이루어지고 있는지를 테스트할 수 있기때문이다.

수동적인 테스트로는 이러한 부분들을 모두 체크하기에는 어려움이 있다.
그렇기때문에 테스트 코드를 꼼꼼히 작성해두면 개발의 속도를 높이는데 크게 도움이 될 것 같다는 생각을 하였다.