
테스트 전략에 대해 알아본다.
테스트 전략
- 단위 테스트로는 충분치 않다.
- 프로 개발 팀이라면 훌륭한 테스트 전략이 필요하다.
QA는 오류를 찾지 못해야 한다.
- 개발팀의 목표는 이거다.
- 그렇다고 해서 QA와 개발자가 서로 적대적인 관계를 가져야 하는 것은 아니다.
- 하지만 QA는 같은 팀이다.
QA의 명세 서술
- QA는 사업부와 함께 인수테스트를 만든다.
- 이는 곧 진정한 명세서이자 요구 사항 문서이다.
- QA는 사업부에서 말하는 요구사항을 테스트로 번역한다.
QA의 특징 묘사
- QA는 시스템의 실제 동작을 식별한다.
- 탐색적 테스팅을 통해 실제 동작을 묘사한다.
탐색적 테스팅 (exploratory testing)
- 테스터가 사전에 계획하지 않은, 자유로운 방식으로 애플리케이션을 탐색하면서 결함을 발견하는 테스팅 기법
- 테스터의 직관, 경험, 지식, 기술, 창의성 등을 활용하여 애플리케이션의 사용자 시나리오나 기능을 시뮬레이션함
- 즉, 막해봄.
테스트 자동화 피라미드

단위 테스트
- 단위 테스트는 테스트 피라미드의 가장 밑바닥에 위치한다.
- 프로그래머에 의해, 위해 프로그래밍 언어로만든 테스트다.
- 시스템의 최하위 계층을 명세한다.
- 단위 테스트 커버리지는 100%에 가까워야 한다.
컴포넌트 테스트
- 함수, 객체, 모듈, 컴포넌트 등의 단위들을 테스트한다.
- 여기서 부터는 사업부에서 요하는 명세가 직접적으로 들어가게 된다.
- happy-path에 치중되어 있다. edge-case는 단위 테스트로 처리한다.
통합 테스트
- 여러 컴포넌트로 이뤄진 큰 시스템에서만 의미가 있다.
- 컴포넌트들이 제대로 상호작용하는지 테스트한다.
- 통합 테스트는 대게 시스템 아키텍트나 수석 설계자가 만든다.
- 성능 테스트, 처리량 테스트를 진행하기도 한다.
- 시간이 많이 걸리기 때문에, CI때는 하지 않고, 주기적으로 테스트를 실행한다.
시스템 테스트
- 통합한 시스템 전체를 대상으로 하는 자동화 테스트이다.
- 궁극적 통합 테스트라고 할 수 있다.
- 얼마나 시스템이 올바르게 연결되었고, 상호작용하는지 테스트한다.
- 성능 테스트, 처리량 테스트를 보통 여기서 진행한다.
- 시스템의 10%를 감당한다.
수동 탐색 테스트
- 오류 사냥이라고 선포하고 마구잡이로 테스트하는게 이 단계다.
- 이 단계에서는 문서가 필요없다.
- 인간의 창의력을 통원해 망가지도록 만든다.
결론
- TDD는 강력한 원칙이다.
- 인수 테스트는 요구사항을 표현하는 방법이다.
- 하지만 이는 전체 테스트 전략의 일부일 뿐이다.
- QA 역시 한팀이며, "QA는 오류를 찾지 못해야 한다" 라는 목표를 함께 달성해야 한다.
- 그러기 위해서는 테스트 계층을 만들어 최대한 자주 실행해야 한다.
Reference