본문 바로가기
  • A space that records me :)
공부/정보처리기사

애플리케이션 테스트

by yjkim_97 2021. 4. 11.

애플리케이션 테스트란?

개발된 애플리케이션이 사용자의 요구조건을 만족시키는지, 기능이 정상적으로 잘 동작하는지 테스트하는 것이다.

 

기본원리

완벽한 테스트 불가능 소프트웨어의 결함을 줄일 수는 있지만 완전히 없다고 증명할 수는 없음
파레토 법칙
(Pareto Principle)
소스코드 20%에서 전체 결함의 80%가 발견된다는 법칙
살충제 패러독스
(Pesticide Paradox)
동일한 테스트 케이스로 동일한 테스트를 반복하면 그부분에서는 더 이상 결함이 발견되지 않는 현상
테스팅은 정황 의존 소프트웨어의 특징, 테스트 환경 등 정황에 따라 테스트 결과가 달라질 수 있으므로, 정황에 따라 테스트를 다르게 해야함
오류-부재의 궤변
(Absence of Errors Fallacy)
소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 모두 만족시키지 못한다면 해당 소프트웨어는 품질이 높다고 말할 수 없다
테스트와 위험은 반비례 테스트를 많이 할수록 위험은 줄어든다
테스트의 점진적 확대 테스트는 작은 부분에서 큰 부분으로 점차 확대하면서 진행해야 한다
테스트의 별도 팀 수행 테스트는 개발자와 관계없는 별도의 팀에서 수행해야 한다.

 


테스트 분류 (3가지 방법)

  1. 프로그램 실행 여부
  2. 테스트 기반
  3. 시각
  4. 목적

 

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

  • 정적 테스트
    • 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석
    • 워크스루(개발자의 작업 내역을 전문가들이 검토), 인스펙션, 코드검사
  • 동적 테스트
    • 프로그램을 실하여 오류를 찾는 테스트
    • 소프트웨어 개발의 모든 단계에서 테스트를 수행
    • 블랙박스 테스트, 화이트박스 테스트

 

테스트 기반에 따른 분류

  • 명세 기반 테스트
    • 요구사항 명세서를 기반으로 테스트 케이스 작성
    • 동등 분할, 경계 값 분석
  • 구조 기반 테스트
    • 내부 논리 흐름 및 구조에 따라 테스트 케이스 작성
    • 구문 기반, 결정 기반, 조건 기반
  • 경험 기반 테스트
    • 테스터의 경험을 기반으로 수행하는 테스트
    • 에러 추정, 체크 리스트, 탐색적 테스팅

 

시각에 따른 분류

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

 

목적에 따른 분류

회복 테스트 (Recovery) 일부러 결함을 주어 실패하도록 한후 올바르게 복구되는지를 확인하는 테스트
안전 테스트 (Security) 시스템이 불법적인 침입으로 부터 보호되는지 확인하는 테스트
강도 테스트 (Stress) 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 정상적으로 실행되는지 확인하는 테스트
성능 테스트 (Performance) 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트
(응답시간, 처리량 등을 테스트)
구조 테스트 (Structure) 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
회귀 테스트 (Regression) 소프트웨어의 변경 및 수정된 코드에 새로운 결함이 있는지 확인하는 테스트
병행 테스트 (Parallel) 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트

블랙박스 테스트 vs 화이트박스 테스트

블랙박스 테스트 (Black Box Test)

소프트웨어의 각 기능이 모두 잘 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다.

  • 사용자의 요구사항 명세를 보면서 테스트
  • 주로 구현된 기능을 테스트
  • 부정확하거나 누락된 기능, 인터페이스 오류, DB 접근 오류, 성능 오류 등을 발견하기 위함
  • 테스트 과정의 후반부에 적용

블랙박스 테스트 종류

동치 분할 검사 (Equivalence Partitioning Testing) 

  • 동등 분할 기법이라고도 한다.
  • 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법
  • 올바른 입력 데이터와 올바르지 않은 입력 데이터로 균등하게 하여 테스트 케이스를 작성한다.
  • 다양한 입력 자료에 맞는 결과가 출력되는지 확인 하는 기법이다.

경계값 분석 (Boundary Value Analysis)

  • 동치 분할 기법을 보안한 기법이다.
  • 입력 조건의 중간값과 경계값에서 오류가 발생할 확률이 높다는 점을 이용하여 입력 조건의 경계값에 초점을 두어 테스트 케이스를 작성하는 기법

원인-효과 그래프 검사 (Cause-Effect Graphing Testing)

  • 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 분석하여 테스트 케이스를 작성하는 기법

오류 예측 검사 (Error Guessing)

  • 과거의 경험이나 확인자의 감각으로 테스트하는 기법
  • 보충적 검사 기법으로, 데이터 확인 검사라고도 한다.

비교 검사 (Comparison Testing)

  • 여러 버전의 프로그램에 테스트하여 결과가 동일한 지 확인하는 기법

 

화이트박스 테스트 (White Box Test)

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

  • 설계 절차에 초점을 둔 구조적 테스트
  • 테스트 과정의 초기에 적용됨
  • 소스 코드의 작동을 직접 관찰한다.
  • 소스 코드의 모든 문장을 한 번 이상 실행한다.

화이트박스 테스트 종류

기초 경로 검사

  • 대표적인 화이트박스 테스트 기법이다.
  • 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 기법이다.
  • 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용된다.

제어 구조 검사

  • 조건 검사 (Condition Testing) : 모듈내의 논리적 조건에 초점을 두어 실시하는 기법
  • 루프 검사 (Loop Testing) : 반복 Loop구조에 초점을 두어 실시하는 기법
  • 데이터 흐름 검사 (Data Flow Testing) : 변수의 정의와 사용의 위치에 초점을 두어 실시하는 기법