본문 바로가기

개발(합니다)/방법론

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 void testGetBalance() {...}


3. 테스트 대상 메소드의 이름 뒤에 추가적인 정보를 기재

테스트 대상 코드 : public void withdraw(int money) {...}

테스트 코드 : @Test public void testWithdraw_마이너스통장인출() {...}

 @Test public void testWithdraw_잔고가0원일때(){...}


4. 테스트 시나리오에 집중

테스트 대상 코드 : 특정한 메소드를 대상으로 하기보다는 테스트 시나리오가 대상이 된다.

테스트 코드 : @Test public void VIP_고객이_인출할때_수수료계산() {...}

 @Test public void 일반고객이_인출할때_수수료계산() {...}


5. 테스트 케이스 작성 접근 방법

- 시나리오 접근 방법

1. 해피 데이 시나리오

정상적인 흐름일 때 동장 해야 하는 결과값을 선정해놓는 방식

2. 블루 데이 시나리오

발생 할 수 있는 예외나 에러 상황에 대한 결과값을 적는 방식

3. 삼각측량법

결과 값을 비교해 보는 방식 : a*b = c인지 확인

4. 에지 케이스

경계조건을 찾는 방식 : 양수, 음수, 0 경계 확인


- 다음과 같은 질문을 해보길 권고

1. 결과가 옳은가?

2. 모든 경계조건이 옳은가?

3. 역관계를 확인 할 수 있는가?

4. 다른 수단을 사용해서 결과를 교차확인 할 수 있는가?

5. 에러 조건을 강제로 만들어 낼 수 있는가?

6. 성능이 한도 내에 있는가?


6. TDD의 한계

- 동시성 문제

- 접근 제한자 : public만 접근 가능

- GUI : view에 관해서 접근이 회의적

- 의존성 모듈 테스트 : A를 테스트 할 때 접근이 어려운 B는 어떻게 할 것인가.


한계는 다음 화에서 해결방법을 작성합니다.

반응형