1. TDD 이모저모
https://github.com/MyoungSoo7/tddtest
TDD는 기능중심의 단위 테스트를 해볼수 있고, 이를 연계해 통합테스트까지 가능하다. 사실상 QA 비용이 절감되는 반면... 개발시간이 늘어나는 부분이 있다. AC2 애자일 코치 김창준님은 TDD로 개발시간은 15%증가하지만 결함은 60%감소한다고 한다. 결국,
애자일 개발방법론에 있어서 TDD를 하면 결함률을 낮추어 유지보수성이 증가한다는 장점이 있고 Matchers, Hamcrest 등 일관된 테스트 실행환경에서 테스트를 실행하며 테스트케이스의 의미를 명확하게 보고자한다.
뭐 일부러 에러도 내고 성능테스트도 하고, 경계조건과 결과를 통한 역관계를 확인하기도 하고 좋은 부분이 많다. 그러나 역시 TDD의 한계는 동시성 문제나, 접근제한자(private)문제나 GUI문제나 의존적인 모듈테스트에 난감하고 어렵다는 것이다.
2. TDD와 업무 시나리오, 개발 가능범위의 기능
TDD를 하기전에 업무시나리오를 그려보면, 여기서 사람과 하드웨어와 소프트웨어의 역할 별로 파악하면서 개발 가능 범위를 알 수 있다.
업무시나리오와 개발가능범위 검토후, 3개의 기능을 개발하기로 하고, 클래스를 3개 만든다.
첫번째로는 음료수의 이름과 가격을 가진 Drink 클래스,
두번째로는 코인을 넣었을때 잔액확인을 할 수 있는 VendingMachine클래스
세번째로는 잔돈 코인을 반환하기 위해 사용하는 CoinSet
기능별로 클래스를 만들었다. 자판기에서 구현하며 위 3가지 기능을 테스트해보았다.
잔액확인, 잔액 거스름돈 반환 그리고 추가적으로
잔돈거스름돈에만 집중할수 있는 잔돈거스름돈 모듈...
테스트는 성공
뭐 이런 단위테스트는 기본적인 것이다. 기능별로 만든 하위 폴더를 보면 결국 리팩토링을 거쳐 4개 클래스를 가지고 단위 테스트를 한다.
기능은 2개
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
JPA 간단 정리 1 (0) | 2024.09.12 |
---|---|
백엔드 TDD 비디오가게편 (0) | 2024.09.03 |
이벤터스 월간 볼트 X 커피챗 : 토스증권, 라포랩스, 스윙 (2) | 2024.09.01 |
2024년 9월을 맞이하며 항해 DEV LAB 후기 (30) | 2024.09.01 |
코테, 포폴에 밀리는 OCJP(OCAJP, OCPJP)와 프로그래머스 아이패드 이벤트 (0) | 2024.08.01 |