Software Testing

BY Jung·2022년 1월 16일
0

Software Testing이란?

코드를 작성 후 기대하는 결과에 도달하는지 혹은 그렇지 못하는지 확인하는 절차

Build product Right vs Build Right product

Why Bother to Test?

  • 결함의 식별 및 사전 방지를 통한 시간 절약
  • 테스트 중 얻은 인사이트를 바탕으로 구조 및 품질 개선
  • 확장성을 고려한 개발이 가능

Manual Testing

사람이 직접 테스트하는 방식

  • 불안정성이 항상 존재
  • 인력소모와 비용이 크다
  • 테스트 속도가 느리다

Automation Testing

자동화 방식

  • 안정성 향상
  • 인력을 감축하고 비용이 감소한다
  • 테스트 속도가 빠르다
  • 확장성이 높다

시스템 테스트 전략 3가지

End-to-End(E2E) Tests

전체적인 Flow(ex. 브라우저 상 클릭 후 생기는 변화에 대한 검증)

Integration Tests(통합 테스트)

모듈 간의 호환성 검증(ex. 웹페이지 혹은 Postman을 통한 API 호출 시 올바르게 동작하는지 확인)

Unit Tests(단위 테스트)

독립적으로 진행되는 가장 작은 단위의 테스트(ex. 하나의 기능 또는 메소드)

  • 테스트의 복잡도는 단위 > 통합 > E2E 순으로 증가한다
  • 구글에서 제안하는 단위, 통합, E2E 테스트의 비율은 각각 7:2:1이다

단위 테스트 작성의 필요성

  • 문제를 빠르게 파악할 수 있다
  • 시간과 비용 절감
  • 리팩토링 시 안정성 확보
    (테스트 코드만 봐도 코드의 목적과 용도를 알 수 있다)
  • 코드에 대한 문서로 활용
profile
Slow and steady wins the race

0개의 댓글