[정보처리기사][애플리케이션 테스트 관리] 애플리케이션 테스트

컴퓨터/정보처리기사

728x90
반응형

애플리케이션 테스트

애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차

 

1. 애플리케이션 테스트의 기본 원리

  • 완벽한 테스트 불가능 
    • 테스트를 통해 결함을 줄일 수 있지만 결함이 없다고 증명할 수 없다.
  • 파레토 법칙
    • 애플리케이션의 20%의 코드에서 전체 결함의 80%가 발견된다는 법칙
  • 살충제 패러독스
    • 동일한 테스트 케이스를 반복하면 더 이상 결함이 발견되지 않는 현상
  • 테스팅은 정황에 의존 
    • 소프트웨어 특징, 테스트의 환경, 테스터의 역량등에 따라 결과가 달라질 수 있다.
    • 즉, 정황에 따라 테스트를 다르게 수행해야 된다.
  • 오류-부재의 궤변
    • 결함이 없는 소프트웨어여도 사용자의 요구사항 만족도를 충족하지 못한다면 품질이 좋다고 할 수 없다.
  • 테스트와 위험은 반비례
    • 테스트를 많이 하면 할수록 미래의 발생할 위험을 줄일 수 있다.
  • 테스트의 점진적 확대
    • 테스트는 작은 부분에서 시작하여 점점 확대하며 진행해야 한다.
  • 테스트의 별도 팀 수행
    • 테스트는 개발자와 관계없는 별도의 팀에서 수행해야 한다.

2. 애플리케이션 테스트의 분류

2.1 프로그램 실행 여부에 따른 뷴류

  • 정적 테스트
    • 명세서나 소스 코드를 대상으로 하는 테스트
    • 워크스루, 인스펙션, 코드검사등
  • 동적 테스트
    • 프로그램을 실행하여 오류를 찾는 테스트
    • 소프트웨어 개발의 모든 단계에서 테스트를 수행한다.
    • 블랙박스 테스트, 화이트박스 테스트

2.1.1 화이트박스 테스트 - White Box Test

원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법

2.1.1.1 종류

  • 기초 경로 검사 (Base Path Testing)
    • 대표적인 화이트박스 테스트 기법
    • 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
  • 제어 구조 검사 (Control Structure Testing)
    • 3가지의 검사 방법으로 구성됨
      • 조건 검사 : 프로그램 모듈 내에 있는 논리적 조건을 설계
      • 루프 검사 : 프로그램의 반복 구조에 초점을 맞춰  설계
      • 데이터 흐름 검사 : 프로그램의 변수 정의와 변수 사용 위치에 초점을 맞춰 설계

2.1.1.2 검증 기준

  • 문장 검증 기준
    • 소스코드의 모든 구문이 한번 이상 수행하도록 설계되었는가
  • 분기 검증 기준
    • 소스코드의 모든 조건문의 전체조건식의 결과가 True와 False를 한번이상 수행하도록 설계되었는가
  • 조건 검증 기준
    • 소스코드의 모든 조건문의 개별조건식의 결과가 True와 False를 한번이상 수행하도록 설계되었는가
  • 분기/조건 기준
    • 분기 및 조건 검증 기준을 모두 만족하는 설계

2.1.2 블랙박스 테스트 - Black Box Test

각 기능이 완전히 작동되는 것을 입증하는 테스트 (기능 테스트라고도 한다.)

2.1.2.1 종류

  • 동치 분할 검사 / 동치 클래스 분해 (Equivalence Partitioning Testing)
    • 동등 분할 기법이라고도 한다.
    • 프로그램의 입력조건에 타당한 입력자료와 타당하지 않은 입력자료의 개수를 균등하게 하여 테스트
  • 경계값 분석 (Boundary Value Analysis)
    • 입력 조건이 경계값에서 오류가 발생될 확률이 높다는 점을 이용한 테스트 케이스 기법
    • 경계값을 테스트
  • 원인-효과 그래프 검사 (Cause-Effect Graphing Testing)
    • 입력과 출력 간의 영향도를 체계적으로 분석한 다음 알맞은 테스트 케이스를 선정하는 기법
  • 오류 예측 검사 (Error Guessing)
    • 과거의 경험이나 확인자의 감각으로 테스트하는 기법
  • 비교 검사 (Comparison Testing)
    • 여러 버전의 프로그램에 동일한 테스트 자료를 제공해 결과를 비교하는 테스트 기법

2.2 테스트 기반에 따른 분류

  • 명세 기반 테스트
    • 사용자의 요구사항에 대한 명세를 기반으로 테스트 케이스를 구현하고 확인하는 테스트
    • 동등 분할, 경계 값 분석 등
  • 구조 기반 테스트
    • 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트
    • 구문 기반, 결정 기반, 조건 기반 등
  • 경험 기반 테스트
    • 유사 소프트웨어 또는 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트
    • 요구사항 명세가 불충분하거나, 테스트 시간에 제약이 있는 경우 주로 사용
    • 에러 추정, 체크 리스트, 탐색적 테스팅등

