본문 바로가기

Tips

TDD/단위테스트 비교 분석 및 테스트 코드의 중요성

반응형

 

테스트 코드를 소개하기 앞서,

다들 이야기하는 TDD(테스트 주도하는 개발)에 대해 짚고 넘어가겠습니다.

 


⌗ TDD : 테스트 주도 개발

 

테스트 코드를 먼저 작성하는 것부터 시작합니다.

  1. 먼저, 항상 실패하는 테스트를 먼저 작성하고
  2. 테스트가 통과하는 프로덕션 코드를 작성하고
  3. 테스트가 통과하면 프로덕션 코드를 리팩토링합니다.

 

반면, 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것입니다.

 


⌗ 단위 테스트 코드

 

  • TDD와 달리 테스트 코드를 꼭 먼저 작성해야하는 것도 아니고, 리팩토링도 포함되지 않습니다.
  • 순수하게 테스트 코드만 작성하는 것입니다.

 

감이 오나요?

그러니 가능하다면 단위 테스트 코드를 먼저 배운 뒤 TDD를 배워보길 추천드립니다. 

 


✦ TDD 관련 추천 서적

 

http://www.yes24.com/Product/Goods/3908398

 

테스트 주도 개발

어려움을 겪고 있는 국내의 수많은 Java 개발자들에게 도움을 주기 위해 집필되었다. 쉽고 체계적인 설명과 다양한 예제를 통해 테스트 주도 개발 방법론을 활용하고 있는 국내 개발자들의 문제를 공유하고 그 해결책을 모색해 볼 수 있을 것이다. 국내 최초 테스트 주도 개발(TDD) 집필서로, TDD의 기초부터 활용까지 다룬다. 테스트 주도 개발법을 실제 프로젝...

www.yes24.com

http://www.yes24.com/Product/Goods/12246033

 

테스트 주도 개발

Test-Driven Development: By Example아름다운 코드와 즐거운 개발을 위한 테스트 주도 개발테스트 주도 개발은 학계와 업계에서 많은 주목을 받아온 프로그래밍 방법으로, 여러 연구 논문과 실례를 통해 개발자의 생산성과 역량을 증폭시켜 준다는 사실이 받아들여지고 있다. 테스트 주도 개발은 테스트가 개발을 주도하는 방법이다. 테...

www.yes24.com


 

그렇다면, 여기서 의문이 듭니다.

개발자들이 말하는 테스트 코드를 작성함으로써 얻는 이득은 무엇일까요?

 

⌗ 테스트 코드의 중요성

 

  • 개발 단계 초기의 문제 발견을 도와줍니다.
  • 개발자가 나중에 코드를 리팩토링 하거나, 기존 기능을 업그레이드 하는 과정에 올바르게 작동하는 지 확인할 수 있습니다.
  • 따라서, 기능의 불확실성을 감소할 수 있습니다.
  • 시스템에 대한 실제 문서를 제공합니다. 즉, 단위 테스트 자체가 문서로 사용할 수 있습니다.

 

사실, 저는 테스트 코드를 아직 잘 다루지 못하는 주니어 단계의 개발자기 때문에 마음에 화-악 와닿진 않았습니다.

그래서 다른 사람이 실제로 테스트 코드를 사용하면서 느낀 부분을 공유하겠습니다.

 

테스트 코드 적용 후 느낀 첫번째 : 빠른 피드백 및 자동 검증

 

기존의 개발 방식은 다음과 같았다고 합니다.

 

  1. 코드 작성
  2. 서버(Tomcat, 내장 서버) 실행
  3. API 테스트 도구(Postman)로 HTTP 요청 및 응답을 눈으로 확인
  4. 결과가 다르면 서버 중지 후 코드 수정

여기서 매번 코드를 수정할때마다 2번~4번을 반복했다고 합니다. (이건 저도 똑같네요ㅎㅎ)

따라서, 매번 서버를 내렸다 올리면서 1분 이상 시간이 소요되고, 눈으로 수동 검증을 하게 됩니다.

 

그러나 테스트 코드는 이런 수동 검증을 자동 검증이 가능하게 해줍니다.

 

테스트 코드 적용 후 느낀 두번째 : 기능의 안정성

 

새로운 기능이 추가되면 기존의 기능에 문제가 생긴것을 발견할 수 있습니다. 

사실 이러한 문제는 제가 하고 있는 서비스에서도 종종 발생하는 일입니다.

 

그러나, 하나의 기능으로 전수 테스트를 하기에는 비용이 많이 드는 일입니다.

따라서 테스트 코드는 기존 기능이 잘 작동되는 것을 보장해주는 것입니다.


저는 개발하면서 기술도 중요하지만 이와 더불어 중요한 덕목이 안정성이라고 생각합니다.

어떠한 서비스를 하던간에 안전하지 않다면 사용하기엔 그만한 위험 부담이 따릅니다.

그렇기 때문에 기업에서도 테스트 코드의 중요성이 강조되는 거라 봅니다.

 

테스트 코드 작성을 도와주는 프레임워크들이 있는데,

가장 대중적인 것으로는 xUnit 이 있습니다.

 

xUnit : 개발환경(x)에 따라 Unit 테스트를 도와주는 도구

  • JUnit : java 환경의 테스트 프레임워크
  • DBUnit : DB 환경의 테스트 프레임워크
  • CppUnit : C++환경의 테스트 프레임워크
  • NUnit : .net환경의 테스트 프레임워크

 

이 중 저는 자바 개발자로 업을 하고 있어 JUnit을 사용하겠습니다.

JUnit은 계속해서 개선 중이며, 최근에는 버전 5까지 출시했습니다.

 

✦ 참고: https://junit.org/junit5/

 

JUnit 5

About JUnit 5 is the next generation of JUnit. The goal is to create an up-to-date foundation for developer-side testing on the JVM. This includes focusing on Java 8 and above, as well as enabling many different styles of testing. JUnit 5 is the result of

junit.org


 

반응형

❥ CHATI Github