Computer Science/Concept

TDD (Test Driven Development) 방법론과 테스트 기법의 종류

728x90

 

 

TDD

: Test Driven Development

- 테스트 주도 개발

- 반복 테스트를 이용한 소프트웨어 방법론

- 자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식

 

 

 

 

TDD를 이용한 개발방법

- 항상 실패하는 테스트를 먼저 작성 (RED)

- 테스트가 통과하는 프로덕션 코드를 작성 (GREEN)

- 테스트가 통과하면 프로덕션 코드를 리펙토링 (REFACTOR)

 

 

출처 : 패스트켐퍼스 The Red

 

출처 : 패스트켐퍼스 The Red

 

 

 

 

TDD의 효과

 

- 코드가 프로그래머의 손을 벗어나기 전에 빠르게 피드백을 받을 수 있다

- 작성한 코드의 불안정성을 개선하여 생산성을 높일 수 있다

- 프로그래머의 오버 코딩을 방지한다

- 테스트 코드를 작성하는 과정에서 히스토리가 남아, 과거 의사결정을 쉽게 상기할 수 있다

 

 

 

 

테스트 기법의 종류

 

1. 수동 테스트

- 인수 테스트

- 회사에서는 보통 QA라고 부르는 테스트 전문 담당자들이 UI를 활용해 기능을 검증한다

- 사람이 검증하기 때문에 사용자와 가까운 관점에서 테스트를 한다

- 기능이 동작하기 위한 전체 코드가 준비되어야 한다

- 실행 비용이 높고 결과의 변동이 크다

 

 

2. 테스트 자동화

- 사람이 직접 테스트하지 않고, 어떤 기능을 검증하는 코드를 작성하는 방식

- 실행 비용이 낮고 결과의 신뢰도가 높다

- 테스트 코드의 작성 및 관리가 프로그래머의 역량에 달려있다

 

 

3. 인수 테스트

- 주로 클라이언트가 의뢰한 소프트웨어를 최종적으로 사용할 수 있는 수준인지 점검하는 테스트

- 배치된 시스템을 대상으로 검증

- 전체 시스템 이상 여부 신뢰도가 높다

- 높은 비용 (작성비용 / 관리비용 / 실행비용)

 

 

4. 단위 테스트

- 시스템의 일부(하위 시스템)를 대상으로 기능을 검증하는 테스트

- 비용이 상대적으로 낮은 편이다

- 단위 안에서 버그가 있음을 상대적으로 자세히 알 수 있다

- 단위 테스트에서는 문제가 없더라도, 전체 시스템이 유기적으로 연결되었을 때 오류가 날 수도 있다

 

 

 

 

 

 


References

📌 Fast campus | Media

📌 INCoDOM

 

 

 

 

728x90