테스트 코드를 소개하기 앞서,
다들 이야기하는 TDD(테스트 주도하는 개발)에 대해 짚고 넘어가겠습니다.
⌗ TDD : 테스트 주도 개발
테스트 코드를 먼저 작성하는 것부터 시작합니다.
- 먼저, 항상 실패하는 테스트를 먼저 작성하고
- 테스트가 통과하는 프로덕션 코드를 작성하고
- 테스트가 통과하면 프로덕션 코드를 리팩토링합니다.
반면, 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것입니다.
⌗ 단위 테스트 코드
- TDD와 달리 테스트 코드를 꼭 먼저 작성해야하는 것도 아니고, 리팩토링도 포함되지 않습니다.
- 순수하게 테스트 코드만 작성하는 것입니다.
감이 오나요?
그러니 가능하다면 단위 테스트 코드를 먼저 배운 뒤 TDD를 배워보길 추천드립니다.
✦ TDD 관련 추천 서적
http://www.yes24.com/Product/Goods/3908398
http://www.yes24.com/Product/Goods/12246033
그렇다면, 여기서 의문이 듭니다.
개발자들이 말하는 테스트 코드를 작성함으로써 얻는 이득은 무엇일까요?
⌗ 테스트 코드의 중요성
- 개발 단계 초기의 문제 발견을 도와줍니다.
- 개발자가 나중에 코드를 리팩토링 하거나, 기존 기능을 업그레이드 하는 과정에 올바르게 작동하는 지 확인할 수 있습니다.
- 따라서, 기능의 불확실성을 감소할 수 있습니다.
- 시스템에 대한 실제 문서를 제공합니다. 즉, 단위 테스트 자체가 문서로 사용할 수 있습니다.
사실, 저는 테스트 코드를 아직 잘 다루지 못하는 주니어 단계의 개발자기 때문에 마음에 화-악 와닿진 않았습니다.
그래서 다른 사람이 실제로 테스트 코드를 사용하면서 느낀 부분을 공유하겠습니다.
테스트 코드 적용 후 느낀 첫번째 : 빠른 피드백 및 자동 검증
기존의 개발 방식은 다음과 같았다고 합니다.
- 코드 작성
- 서버(Tomcat, 내장 서버) 실행
- API 테스트 도구(Postman)로 HTTP 요청 및 응답을 눈으로 확인
- 결과가 다르면 서버 중지 후 코드 수정
여기서 매번 코드를 수정할때마다 2번~4번을 반복했다고 합니다. (이건 저도 똑같네요ㅎㅎ)
따라서, 매번 서버를 내렸다 올리면서 1분 이상 시간이 소요되고, 눈으로 수동 검증을 하게 됩니다.
그러나 테스트 코드는 이런 수동 검증을 자동 검증이 가능하게 해줍니다.
테스트 코드 적용 후 느낀 두번째 : 기능의 안정성
새로운 기능이 추가되면 기존의 기능에 문제가 생긴것을 발견할 수 있습니다.
사실 이러한 문제는 제가 하고 있는 서비스에서도 종종 발생하는 일입니다.
그러나, 하나의 기능으로 전수 테스트를 하기에는 비용이 많이 드는 일입니다.
따라서 테스트 코드는 기존 기능이 잘 작동되는 것을 보장해주는 것입니다.
저는 개발하면서 기술도 중요하지만 이와 더불어 중요한 덕목이 안정성이라고 생각합니다.
어떠한 서비스를 하던간에 안전하지 않다면 사용하기엔 그만한 위험 부담이 따릅니다.
그렇기 때문에 기업에서도 테스트 코드의 중요성이 강조되는 거라 봅니다.
테스트 코드 작성을 도와주는 프레임워크들이 있는데,
가장 대중적인 것으로는 xUnit 이 있습니다.
xUnit : 개발환경(x)에 따라 Unit 테스트를 도와주는 도구
- JUnit : java 환경의 테스트 프레임워크
- DBUnit : DB 환경의 테스트 프레임워크
- CppUnit : C++환경의 테스트 프레임워크
- NUnit : .net환경의 테스트 프레임워크
이 중 저는 자바 개발자로 업을 하고 있어 JUnit을 사용하겠습니다.
JUnit은 계속해서 개선 중이며, 최근에는 버전 5까지 출시했습니다.
✦ 참고: https://junit.org/junit5/
'Tips' 카테고리의 다른 글
MSA 아키텍쳐 (0) | 2020.02.17 |
---|---|
[Special Symbols English name] 특수기호 영어 명칭 (0) | 2019.11.17 |
IT/정보통신 관련된 전문 사전 사이트가 있다?! (0) | 2019.11.17 |