Test란

Minkyeong Kim·2021년 11월 16일
0

[boostcourse] Web-Backend

목록 보기
26/55

테스팅

  • 응용 프로그램 또는 시스템(구성요소 포함)의 동작과 성능, 안정성이 요구하는 수준을 만족하는지 확인하기 위해 결함을 발견하는 과정

  • 사용자의 기대 수준과 요구 사항에 맞게 구현되고 동작하는지를 확인하고 이를 통해 결함을 발견, 최종적으로 결함 데이터를 근간으로 개발 프로젝트의 리스크(Risk)에 대한 수치적인 판단 근거를 의사 결정권자(프로젝트 관리자 등)에게 전달하는 것

  • 정적 테스트: 프로그램을 개발하기 전 요구사항 등을 리뷰하는 것

  • 동적 테스트: 프로그램 개발 이후 실제 실행하며 테스트하는 것

테스트의 필요성

  • 개발, 유지보수, 운영 시에 모두 필요

1) 테스팅을 통해 릴리즈 전에 발견되지 않은 결함들이 수정된다면, 운영 환경 내에서 발생하는 리스크(risk)를 줄이는데 기여할 수 있으며 소프트웨어 품질에 도움을 줍니다.

2) 테스팅은 개발 초기의 요구사항 분석 단계부터 리뷰 및 인스펙션을 통해 정적으로 이뤄질 수 있으며 각각의 개발 단계에 대응하는 테스트 레벨(test level)에 따른 테스팅이 이뤄집니다.

3) 기존에 운영되는 소프트웨어 시스템이 유지 보수 활동으로 변경 및 단종되거나 환경이 변하는 경우, 변경된 소프트웨어에 대한 테스팅과 변경된 환경에서의 운영 테스팅이 요구됩니다.

4) 소프트웨어 테스팅은 계약상(법적) 요구조건들, 또는 산업에 특화된 표준들을 만족시키기 위해서 필요합니다.

  • 테스트를 잘 설계하면 시스템의 전반적인 리스크를 감소시키고 결함을 발견할 수 있다. 또한 발견된 결함이 소수이거나 없을 경우 소프트웨어의 품질에 대한 확신(Confidence)을 갖게 되고, 결함을 수정하면 시스템의 품질이 증가한다.

테스팅의 일반적인 원리

  1. 테스팅은 결함이 존재함을 밝히는 활동
    🍁 결함이 없다는 것은 증명 불가, 테스트 한 부분까지만 잘 동작한다고 말할 수 있고 테스트를 하지 않은 부분은 결함 유무 예측 불가

  2. 완벽한 테스팅(Exhaustive testing)은 불가능
    🍁 완벽한 테스팅 대신, 리스크 분석과 결정된 우선순위에 따라 테스팅 활동 노력을 집중시켜야 함

  3. 테스팅을 개발 초기에 시작
    🍁 소프트웨어나 시스템 개발 수명주기에서 가능한 초기에 시작되어야 하며, 설정한 테스팅 목표에 집중해야 함
    🍁 개발의 시작과 동시에 테스트를 계획하고 전략적으로 접근하는 것을 고려 + 요구사항 분석서와 설계서 등의 개발 중간 산출물을 분석하여 테스트

REFERENCES
https://www.boostcourse.org/web326/lecture/58975/?isDesc=false

0개의 댓글