Testing Strategies

최완식·2023년 6월 13일
0

Clean Coder

목록 보기
8/14
post-thumbnail

테스트 전략에 대해 알아본다.

테스트 전략

  • 단위 테스트로는 충분치 않다.
  • 프로 개발 팀이라면 훌륭한 테스트 전략이 필요하다.

QA는 오류를 찾지 못해야 한다.

  • 개발팀의 목표는 이거다.
  • 그렇다고 해서 QA와 개발자가 서로 적대적인 관계를 가져야 하는 것은 아니다.
  • 하지만 QA는 같은 팀이다.

QA의 명세 서술

  • QA는 사업부와 함께 인수테스트를 만든다.
  • 이는 곧 진정한 명세서이자 요구 사항 문서이다.
  • QA는 사업부에서 말하는 요구사항을 테스트로 번역한다.

QA의 특징 묘사

  • QA는 시스템의 실제 동작을 식별한다.
  • 탐색적 테스팅을 통해 실제 동작을 묘사한다.

탐색적 테스팅 (exploratory testing)

  • 테스터가 사전에 계획하지 않은, 자유로운 방식으로 애플리케이션을 탐색하면서 결함을 발견하는 테스팅 기법
  • 테스터의 직관, 경험, 지식, 기술, 창의성 등을 활용하여 애플리케이션의 사용자 시나리오나 기능을 시뮬레이션함
  • 즉, 막해봄.

테스트 자동화 피라미드

단위 테스트

  • 단위 테스트는 테스트 피라미드의 가장 밑바닥에 위치한다.
  • 프로그래머에 의해, 위해 프로그래밍 언어로만든 테스트다.
  • 시스템의 최하위 계층을 명세한다.
  • 단위 테스트 커버리지는 100%에 가까워야 한다.

컴포넌트 테스트

  • 함수, 객체, 모듈, 컴포넌트 등의 단위들을 테스트한다.
  • 여기서 부터는 사업부에서 요하는 명세가 직접적으로 들어가게 된다.
  • happy-path에 치중되어 있다. edge-case는 단위 테스트로 처리한다.

통합 테스트

  • 여러 컴포넌트로 이뤄진 큰 시스템에서만 의미가 있다.
  • 컴포넌트들이 제대로 상호작용하는지 테스트한다.
  • 통합 테스트는 대게 시스템 아키텍트나 수석 설계자가 만든다.
  • 성능 테스트, 처리량 테스트를 진행하기도 한다.
  • 시간이 많이 걸리기 때문에, CI때는 하지 않고, 주기적으로 테스트를 실행한다.

시스템 테스트

  • 통합한 시스템 전체를 대상으로 하는 자동화 테스트이다.
  • 궁극적 통합 테스트라고 할 수 있다.
  • 얼마나 시스템이 올바르게 연결되었고, 상호작용하는지 테스트한다.
  • 성능 테스트, 처리량 테스트를 보통 여기서 진행한다.
  • 시스템의 10%를 감당한다.

수동 탐색 테스트

  • 오류 사냥이라고 선포하고 마구잡이로 테스트하는게 이 단계다.
  • 이 단계에서는 문서가 필요없다.
  • 인간의 창의력을 통원해 망가지도록 만든다.

결론

  • TDD는 강력한 원칙이다.
  • 인수 테스트는 요구사항을 표현하는 방법이다.
  • 하지만 이는 전체 테스트 전략의 일부일 뿐이다.
  • QA 역시 한팀이며, "QA는 오류를 찾지 못해야 한다" 라는 목표를 함께 달성해야 한다.
  • 그러기 위해서는 테스트 계층을 만들어 최대한 자주 실행해야 한다.

Reference

profile
Goal, Plan, Execute.

0개의 댓글