본문 바로가기
  • 그라데이션
정보처리기사 실기(개정 후)/10장. 애플리케이션 테스트 관리

[2023 정보처리기사 실기] 10장. 애플리케이션 테스트 관리 개념정리 요약(1)

by 콩리토 2023. 4. 14.
반응형

 

해당 게시글은 정보처리기사-실기 시험 Chapter 10.[애플리케이션 테스트 관리]의 용어 관련 개념정리 요약글(1)이다.

 


 

애플리케이션 테스트 관리

 

 사전적인 의미로는 '애플리케이션에 잠재되어있는 결함을 찾아내는 일련의 행위 또는 절차'이다.

우리가 사용하는 모든 애플리케이션에는 우리가 인지하고 있지 못한 버그가 존재하기 마련이다. 애플리케이션 테스트는 그러한 오류들을 미리 발견하고 보완하여 업데이트를 하는 과정 중 한 부분이다.

 

* 테스트 프로세스

테스트 계획 -> 분석/설계 -> 수행 -> 관리

 

※ 애플리케이션 테스트 기본 원리와 특징

  1. 테스트를 통해 결함을 줄일수는 있지만 완벽한 테스트는 불가능.
  2. 요르돈의 법칙(눈덩이 법칙) : 개발 초기에 테스트를 하지 않으면 비용이 증가할 수 있음.
  3. 파레토 법칙 : 2:8법칙, 20%의 코드에서 전체결함의 80%의 오류가 집중되어 있음.
  4. 살충제 패러독스 : 같은 살충제를 사용하면 벌레가 내성이 생겨서 죽지 않는 것처럼, 동일한 테스트를 계속 반복하면 더 이상 결함을 발견할 수 없는 현상.
  5. 오류 부재의 궤변 : 테스트를 통해 소프트웨어의 결함을 제거 해도 사용자 요구사항을 만족시키지 못하면 소프트웨어 품질이 높다고 말할 수 없음.
  6. 테스팅은 정황 의존 : 정황에 따라 테스트 결과 달라질 수 있기에, 정황에 따라 다른 테스트를 수행.
  7. 테스트와 위험은 반비례 : 테스트를 많이 하면 할수록 미래 발생할 위험이 줄어듦.
  8. 점진적 확대 : 테스트는 작은 것부터 시작해서 점점 확대해서 진행.
  9. 별도 팀 수행 : 테스트는 개발자와 관계 없는 별도의 팀에서 테스트를  수행해야 함.

 

애플리케이션 테스트 케이스 설계

 

* 테스트 케이스(Test Case)

요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행조건, 예상된 결과의 집합

 

▶ 프로그램 실행 여부에 따른 테스트

  • 정적 테스트 : 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석
    - 워크스루(검토 회의) : 회의 전에 검토 자료를 배포해서 사전 검토한 후 짧은 시간 동안 회의를 진행하는 형태
    - 인스펙션 : 원시 코드 등을 저작자 외의 다른 전문가 또는 팀이 검사해 오류를 찾아내는 공식적 검토 방법
      사전에 정의된 코드 작성 규칙 기반으로 소스코드를 점검하여 작성 규칙에 위반되는 소스코드를 추출하는 분석도구

  • 동적 테스트 : 프로그램을 실행한 상태로 오류를 찾아나가는 방식
    - 화이트박스 테스트 : 각 응용프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트
    - 블랙박스 테스트 : 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트

☆ 화이트박스 테스트(구조 기반) : 각 응용프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트

  • 구문 커버리지 : 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지
  • 결정 커버리지 : 결정 포인트 내의 전체 조건식이 적어도 한번은 참과 거짓의 결과가 되도록 수행
  • 조건 커버리지 : 결정 포인트 내의 각 개별 조건식이 적어도 한번은 참과 거짓의 결과가 되도록 수행
  • 조건/결정 커버리지 : 전체 조건식 뿐만 아니라 개별 조건식도 참, 거짓이 한번씩 결과가 되도록 수행
  • 변경 조건/결정 커버리지 : 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적 영향을 주도록 수행
  • 다중 조건 커버리지 : 결정 포인트 내 모든 개별 조건식의 모든 조합을 고려하는 커버리지
  • 기본 경로 커버리지 : 수행 가능한 모든 경로를 테스트, 멕케이브 순환 복잡도 
    * 맥케이브 복잡도 : 간선 수(화살표) – 노드 수(원) + 2
  • 제어 흐름 테스트 : 프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직 테스트
  • 데이터 흐름 테스트 : 제어 흐름 그래프에 사용현황 추가

 

