Download presentation
Presentation is loading. Please wait.
1
TDD Junit TDD & Spring Framework 참고자료
스프링 오픈 프레임워크 스터디 #6 자바카페 12기 스프링 2팀 김기배 TDD Junit TDD & Spring Framework 참고자료
2
TDD (TEST DRIVEN DEVELOPMENT)
3
TDD (TEST DRIVEN DEVELOPMENT)
TFD (Test First Development(Design)) 1. 테스트 작성 Test First Design에서는 테스트의 작성을 시작으로 개발이 시작된다. 테스트 작성시 개발자는 요구사항 및 특징들을 정확이 파악하고 있어야 한다. 요구사항과 예외발생 조건 등의 내용을 담은 Use Cases 등을 이용하여 테스트 코드를 작성 할 수 있다. 2. 테스트 실행 테스트 코드를 테스트 한다. 테스트 할 대상코드가 없으므로 모든 테스트는 ‘실패’ 하여야 하며, 그렇지 않은 경우에는 테스트 코드의 작성에 문제가 있는 것이므로 수정한다. 3. 코드 작성 및 테스트 실행 코드 작성시에는 작성한 테스트 코드를 만족시키는 최소한의 코드만을 작성하도록 한다. 그 이상의 어떤 ‘무엇인가’를 미리 짐작하여 그 ‘무엇인가’를 수행할 수 있는 코드가 되지 않도록 한다.
4
TDD (TEST DRIVEN DEVELOPMENT)
Refactoring 정의 S/W Engineering 에서의 Refactoring이란 소스코드의 외부동작은 그대로 유지하면서 내부의 구조를 변경하는 행위를 말한다. 버그를 수정한다거나 새로운 기능의 추가가 아니지만, 코드의 이해도를 높이고, 구조 및 디자인을 변경하며 불필요한 코드들의 삭제를 의미한다. 관리 및 확장 측면에서 볼 때 아주 유용한 기술이다. Refactoring & (Automated) Testing 테스트 코드는 Refactoring후의 코드가 정상 작동하는지의 여부를 확인 시켜 준다. 테스트 하는 과정이 자동화 되어 있어야 좋다 (필수라고 봐야 함). X2 – x – (refactoring)--> (x+1)(x-2)
5
TDD (TEST DRIVEN DEVELOPMENT)
TDD = TFD + Refactoring 4. 소스코드 리팩터링 오직 테스트 코드를 ‘통과’하기 위해서 작성했던 소스코드를 리팩터링을 통해 구조 변경, 불필요한 코드 제거 등의 작업을 한다. 이전 프로세스에서 작성했던 테스트 코드를 이용해서 리팩터링 작업 이후에 소스코드의 외부동작에 변함이 없음을 테스트 한다. 장점 개발자가 생각해야 할 부분의 범위가 좁아진다. 작은 크기의 단위로 개발이 진행되어서 관리 및 테스트, 버그 수정 등의 측면에서 볼 때 매우 효율적이다. 디버깅 코드의 사용이 줄어들게 된다. CVS와 함께 사용시에는 (대부분의 경우가 되겠지만) 디버깅을 할 일이 없을 정도! (예상치 못한 문제 발생시 모든 테스트를 통과했던 최종 버전으로 돌리면 그만이다..) 코딩 시간이 줄어든다. TDD시에는 추가적인 테스트 코드 작성으로 코딩량이 많아 지지만, 한편으로는 이러한 테스트코드로 인해 불필요하거나 잘못 짜여지는 코드의 양이 상대적으로 줄어 들게 되므로 개발 시간이 단축된다.
6
Junit (xUnit) JUnit JAVA 프로그래밍 언어를 위한 단위 테스팅 프레임워크
public class HelloWorld extends TestCase { public void testMultiplication() // Testing if 3*2=6: assertEquals ("Multiplication", 6, 3*2); } public class HelloWorld { @Test public void testMultiplication() // Testing if 3*2=6: assertEquals ("Multiplication", 6, 3*2); }
7
Junit (xUnit) Junit (Cont) Test Driven Development와의 밀접한 관계가 있다.
8
TDD & Spring Framework Spring Framework POJO Beans AOP
Aspect의 사용으로 인하여 실제 로직이 수행되는 메소드는 대부분 로직 수행을 위한 코드로만 이루어지게 된다. 로그 작성, 예외 처리등을 Aspect를 이용하여 일괄적으로 처리 할 수 있으므로, 코드 테스트 이후에 로그 작성, 예외 처리를 위해 필요한 코딩의 양이 줄어들게 된다.
9
참고자료 Introduction to Test Driven Design (TDD) Refactoring Home Page
Refactoring Home Page Testdriven.com Junit.org
Similar presentations