출처 : 테스트주도개발 TDD 실천법과 도구
계약이란 개념은 로직의 선/후행 조건 같은 단순한 개념부터, 개발에 필요한 업무규칙, 고객의 요구사항에 이르기까지의 다양한 경우를 지칭한다. (null 크, 최소값 체크, 음수 체크)
방어 프로그래밍 - 발생 가능한 문제 상황에 대비해 점검하는 부분을 의심
계약에 의한 설계 - 신뢰에 의한 프로그램
즉 선언적인 형태로 프로그램의 상태를 구분하고, 이를 통해 작성된 로직의 간결성을 유지하면서도 작성자의 의도를 명확히 전달한다
방어 프로그래밍 테스트 케이스 예
public void testAccount(){
위 경우 Account가 음수가 들어 갈 경우 예외 상황이 발생되어 catch가 되어 조건이 참이 되게 된다. (해당 예외가 발생이 안되면 false를 발생하게 됨) 즉 Account 객체의 음수가 아닌 음수에 따른 결과를 테스트하게 되는 것임.
계약에 의한 설계에 의한 테스트 케이스는 따로 테스트 케이스를 작성하기 보다는 실제로 값이 입력되는 부분에 assert라는 키워드를 통해 특정 상황(양수 값)의 상태를 확증하는데 사용된다.
계약이란 개념은 로직의 선/후행 조건 같은 단순한 개념부터, 개발에 필요한 업무규칙, 고객의 요구사항에 이르기까지의 다양한 경우를 지칭한다. (null 크, 최소값 체크, 음수 체크)
방어 프로그래밍 - 발생 가능한 문제 상황에 대비해 점검하는 부분을 의심
계약에 의한 설계 - 신뢰에 의한 프로그램
즉 선언적인 형태로 프로그램의 상태를 구분하고, 이를 통해 작성된 로직의 간결성을 유지하면서도 작성자의 의도를 명확히 전달한다
방어 프로그래밍 테스트 케이스 예
public void testAccount(){
try {
wrongAccount = new Account(-10000); // Account 클래스는 음수가 들어갈 경우 IlleagalArgumentException 발생)
assertTrue("계좌는 반드시 양수 이여야함", false);
} catch(IlleagalArgumentException e) {
assertTrue(true);
}
}
위 경우 Account가 음수가 들어 갈 경우 예외 상황이 발생되어 catch가 되어 조건이 참이 되게 된다. (해당 예외가 발생이 안되면 false를 발생하게 됨) 즉 Account 객체의 음수가 아닌 음수에 따른 결과를 테스트하게 되는 것임.
계약에 의한 설계에 의한 테스트 케이스는 따로 테스트 케이스를 작성하기 보다는 실제로 값이 입력되는 부분에 assert라는 키워드를 통해 특정 상황(양수 값)의 상태를 확증하는데 사용된다.
'UML,OOP,Pattern, TDD' 카테고리의 다른 글
Strategy pattern VS Brigde Pattern (0) | 2011.10.09 |
---|---|
TDD Tip (0) | 2011.04.19 |
객체지향 개발 관련 팁 (0) | 2011.04.19 |
객체지향 개발 원칙 (0) | 2011.04.19 |
UML Tip (0) | 2011.04.19 |