반응형
제목: 자동화된 단위 테스팅 프레임워크(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++는 매우 명확하고 간결한 테스트 코드를 작성할 수 있게 해 준다.
반응형
'개발생명주기단계별 > 구현_단위 테스팅' 카테고리의 다른 글
영상자료 – 초보자를 위한 JUnit과 Mockito 튜토리얼 by Thippireddy (0) | 2019.07.24 |
---|---|
페이퍼요약 - 단위 테스팅 중단 기준으로서의 코드 커버리지에 대한 조사 by Smith (0) | 2019.07.22 |
배치 시스템 테스팅 기본 정리 (0) | 2019.07.15 |
문서요약 - JUnit과 CPPUnit에 의한 단위 테스팅 by Pietroszek (0) | 2019.07.08 |
페이퍼요약 - 단위 테스팅 관행에 대한 조사 by Runeson (0) | 2019.06.24 |