2015의 게시물 표시

단위 테스트와 테스트 주도 개발

1. 단위 테스트 1.1. 단위 테스트란? TDD를 하기 위해서는 단위 테스트가 필요하다. 단위 테스트란 특정 모듈이 의도된 대로 동작하는지 검증하는 것이다. 여기서 모듈은 함수를 의미하며 모든 함수에 대해 테스트 케이스를 작성하여야만 한다. 1.2. 단위 테스트 하니스(unit test harness)   단위 테스트 하니스는 단위 테스트를 위한 소프트웨어 프레임워크 이다. 구현한 제품 코드가 어떻게 동작해야하는지 표현하도록 해준다. C로 구현된 Unity, C++로 구현된 CppUTest 등이 있다. 2. 테스트 주도 개발(Test-Driven Development, TDD) 2.1. TDD란?     소프트웨어를 개발할 때 많이 실수하는 것 중 하나가 바로 테스트를 뒤로 미루는 것이다. 많은 양의 코드를 한꺼번에 작성한 뒤에 테스트를 수행하게되면 십중팔구 오류가 나기마련이다. 이러한 문제점을 개선하기 위핸 개발 방법이 바로 Test-Driven Development(TDD) 이다. TDD는 점진적으로 소프트웨어를 개발하는 기법이다. 개발 과정 중에 작은 테스트를 만들고, 그 테스트를 통과하면 다음 과정을 이어서 수행한다. 2.2. TDD의 장점     프로그램의 버그를 빠르게 발견할 수 있고, 이로인해 나중에 한꺼번에 몰려올 버그들을 예방할 수 있다. 또한 작은 단위로 테스트를 작성하면서 코드를 작성하는 것은 더 나은 설계(깔금한 코드)를 하도록 도와준다. 2.3. TDD 사이클     TDD의 핵심은 "TDD 마이크로 사이클"이라고 알려진 작은 단계들을 순차적으로 반복하는 것이다. 아래 목록은 켄트 벡(Kent Beck)의 책, 테스트 주도 개발에 설명된 TDD 사이클 단계이다. 작은 테스트를 하나 추가한다. 모든 테스트를 실행하여 새로 추가한 테스트가 실패하는 것을 눈으로 확인한다. 컴파일이 안되는 것 조차도 실패다. 실패한 테스트를 통과시키기 위해 필요한 만큼만 조금 수정한다.