티스토리 뷰

728x90

테스트코드는 저에게 진짜 애증의 영역입니다.

이해하고 싶은데 파면 팔수록 뭐가 자꾸 새로운게 튀어나옵니다.

각종 용어와 관련 기술이 난무하고 샘플코드도 저마다 스타일이 다른 것 같습니다.

제가 혼란스러웠던 것들에 대해 하나씩 정리해보고자 합니다.

xUnit과 JUnit

xUnit : unit testing framework의 통칭하는 것으로, 각 언어별로 지원하는 xUnit이 있습니다.

JUnit은 그 중 한 종류로 자바용 유닛테스팅 프레임워크입니다.

ex) JAVA - JUnit, .NET - NUnit, C++ - CppUnit, ...

JUnit과 AssertJ, Mockito

JUnit은 위에서 언급한대로 JAVA의 유닛테스팅 프레임워크 입니다. 테스트 환경이라고 봐도 무방하지 않을까 싶습니다.

 

AssertJ는 JUnit에서 쓸 수 있는 라이브러리로, Assertion(테스트 검증 파트)을 간편하게 쓸 수 있게 도와줍니다.

JUnit 기본 api 중에도 assert 메소드가 있지만, AssertJ에서는 메소드 체이닝을 지원해서 더 직관적이고 읽기 쉬운 테스트코드 작성이 가능하다고 합니다.

 

Mockito의 공식문서 및 각종 소개글을 보면 Mocking Framework라는 말이 나옵니다.

JUnit도 framework인데 이 둘은 그럼 동등한, 서로 대체 가능한 관계인가?하는 의문이 들었습니다.

여러가지로 검색해본 결과, JUnit은 테스팅 프레임워크, Mockito는 모킹(Mocking) 프레임워크로 서로 혼합해서 사용하는 관계인 것 같습니다.

JUnit에서 테스트를 진행할 때 모킹하는 방법이 여러가지 있는데, Mockito를 이용하면 쉽게 모킹이 가능해집니다.

(PowerMock이라는 Mocking Framework도 있다고 합니다)

 

정리하자면, JUnit에서 JUnit이 기본제공하는 api만으로도 테스트가 가능하지만, AssertJ와 Mockito를 함께 사용하면 테스트가 더 용이해진다. 자신의 용도에 맞게 혼합해서 사용하면 된다고 보면 될 것 같습니다.

mockito는 모히또에서 컨셉을 가져왔습니다. 공식문서에도 '맛있다', '마시는 법'등 마치 음료를 소개하듯 재치있게 써놨습니다.

 

테스트 케이스(Test Case, TC)와 테스트 커버리지(Test Coverage)

테스트 케이스에 대해 찾아보면 '명세 기반 테스트의 설계 산출물로, 입력값, 실행조건, 기대결과로 구성되어 있는 테스트 항목이다' 라는 어려운 말이 말이 나옵니다.

입력값, 실행조건, 기대결과라는 키워드에만 집중하면 됩니다. 테스트를 수행하기 위해 임의의 입력값을 넣고, 타겟 코드를 실행해본 후 결과가 기대한대로 나오는지를 판단하기 위해 작성한 항목들을 뜻합니다. QA에서는 TC문서에 들어갈 내용들이고, 개발자의 테스트케이스는 테스트코드 그 자체를 의미한다고 생각합니다. (확실하진 않으니 댓글로 의견 부탁드립니다.)

 

테스트 커버리지는 특정 어플리케이션에서 테스트케이스가 얼마나 들어가있고 얼마나 테스트를 통과했는지를 나타냅니다. 즉, 테스트의 진척도 입니다. 반드시 100%여야 하진 않아도 된다고 합니다. 자세한 내용은 이 글을 참고해주세요

테스트 코드의 커버리지를 확인할 수 있는 도구가 있습다. JAVA진영에서 대표적으로 쓰이는 것들로는 Cobertuna, Jacoco, Colver가 있다고 합니다. 이러한 도구들은 코드 커버리지 (Code Coverage)로도 불립니다.

 

TDD (Test Driven Development)

본 코드 개발 후에 테스트코드를 작성하는 것이 이전까지의 방법이었다면, 요구사항에 맞게 테스트코드를 먼저 작성 후 (본코드가 없으므로 무조건 실패) 그다음에 코드를 작성해서 테스트를 통과하는 개발 방법론 입니다. 

 

정리

  • unit testing framework (xUnit)
    • JUnit
      • 기본 라이브러리
      • AssertJ
    • CPPUnit, NUnit,....
  • mocking framework
    • Mockito
    • PowerMock
  • 테스트 방법
    • 테스트 케이스
    • 테스트 커버리지
    • TDD

 

728x90
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함