★ 블랙박스 테스트(명세 기반) : 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트

  • 동등 분할 테스트 : 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출해 테스트
  • 경계값 분석 테스트 : 최솟값 바로 위, 최대치 바로 아래 등 입력값의 극한 한계를 테스트 하는 기법
  • 결정 테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열해, 조건과 행위를 모두 조합해 테스트
  • 상태 전이 테스트 : 어느 한 상태에서 다른 상태로 전이 되는 경우의 수를 수행하는 테스트
  • 유스 케이스 테스트 : 프로세스 흐름을 기반으로 테스트 케이스를 명세화해 수행하는 테스트
  • 분류 트리 테스트 : SW의 일부 또는 전체를 트리구조로 분석 및 표현하여 테스트 케이스 설계해 테스트
  • 페어와이즈 테스트 : 테스트 데이터 값들 간에 최소한 한 번씩을 조합하는 방식
  • 원인-결과 그래프 테스트 : 그래프를 활용해 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석
  • 비교 테스트 : 여러 버전의 프로그램에 같은 입력값을 넣어 비교해 테스트

 

▶ 테스트 기반에 따른 테스트

  • 명세 기반 테스트 : 사용자 요구사항 명세를 테스트 케이스로 만들어서 테스트
    - 동등분할, 경계값 분석 등
  • 구조 기반 테스트 : 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 만들어서 테스트
    - 구문기반, 결정기반, 조건기반 등
  • 경험 기반 테스트 : 테스터의 경험기반으로 테스트 케이스를 만들어서 테스트
    - 체크리스트, 에러 추정, 탐색적 테스팅 등

 

▶ 시각에 따른 테스트

  • 검증(Verification) 테스트 : 개발자 시각에서 제품 명세서에 맞게 스프트웨어 기능이 수행되는지 검증하는 테스트
  • 확인(Validation) 테스트 : 사용자 시각에서 요구사항을 만족시키는지 확인하는 테스트

 

▶ 목적에 따른 테스트

  • 회복 테스트(Recovery) : 시스템이 올바르게 복구되는지
  • 안전 테스트(Security) : 보호 도구가 불법 외부 침입으로부터 보호하는지
  • 성능 테스트(Performance) : 실시간 성능, 전체 효율성 등 응답시간 및 처리량 전반적인 모든 단계를 확인
    ☞ 상세 유형
    - 부하 테스트(Load) : 시스템에 부하를 계속 증가시키면서 시스템의 임계점을 찾음
    - 강도 테스트(Stress) : 과부하에도 정상적으로 실행되는지
    - 스파이크 테스트(Spike) : 짧은 시간에 사용자가 몰릴 때 시스템의 반응 측정 테스트
    - 내구성 테스트(Endurance) : 오랜 시간동안 시스템에 높은 부하를 가해 테스트
  • 구조 테스트(Structure) : 내부 논리적 경로, 소스코드의 복잡도 확인
  • 회귀 테스트(Regression) : 수정된 소스코드에 새로운 결함이 발견게 없는지 반복 테스트하여 확인
  • 병행 테스트(Parallel) : 기존 소프트웨어와 수정된 소프트웨어의 동일한 입력값으로 결과 비교

 

▶ 테스트 오라클

테스트의 결과값이 참인지 거짓인지 판단하기 위해서 사전에 정의한 참 값을 입력하여 비교

  • 참 오라클 : 모든 입력값에 대해 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출
  • 샘플링 오라클 : 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공
  • 휴리스틱 오라클 : 샘플링 오라클을 개선, 나머지 값들에 대해서는 휴리스틱(추정) 처리
  • 일관성 검사 오라클 : 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 동일한지 확인

 

테스트 레벨의 종류

  1. 단위 테스트 : 단위 모듈, 서브루틴
  2. 통합 테스트 : 모듈 간 상호작용
  3. 시스템 테스트 : 시스템 기능
  4. 인수 테스트
    - 알파 테스트 : 사용자가 개발자 환경에서 통제된 상태로 개발자와 함께 수행
    - 베타 테스트 : 실제 환경에서 선택된 사용자에게 SW을 사용하게 하고 피드백을 받는 테스트

* 테스트 시나리오(Test Scenario)

애플리케이션의 테스트 되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성

 

 

728x90

댓글