본문 바로가기
IT/QA

실라버스 01. 테스팅이란 무엇이며 왜 필요한가?

by Cyber_ 2025. 8. 12.

1. 테스팅이란 무엇인가?

  • 결함을 식별하고 소프트웨어 산출물의 품질을 평가하는 일련의 활동
  • 요구사항 충족을 확인하는 verification뿐만 아니라 사용자 또는 기타 이해관계자가 필요한 바를 만족하는지 확인하는 validation을 포함합니다.
  • 동적테스트는 다양한 테스트 기법과 테스트 접근을 필요로 합니다.
  • 정적테스팅은 리뷰와 정적 분석을 포함합니다.
  • 계획-관리-추정-모니터링-제어가 필요합니다.

2. 테스팅 목적

  • 요구사항, 사용자 스토리, 설계, 소스 코드 등 작업 산출물 평가
  • 장애 유발 및 결함 식별
  • 테스트 대상에 대해 요구된 커버리지 보장
  • 소프트웨어 품질 부족으로 인한 리스크 수준의 완화
  • 정의된 요구사항의 충족 여부를 확인하는 verification
  • 테스트 대상의 계약, 법률, 규제 요구사항 준수 여부를 확인하는 verification
  • 이해관계자가 정보에 입각한 결정을 내리는데 필요한 정보 제공
  • 테스트 대상의 품질에 대한 자심감 획득
  • 테스트 대상의 완성 여부와 이해관계자의 기대 충족 여부를 확인하는 validation

3. 테스팅과 디버깅

  • 테스팅과 디버깅은 다른 활동입니다.
  • 테스팅: 소프트웨어 결함으로 인한 장애를 유발(동적 테스팅) 테스트 대상에 있는 결함을 직접 찾아낸다(정적 테스팅)
  • 동적테스팅이 장애를 일으킬 경우 디버깅 프로세스: 장애 재현, 분석(결함 찾기), 결함 수정

이후 확인 테스팅(confirmation testing)으로 문제가 수정됐는지 확인

수정 사항이 테스트 대상의 다른 부분에 장애를 일으키지 않았는지 확인 하기 위해(regression testing)

  • 정적 테스팅이 결함을 식별한 경우 디버깅: 결함을 제거하는데 중점

장애발생이 아닌 결함을 식별한 행위이므로 장애를 재현하고 분석할 필요 없다.

장애와 결함의 차이

  • 결함(Defect, Bug): 요구사항 또는 설계 명세서와 다르게 동작하는 상태, 테스트나 검증과정에서 발견

예시: 로그인 버튼 클릭 후 로그인 완료 알럿 미노출, 1+1을 입력했는데 2가 아닌 3이 나옴

실제 운영에 투입되기 전에도 발견될 수 있고, 수정이 가능함.

  • 장애(Failure, Incident): 실제 운영 환경(Production)에서 시스템이나 서비스가 정상적으로 동작하지 못하는 상태, 운영환경에서 발생

결제 서버 장애로 결제가 전혀 처리되지 않음, 웹사이트 접속 시 500 서버 오류 발생

장애의 원인은 결함일 수 있지만, 외부 요인(네트워크 장애, 서버 다운, 트래픽 폭주 등)일 수도 있음

4. 테스팅이 왜 필요한가?

  • 테스팅은 결함을 식별하는 비용 효율적인 방법입니다. 식별된 결함은 제거할 수 있기 때문에 대상의 품질 향상에 간접적으로 기여합니다.
  • 테스팅은 소프트웨어 개발수명주기의 여러 단계에서 테스트 대상의 품질을 직접 평가할 수 있는 방법을 제공합니다.
  • 테스팅은 개발 프로젝트에서 사용자를 간접적으로 대변합니다.
  • 테스팅은 계약 또는 법적 요구사항을 충족하거나, 규제 표준 준수를 위해 필요할 수 있습니다.

5. 테스팅과 품질 보증(QA)

  • 테스팅: 제품 지향적이고, 적합한 수준의 품질 달성을 위해 지원하는 활동에 초점을 맞춘 교정 접근법(corrective approach)

품질제어의 주요 활동이며, 정형 기법(모델 확인 및 정확성의 증명), 시뮬레이션, 프로토타이핑도 품질 제어에 속합니다.

  • 품질 보증: 프로세스의 구현과 개선에 초점을 맞춘 프로세스 중심의 예방 접근법입니다. 좋은 프로세스를 올바르게 준수하면 좋은 제품이 만들어진다는 가정을 기반으로 합니다.

개발 및 테스팅 프로세스 모두에 적용되며, 프로젝트에 참여하는 모두의 책임입니다.

테스트 결과의 쓰임

  • 테스팅: 결함을 수정하는데 사용
  • 품질 보증: 개발 및 테스트 프로세스가 잘 동작하고 있는지 확인하기 위한 피드백

6. 오류, 결함, 장애, 근본 원인

  • 오류: 사람은 시간적인 압박, 작업 산출물의 복잡성, 프로세스, 인프라, 상호작용 등 다양한 이유로, 또 단순히 피로하거나 훈련이 부족해서 오류를 범할 수 있다.
  • 결함: 요구사항 명세서나 테스트 스트립트와 같은 문서, 소스 코드, 또는 빌드 파일과 같은 지원 산출물(supporting work product) 에서 나올 수 있다.

소프트웨어 개발생명주기(SDLC)초기에 만든 산출물의 결함을 발견하지 못할 경우, 이는 종종 수명주기 후반의 산출물의 결함으로 이어지는 경우가 많습니다.

  • 장애: 장애의 원인이 되는 것은 오류와 결함뿐만 아니라, 방사선이나 전자기장이 펌웨어에 문제가 생기가하는 경우 처럼 환경 조건으로 발새하는 것도 있습니다.
  • 근본 원인: 문제 발생의 근본적인 이유(예: 오류로 이어지는 상황)을 말하며, 근본 원인 분석(root cause analysis)을 통해 찾게 됩니다.

보통 장애가 발생하거나, 결함을 식별한 경우 수행합니다.

테스팅이란 무엇이며 왜 필요한가?

테스팅은 제품지향적이며, 요구사항을 충족을 확인하는 verification을 넘어서 이해관계자를 대변하는 validaition활동까지 포함하며, 프로세스의 구현과 개선에 초점을 맞춘 예방 중심의 품질 보증(QA)의 중요한 산출물을 제공합니다.
그러므로 제품의 결함, 장애를 식별하고 해소하기 위해 필요하며 그 결과는 오류와 근본원인을 찾는데 도움을 줍니다.