테스팅

- 테스팅: 응용 프로그램, 시스템의 동작, 성능, 안정성이 사용자가 요구하는 수준을 만족하는지 확인하기 위해 결함을 발견하는 매커니즘


1. 과거와 현재의 테스팅 개념

1) 과거의 테스팅 개념: 응용프로그램, 시스템의 정상 작동 여부 확인


2) 현재의 테스팅 개념

- 사용자의 기대 수준과 요구사항에 맞게 구현되고 동작하는지를 확인, 결함 발견

- 결함 데이터를 근간으로 개발 프로젝트의 리스크 정보를 정략적 수치로 의사 결정권자에게 전달

- 개발 프로젝트 초기 단계에 개발 산출물을 테스트 관점에서 리뷰, 테스트 케이스 작성 과정에서 결함을 발견

(결함 예방활동)


2. 테스팅 활동

- 테스팅은 소프트웨어를 실행하면서 테스트를 수행하는 동적 테스팅, 문서(소스 코드 포함)의 리뷰와 정적 분석도 포함


1) 테스팅 활동: 테스트 활동은 테스트를 수행하기 전과 후에도 존재

- 테스트 계획과 제어 활동

- 테스트 조건의 선택

- 테스트 케이스의 설계

- 테스트 수행: 동적 테스팅, 소프트웨어를 실행하면서 테스트 수행

- 테스트 수행 결과 점검

- 테스트 완료 및 통과 조건의 평가

- 테스트 프로세스와 테스트 대상 시스템에 대한 리포트, 마무리 또는 마감


2) 테스트의 목적

a. 일반적인 테스트의 목적

- 남아있는 결함 발견

- 명세 충족 확인

- 사용자 및 비지니스 요구 충족 확인

- 결함 예방


b. 부가적인 테스팅 목적

- 품질 수준에 대한 자신감 획득과 정보 제공

- 비즈니스 리스크를 감소시키는 정보에 근거한 조언 제공(발견된 결함 기반의 수치적 데이터 이용)

- 개발 프로세스 점검, 이슈 제기

- 논리적 설계의 구현 검증

- 시스템과 소프트웨어가 적절히 동작함을 확인


c. 관점에 따라 다른 테스팅 목적

- 개발과정: 소프트웨어의 결함을 찾아내고 수정하기 위해 가능한 많은 장애 상황을 만들어 내는 것

- 인수: 주요한 목적은 예상된 대로 시스템이 동작하는지 확인, 요구사항에 맞는지 확신을 얻는 과정

- 품질평가: 특정 시간에 시스템을 출시(Release)하는 것의 리스크(Risk)를 개발 프로젝트 관련자(Stakeholder)에게 전달

- 유지보수: 개발과정에서 변경 작업이 일어나는 경우 새로운 결함이 유입되었는지 확인 하는 리그레션(Regression Testing) 테스팅과정을 포함

리그레션 테스팅(회귀테스팅, Regression Testing)

수정으로 인해 변경되지 않은 소프트웨어 영역에 의도하지 않은 새로운 결함이 유입되지 않았는지 또는 기존에 숨어있던 결함이 노출되지 않았는지 확인하기 위해 이전에 테스트한 프로그램을 다시 테스팅

- 운영: 시스템 특성(신뢰성, 가용성 등)을 평가


3. 테스팅과 디버깅

1) 테스팅: 결함을 발견하기 위한 활동


2) 디버깅

- 결함의 원인을 밝히고 코드를 수정하는 개발 활동

- 이후, 테스터에 의해 확인 테스팅(Confirmation testing)수행: 결함이 제대로 수정되었는지 확인할 수 있는 과정, 수정 여부를 확인하기 위해 이전에 실패했던 테스트를 실행