본문 바로가기

반응형

개발(합니다)/방법론

(19)
TDD 학습 및 실습 정리8(다양한시각) TDD 학습 및 실습 정리7에 이어 정리합니다. TDD가 주는 설계상의 이점- TDD 자체가 단위의 작은 설계를 만들어냅니다.- 입력, 출력, 모듈이 동작하기 위해 필요한 요소를 파악되며 사전에 테스트됩니다.- 강형 마이크로 디자인이라고도 합니다.- 의존성이 적은 자기 완결성이 높은 모듈이 됩니다. TDD와 객체 지향 프로그래밍(OOP)OOP가 강조되는 이유는 안전한 부품과 재사용성OOP의 기본 원칙 -> 모듈은 높은 응집도를 유지하고 낲은 결합도를 갖도록 만들어야 합니다. 의존 관계가 많은 코드는 테스트 코드 자체를 만들기 어렵게합니다.기능 위주로 테스트를 먼저 작성하다보면 해당 클래스에 필요한 기능인이 아닌지를 바로 알 수 있습니다. 유연한 코드변화에 쉽게 적응할 수 있는 코드지나치게 다양한 선택지가..
TDD 학습 및 실습 정리7(TDD작성패턴) TDD 학습 및 실습 정리6에 이어 정리합니다. 상황별 테스트 생성자 테스트굳이 테스트 케이스를 작성하지 않습니다.초기 값을 가져야 하는 생성자에 따라 생성하여 테스트를 작성합니다.DTO 스타일의 객체 테스트단순 setter/getter로 이루어진 DTO는 굳이 테스트 하지 않습니다.특정 목적을 가진 불변 객체의 경우에는 getter나 is로 테스트를 작성합니다. 닭과 달걀 메소드 테스트메소드가 서로 맞물려 있는 경우로직 메소드(add, remove, set 계열 메소드)와 상태 확인 메소드(get, show, is 계열 메소드)가 짝일 경우 public class Test{ @Test public void add() throws Exception{ User user = new User(); user.a..
TDD 학습 및 실습 정리6(Unitils) TDD 학습 및 실습 정리5에 이어 정리합니다. 실습보다는 어떤 내용이 있는지 확인합니다. Unitils란?단위 테스트를 좀 더 쉽게 만들고 유연하게 사용 할 수 있는 지원 라이브러입니다.다운 잘 클릭해야합니다. Unitils의 기능들 리플렉션 단정문객체 동치성 비교동일성 : 같은 객체인지를 판단동치성 : 객체가 표현하는 상태가 일치하는지를 판단 assertReflectionEquals(예상 객체, 실제 객체, ReflectionComparatorMode); ReflectionComparatorMode 설명 LENIENT_ORDER 컬렉션이나 배열을 비교할 때 순서는 무시합니다. IGNORE_DEFAULTS 예상 객체의 필드 중 타입 기본 값을 갖는 필드에 대해서는 비교를 하지 않습니다. LENIENT_..
TDD 학습 및 실습 정리5(DbUnits) TDD 학습 및 실습 정리4에 이어 정리합니다. 실습보다는 어떤 내용이 있는지 확인합니다. DbUnit란?테스트 프레임워크보다는 테스트 지원 라이브러리에 가깝습니다. DB와 DBMSDB는 다루기 쉽도록 만들어 놓은 논리적 구조의 데이터입니다.DBMS는 DB를 관리하는 시스템입니다. 우리가 쓰고 있는 postgresql, mysql은 DBMS이지요.현업에서는 DB라고 부르기 때문에 딱히 구분하지 않습니다. 데이터셋데이터베이스의 테이블과 같은 형태를 xml이나 csv파일로 비연결지향하는 형태입니다.데이터 베이스는 연결 지향입니다. DbUnit 데이터셋의 종류FlatXmlDataSet- 테이블 이름을 xml, tag 구성요소로 적습니다.- 컬럼 이름은 속성으로 적습니다.- null 값을 넣을 컬럼은 작성하지 ..
TDD 학습 및 실습 정리4(한계극복하기) TDD 학습 및 정리3에 이어 정리합니다. Mock 객체란 - 하나의 예시로 자동차 설계 시 실 재료를 사용하면 비용이 많이듭니다.나무를 대신해서 설계 뜬 자동차 모형을 Mock이라고 합니다.- 제품의 외양을 흉내 낸 모조품 Mock 객체를 사용 해야 하는 시기1. 테스트 작성을 위한 환경 구축- 환경 구축을 위한 작업 시간이 많이 필요 한 경우에 Mock객체를 사용합니다.- 특정 모듈을 아직 갖고 있지 않아서 테스트를 하지 못할 경우입니다.- 타 부서와 협의나 정책이 필요한 경우에도 필요합니다.2. 테스트가 특정 경우나 순간에 의존적 일 경우- 예를 들어 네트워크 연결의 접속 시간 제한을 구현하는 경우접속 시도 실패 후 5초까지 1초마다 재접속 시도 하고 이후엔 에러 메세지를 만들 때- 파일 쓰기 시 ..
TDD 학습 및 실습 정리3(메소드작성법과한계) TDD 학습 및 정리3에 이어 정리합니다. 1. Test 폴더 분리 방법properties - source - add Folder 생성 된 test 폴더를 확인 후 Allow output folders for source folders 클릭하여 build 폴더를 따로 분리합니다. build 되는 class 파일을 main과 분리하기 위해 Edit 클릭 Browse를 선택 bin 아래에 test 폴더를 만들고 apply and close를 클릭하면 적용됩니다. 폴더가 따로 분리 된 것을 확인하고 분리 되지 않으면 project clean을 해봅니다. 2. 테스트 대상 메소드와 이름을 1:1로 일치테스트 대상 코드 : public int getBalance() {...}테스트 코드 : @Test public..
TDD 학습 및 실습 정리2(JUnit에 대하여) TDD 학습 및 실습 정리1에 이어 정리합니다. JUnit의 기본적인 기능 3가지 - 테스트 결과가 예상과 강튼지를 판별해주는 단정문(assertions) - 여러 테스트에서 공용으로 사용 할 수 있는 테스트 픽스처(test fixture) - 테스트 작업을 수행할 수 있게 해주는 테스트 러너(test runner) JUnit을 비롯하여 단위 테스트를 잘 작성하려면 테스트 픽스처를 알아야합니다.테스트 픽스처란테스트를 반복적으로 수행 할 수 있게 도와주고 매번 동일한 결괄르 얻을 수 있는 '기반이 되는 상태나 환경'일관 된 테스트 실행 환경'테스트 컨텍스트'라고 부르기도 합니다.테스트의 작업이나 결과로 만들어진 대상을 통칭합니다. 대표적으로 setUp() 같은 메소드는 테스트 픽스처를 만들고, 정리하는 수..
TDD 학습 및 실습 정리1(TDD의 기본사용법) 테스트 주도 개발 TDD 실천법과 도구 책을 참고했습니다.바로 얍! 하고 하는 방법보다 테스트 주도 개발의 의의와 순서를 음미하고 싶어서 정리했습니다.참고 TDD란1. TDD를 주도한 켄트 벡트벡이 말하길 "프로그램을 작성하기 전에 테스트를 먼저 작성할 것"이라는 의미는 "업무 코드를 작성하기 전에 테스트 코드를 먼저 만드는 것"입니다.2. 최초에는 테스트 우선 개발(Test First Development)이었으나 테스트 주도 개발(Test Driven Development)로 불리고 있습니다.3. 어떤 테크닉이나 테스트 프레임워크를 쓰지 않아도 TDD를 할 수 있습니다. 최대한 빨리 실패하고 자주 실패를 경험하는 방식입니다.빨리 실패하면 실패 할수록 좀 더 성공에 가까워지는 묘한 개발 방식입니다.TD..

반응형