반응형

제목: 자동화된 단위 테스팅 프레임워크(Automated Unit Testing Frameworks)

저자: Bo Simonsen, 코펜하겐 대학 컴퓨터 과학과, 덴마크

문서유형: 파워포인트 프리젠테이션 자료, 2008

 

단위 테스팅 프레임워크 세 가지(JUnit, CppUnit, UnitTest++)를 간단하게 소개한 자료



자동화된 테스트에 테스트 프레임워크를 사용하는 이유?

  • 테스트 프로그램들이 스타일 측면에서 동일함
  • 예외 체킹이나 시간 제약 체킹(실시간 애플리케이션의 경우 유용) 등에 쉽게 접근 가능
  • 프레임워크를 사용한 테스트 코드가 그렇지 않은 테스트 코드보다 대개 작음


JUnit

  • Java를 위한 단위 테스팅 프레임워크
  • CPPUnit, PHPUnit, PyUnit의 아버지로 볼 수 있음
  • Java 5에서는 Java annotation(소스 코드 메타 데이터)을 사용하여 구현됨. 더 오래된 Java 버전에서는 realization 클래스가 abstract 클래스 TestCase의 확장
  • 뒤로 호환 가능(, 과거 테스트를 재작성 할 필요가 없음)


[간단한 Junit 테스트 예]


  • JUnit이 지원하는 기타 기능으로 아래가 있다.


  • 아래는 JUnit 테스트 실행을 보여줌. 모든 테스트 케이스가 통과하면 실행 시간 및 실행된 테스트 케이스 수가 표시되고, 이 중 하나라도 실패하면 실행된 테스트 케이스 수와 실패한 테스트 케이스 수가 표시됨



CppUnit

  • JUnit의 포트(소프트웨어를 다른 컴퓨터나 운영체제를 위한 버전으로 번역한 것)
  • 아래 예처럼 간단한 상속(inheritance) 메카니즘과 몇몇 매크로에 의해 동작함


  • 또한 main 프로그램에서 테스트 클래스가 아래처럼 사용되어야 함


  • 테스트가 스위트(Suites)"로 분류될 수 있음. , X 메쏘드를 테스트하는 하나의 스위트를 생성하고, 이 스위트를 실행한다.
  • CppUnit은 간단한 테스트를 하는데도 많은 코드가 필요하다.



UnitTest++

  • UnitTest++는 매크로 주도의 테스트 프레임워크
  • C++를 위한 경량의 단위 테스팅 프레임워크로 CppUnit 보다 훨씬 간단함

[UnitTest++ 간단한 예]


  • 테스트 스위트는 테스트 주변에 "SUITE" 매크로를 사용함으로써 쉽게 구축될 수 있음


  • 체크에는 아래와 같은 것들이 있다.

유형

기본 어써션(assertion)

CHECK(false);

동등(Equality) 체크

CHECK EQUAL(10, 20);

부동 소수점 체크

CHECK CLOSE(3.14, 3.1415, 0.01);

어레이 동등 체크

CHECK ARRAY EQUAL(oned, oned, 2);

부동 소수점 어레이 체크

CHECK ARRAY CLOSE(oned, oned, 2, 0.00);

2차원 어레이 체크

CHECK ARRAY2D(twod, twod, 2, 3, 0.00);

예외 체크

CHECK THROW(throw TestException(), TestException);


  • 아래 예처럼 시간 제약(time constraints)을 테스트 할 수 있는 기능도 제공



결론

각 프레임워크에 대한 저자의 의견이 아래와 같음

  • JUnit은 모든 테스팅 프레임워크 중 가장 성숙도가 높은 것으로 보이며, 테스트가 매우 간단하게 작성될 수 있다.
  • CppUnit은 많은 코드를 요구하며, 이것이 코드를 상당히 읽기 어렵게 만들 수 있다.
  • UnitTest++는 매우 명확하고 간결한 테스트 코드를 작성할 수 있게 해 준다.


반응형

+ Recent posts