- 애플리케이션 테스트는 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차이다.
- 애플리케이션 테스트는 개발된 소프트웨어가 고객의 요구사항을 만족시키는지 확인 (Validation)하고 소프트웨어가 기능을 정확히 수행하는지 검증(Verification)한다.
- 애플리케이션 테스트를 실행하기 전에 개발한 소프트웨어의 유형을 분류하고 특성을 정리해서 중점적으로 테스트할 사항을 정리해야 한다.
- 소프트웨어 유형별 특성
소프트웨어명 제공 유형 기능 유형 사용 환경 개발 유형 중점 사항 A. xx오픈DB 구축 서비스 제공 소프트웨어 산업 특화 Web 신규 개발 기능 구현 시 사용자 요구사항의 누락 여부 B. xx통합서비스 구현 서비스 제공 소프트웨어 산업 특화 Web 기존 시스템과 신규 시스템의 데이터 손실 및 정합성 여부 C. xx오피스 상용 소프트웨어 산업 범용 C/S 신규 개발 다양한 OS환경 지원 여부 소프트웨어의 분류
- 소프트웨어(SoftWare)는 하드웨어를 동작시켜 사용자가 작업을 편리하게 수행하도록 하는 프로그램과 자료 구조 등을 총칭하는 것으로 상용 소프트웨어와 서비스 제공 소프트웨어로 구분됩니다.
- 상용 소프트웨어: 보통의 사용자들이 공통적으로 필요로 하는 기능을 제공하는 소프트웨어로, 산업의 특성에 따라 산업 범용 소프트웨어와 산업 특화 소프트웨어로 구분됩니다.
산업 범용 소프트웨어 - 시스템 소프트웨어: 하드웨어 전체를 제어하고 운영하는 소프트웨어, 운영체제 데이터 관리, 스토리지 소프트웨어 소프트웨어 공학 도구, 가상화 소프트웨어 시스템 보안 소프트웨어로 구분됩니다.
- 미들웨어: 운영체제와 해당 운영체제에 의해 실행되는 응용 프로그램 사이에서 운영체제가 제공하는 서비스 이외에 추가적인 서비스를 제공하는 소프트웨어로 분산 시스템 소프트웨어 IT자원관리, 서비스 플랫폼, 네트워크 보안 소프트웨어로 구분됩니다.
- 응용 소프트웨어: 특정 업무를 처리하기 위한 소프트웨어로 영상 처리, CG/VR, 콘텐츠 배포, 자연어 처리, 음성 처리, 기업용 소프트웨어로 구분됩니다.산업 특화 소프트웨어 특정 분야에서 요구하는 기능만을 구현한 소프트웨어로 자동차, 항공, 조선, 건설, 패션의류, 농업, 의료, 국방, 공공 분야 등을 지원하는 소프트웨어가 있습니다.
- 서비스 제공 소프트웨어: 소프트웨어를 개발하여 판매하려는 것이 아니라 특정 사용자가 필요로 하는 기능만을 구현해서 제공하는 소프트웨어입니다.
신규 개발 소프트웨어 새로운 서비스를 제공하기 위해 개발된 소프트웨어 기능 개선 소프트웨어 사용자 편의성, 응답 속도, 화면 UI(User Interface), 업무 프로세스 등 기존 서비스 기능을 개선하기 위해 개발된 소프트웨어 추가 개발 소프트웨어 업무나 산업 환경의 변화, 법이나 제도의 개정 등으로 인해 기존 시스템에 새로운 기능을 추가하기 위해 개발된 소프트웨어 시스템 통합 소프트웨어 시스템별로 서비스되던 것을 원스톱(One-Stop) 서비스로 제공하기 위해 업무 가능이나 데이터 등을 통합하여 개발한 소프트웨어
- 애플리케이션 테스트를 통해 프로그램 실행 전에 오류를 발견하여 예방할 수 있다.
- 애플리케이션 테스트는 프로그램이 사용자의 요구사항이나 기대 수준 등을 만족시키는지 반복적으로 테스트하므로 제품의 신뢰도를 향상시킨다.
- 애플리케이션의 개발 초기부터 애플리케이션 테스트를 계획하고 시작하면 단순한 오류 발견뿐만 아니라 새로운 오류의 유입도 예방할 수 있다.
- 애플리케이션 테스트를 효과적으로 수행하면 최소한의 시간과 노력으로 많은 결함을 찾을 수 있다.
- 애플리케이션 테스트는 소프트웨어의 잠재적인 결함을 줄일 수 있지만 소프트웨어에 결함이 없다고 증명할 수는 없다. 즉 완벽한 소프트웨어 테스팅은 불가능하다.
- 애플리케이션의 결함은 대부분 개발자의 특성이나 애플리케이션의 기능적 특징때문에 특정 모듈에 집중되어 있다. 애플리케이션의 20%에 해당하는 코드에서 전체 80%의 결함이 발견된다고 하여 파레토 법칙을 적용하기도 한다.
- 애플리케이션 테스트에서는 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 '살충제 패러독스(Pesticide Paradox)' 현상이 발생한다. 살충제 패러독스를 방지하기 위해서 테스트 케이스를 지속적으로 보완 및 개선해야 한다.
- 애플리케이션 테스트는 소프트웨어 특징, 테스트 환경, 테스터 역량 등 정황(Context)에 따라 테스트 결과가 달라질 수 있으므로 정황에 따라 테스트를 다르게 수행해야 한다.
- 소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없다. 이것을 오류-부재의 궤변(Absence of Errors Fallacy)이라고 한다.
- 테스트와 위험은 반비례한다. 테스트를 많이 하면 할수록 미래에 발생할 위험을 줄일 수 있다.
- 테스트는 작은 부분에서 시작하여 점점 확대하며 진행해야 한다.
- 테스트는 개발자와 관계없는 별도의 팀에서 수행해야 한다.
출처: 2024 시나공 정보처리기사 필기 기본서