2.3 시각에 따른 분류

  • 검증(Verification) 테스트
    • 개발자의 시각에서 제품의 생산 과정을 테스트
    • 명세서대로 완성이 되었는가를 확인하는 테스트
  • 확인(Validation) 테스트
    • 사용자의 시각에서 생산된 제품의 결과를 테스트
    • 요구대로 제품이 완성되었는지, 정상적으로 동작하는가를 확인하는 테스트

2.4 목적에 따른 분류

  • 회복(Recovery) 테스트
    • 시스템에 결함이 발생 시 올바르게 복구되는지 확인하는 테스트
  • 안전(Security) 테스트
    • 불법적인 침입으로부터 보호할 수 있는지 확인하는 테스트
  • 강도(Stress) 테스트
    • 과부하 동작시에 소프트웨어가 정상적으로 동작하는지 확인하는 테스트
  • 성능(Performance) 테스트
    • 성능과 효율성을 진단하기 위해 응답시간, 처리량등을 확인하는 테스트
  • 구조(Structure) 테스트
    • 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
  • 회귀(Regression) 테스트
    • 소프트웨어의 변경 또는 수정 부분에 결함이 없음을 확인하는 테스트
  • 병행(Parallel) 테스트
    • 변경된 소프트웨어와 기존 소프트웨어와 동일한 입력 시 결과를 비교하는 테스트

개발 단계에 따른 애플리케이션 테스트

1. 소프트웨어 V-모델 

애플리케이션 테스트와 소프트웨어 개발 단계를 연결하여 표현한 것을 V-모델이라고 한다.

2. 단위 테스트 - Unit Test

모듈이나 컴포넌트에 초점을 맞춰 테스트하는 것

 

3. 통합 테스트 - Integration Test

단위 테스트 이후 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트

3.1 종류

  • 비점진적 통합 방식
    • 빅뱅 통합 테스트 방식
  • 점진적 통합 방식
    • 하향식 통합 테스트 ( Top Down Integration Test )
      • 상위 모듈에서 하위 모듈 발향으로 통합하면서 테스트 (스텁 필요)
    • 상향식 통합 테스트 ( Bottom Up Integration Test )
      • 하위 모듈에서 상위 모듈 방향으로 통합하는 테스트 (드라이버 필요)
    • 혼합식 통합 테스트
      • 하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합을 하는 방식
      • 샌드위치식 통합 테스트라고도 합니다.

4. 시스템 테스트 - System Test

개발된 소프트웨어가 컴퓨터에서 완벽하게 수행되는가를 점검하는 테스트

5. 인수 테스트 - Acceptance Test

사용자의 요구사항을 충족하는지 중점을 둔 테스트

  • 종류
    • 사용자 인수 테스트 - 사용자가 시스템의 적절성을 확인
    • 운영상의 인수 테스트 - 시스템 관리자가 인수 시 수행하는 테스트
    • 계약 인수 테스트 - 계약상의 인수/검수 조건 준수 확인 테스트
    • 규정 인수 테스트 - 소프트웨어가 법규, 규정 등에 맞게 개발되었는지 확인 테스트
    • 알파 테스트 - 통제된 환경에서 확인 테스트
    • 베타 테스트 - 선정된 사용자가 여려 명의 사용자 앞에서 행하는 테스트

테스트 케이스 / 테스트 시나리오 /  테스트 오라클

  • 테스트 케이스 - 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 테스트 항목 명세서
  • 테스트 시나리오 - 테스트 케이스를 묶은 집합
  • 테스트 오라클 - 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법

1. 테스트 오라클의 특징

  • 제한된 검증 - 모든 테스트 케이스에 테스트 오라클을 적용할 수 없다.
  • 수학적 기법 - 테스트 오라클의 값을 수학적 기법을 이용하여 구할 수 있다.
  • 자동화 기능 - 자동화할 수 있다.

2. 테스트 오라클의 종류

  • 참 오라클 - 모든 테스트 케이스 입력값에 대해 기대하는 결과를 제공하는 오라클
  • 샘플링 오라클 - 몇몇 테스트 케이스에 대해서만 결과를 제공하는 오라클
  • 추정 오라클 - 몇몇 테스트 케이스에서만 결과를 제공하고 나머지는 추정하는 오라클
  • 일관성 검사 오라클 - 애플리케이션 변경이 있을 때 테스트 케이스의 수행이 전후 결과 값이 동일한지 확인하는 오라클
728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :