현재 선택한 정보처리 과정

정보처리기사 필기 이론 학습

이론 목록으로 돌아가기

테스트 원리·프로세스·정적 및 동적 테스트

테스트의 기본 원리와 활동을 살펴보고 정적·동적 테스트 및 디버깅의 차이를 익힌다.

예상 읽기 3

핵심 범위

애플리케이션 테스트는 소프트웨어의 결함을 발견하고 요구사항 충족 여부를 확인하기 위한 활동이다. 시험에서는 테스트 원리, 테스트 프로세스, 정적 테스트와 동적 테스트를 구분한다.

테스트의 기본 원리

  1. 결함의 존재를 밝힌다: 테스트는 결함이 있음을 보여 줄 수 있지만 결함이 전혀 없음을 증명할 수는 없다.
  2. 완전한 테스트는 불가능하다: 모든 입력과 경로를 시험할 수 없으므로 위험과 우선순위를 고려한다.
  3. 개발 초기에 시작한다: 결함을 일찍 찾을수록 수정 비용을 줄일 수 있다.
  4. 결함은 집중된다: 소수 모듈에 많은 결함이 모이는 경향이 있다.
  5. 살충제 패러독스: 같은 테스트만 반복하면 새로운 결함을 찾는 효과가 줄어들 수 있다.
  6. 테스트는 상황에 의존한다: 시스템의 목적과 위험에 따라 방법이 달라진다.
  7. 오류 부재의 궤변: 결함이 적어도 사용자 요구를 만족하지 못하면 좋은 소프트웨어가 아니다.

테스트 프로세스

활동핵심 내용
계획범위, 목표, 일정, 인력, 환경, 종료 기준 수립
분석·설계테스트 조건과 테스트 케이스, 기대 결과 작성
구현테스트 데이터, 절차, 스크립트, 환경 준비
실행테스트 수행, 실제 결과 기록, 기대 결과와 비교
결함 관리발견 결함을 기록·분류하고 수정 상태 추적
완료결과, 미해결 결함, 잔여 위험, 산출물 정리

테스트 케이스에는 식별자, 목적, 사전 조건, 입력값, 수행 절차, 기대 결과가 포함될 수 있다.

테스트 오라클은 승인된 요구사항과 규칙에 기반해야 한다. 요구사항끼리 충돌하면 권한 있는 책임자와 기준을 확정하고 변경 이력과 추적 관계를 갱신한다.

실제 결과가 다르더라도 테스트 환경·데이터·스크립트·기대 결과가 원인일 수 있다. 제품 결함 판정 전에 정의된 사전 조건이 실제로 충족되었는지 확인한다.

정적 테스트와 동적 테스트

구분정적 테스트동적 테스트
실행 여부프로그램을 실행하지 않음프로그램을 실행함
대상요구사항, 설계서, 코드 등실행 가능한 소프트웨어
대표 방법리뷰, 인스펙션, 정적 분석단위·통합·시스템·인수 테스트

리뷰 유형

  • 동료 검토: 동료가 산출물을 검토한다.
  • 워크스루: 작성자가 내용을 설명하며 의견을 받는다.
  • 인스펙션: 역할과 절차를 정해 공식적으로 결함을 찾는다.

정적 분석 도구는 코드를 실행하지 않고 코딩 규칙 위반, 잠재 오류, 복잡도 등을 분석한다.

테스트와 디버깅

  • 테스트는 실패를 발견하고 기록하는 활동이다.
  • 디버깅은 실패의 원인을 찾아 결함을 수정하는 개발 활동이다.

테스트가 실패 원인을 자동으로 수정하는 것은 아니다.

품질 보증은 적절한 개발·검토·테스트 프로세스를 만들고 개선하여 결함을 예방하는 데 초점을 둔다. 테스트와 디버깅은 품질 보증 전체와 같은 뜻이 아니다.