본문 바로가기
IT Study/정보처리기사

2020 정보처리기사 (7-2장. 애플리케이션 테스트 관리)

by dev_huhu 2020. 9. 21.
반응형

통합 테스트

- 비점진적 통합 방식

  • 단계적으로 통합하는 절차없이 모든 모듈이 미리 결합되어 있는 프로그램 전체를 테스트하는 방법으로, 빅뱅 통합 테스트 방식이 잇다.
  • 규모가 작은 소프트웨어에 유리하며 단시간 내에 테스트가 가능하다.
  • 전체 프로그램을 대상으로 하기 때문에 오류 발견 및 장애 위치 파악 및 수정이 어렵다.

- 점진적 통합 방식

  • 모듈 단위로 단계적으로 통합하면서 테스트하는 방법으로, 하향식, 상향식, 혼합식 통합 방식이 있다.
  • 오류 수정이 용이하고, 인터페이스와 연관된 오류를 완전히 테스트 할 가능성이 높다.

 


하향식 통합 테스트

: 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법 (깊이 우선 통합법, 넓이 우선 통합법 사용)

- 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있다.

- 상위 모듈에서 테스트 케이스를 사용하기 어렵다

 

하향식 통합 방법 절차

  1. 주요 제어 모듈은 작성된 프로그램을 사용하고, 주요 제어 모듈의 종속 모듈들은 스텁(Stub)으로 대체한다.
  2. 깊이 우선 또는 넓이 우선 등의 통합 방식에 따라 하위 모듈인 스텁들이 한 번에 하나씩 실제 모듈로 교체된다.
  3. 모듈이 통합될 때마다 테스트를 실시한다.
  4. 새로운 오류가 발생하지 않음을 보증하기 위해 회귀 테스트를 실시한다.
* 테스트 스텁(Test Stub)

제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구,
일시적으로 필요한 조건만을 가지고 있는 시험용 모듈
* 회귀 테스트

이미 테스트 된 프로그램의 테스팅을 반복하는 것, 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트

상향식 통합 테스트

: 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법

- 가장 하위 단계의 모듈부터 통합 및 테스트가 수행되므로 스텁(Stub)은 필요하지 않지만, 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster)가 필요하다.

 

상향식 통합 방법 절차

  1. 하위 모듈들을 클러스터(Cluster)로 결합한다.
  2. 상위 모듈에서 데이터의 입출력을 확인하기 위해 더미 모듈인 드라이버(Driver)를 작성한다.
  3. 통합된 클러스터 단위로 테스트한다.
  4. 테스트가 완료되면 클러스터는 프로그램 구조의 상위로 이동하여 결합하고 드라이버는 실제 모듈로 대체된다.

혼합식 통합 테스트

: 하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합을 사용하여 최적의 테스트를 지원하는 방식


애플리케이션 테스트 프로세스

: 개발된 소프트웨어가 사용자의 요구대로 만들어졌는지, 결함은 없는지 등을 테스트하는 절차

테스트 계획 -> 테스트 분석 및 디자인 -> 테스트 케이스 및 시나리오 작성 -> 테스트 수행 -> 테스트 결과 평가 및 리포팅 -> 결함 추적 및 관리

- 애플리케이션 테스트를 마치면 테스트 계획서, 테스트 케이스, 테스트 시나리오, 테스트 결과서가 산출된다


테스트 계획

: 프로젝트 계획서, 요구 명세서 등을 기반으로 테스트 목표를 정의하고 테스트 대상 및 범위를 결정한다.


결함 추적 및 관리

: 테스트를 수행한 후 결함이 어디에서 발생했는지, 어떤 종류의 결함인지 등 결함을 추적하고 관리한다.

 

- 결함 관리 프로세스 (단계별 테스트 중 발생한 에러에 대해 결함인지 아닌지 판별하는 것에 초점)

  1. 에러 발견: 에러가 발견되면 테스트 전문가와 프로젝트 팀이 논의한다.
  2. 에러 등록: 발견된 에러를 결함 관리 대장에 등록한다.
  3. 에러 분석: 등록된 에러가 실제 결함인지 아닌지를 분석한다.
  4. 결함 확정: 등록된 에러가 실제 결함이면 결함 확정 상태로 설정한다.
  5. 결함 할당: 결함을 해결할 담당자에게 결함을 할당하고 결함 할당 상태로 설정한다.
  6. 결함 조치: 결함을 수정하고, 수정이 완료되면 결함 조치 상태로 설정한다.
  7. 결함 조치 검토 및 승인: 수정이 완료된 결함에 대해 확인 테스트를 수행하고, 이상이 없으면 결함 조치 완료 상태로 설정한다.
* 에러/오류: 결함의 원인이 되는 것
* 결함/결점/버그: 에러/오류로 인해 소프트웨어 제품에 발생한 결함을 의미

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

테스트 케이스

: 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서

 

- 테스트 케이스 작성 순서

  1. 테스트 계획 검토 및 자료 확보
  2. 위험 평가 및 우선 순위 결정
  3. 테스트 요구사항 정의
  4. 테스트 구조 설계 및 테스트 방법 결정
  5. 테스트 케이스 정의
  6. 테스트 케이스 타당성 확인 및 유지 보수

테스트 시나리오

: 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합으로, 테스트 케이스들을 적용하는 구체적인 절차를 명세한 문서이다.


테스트 오라클

: 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 및 활동

- 결과를 판단하기 위해 테스트 케이스에 대한 예상 결과를 계산하거나 확인한다.

 

- 테스트 오라클의 특징

  • 제한된 검증: 테스트 오라클을 모든 테스트 케이스에 적용할 수 없다.
  • 수학적 기법: 테스트 오라클의 값을 수학적 기법을 이용하여 구할 수 있다.
  • 자동화 가능: 테스트 대상 프로그램의 실행, 결과 비교, 커버리지 측정 등을 자동화 할 수 있다.

 

- 테스트 오라클의 종류

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

테스트 자동화 도구

: 사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용함으로써 쉽고 효율적으로 테스트를 수행할 수 있도록 한 것

 

테스트 자동화 도구의 유형

- 정적 분석 도구: 프로그램을 실행하지 않고 분석하는 도구, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함 등을 발견하기 위해 사용

- 테스트 실행 도구: 스크립트 언어를 사용하여 테스트를 실행하는 방법, 테스트 데이터와 테스트 수행 방법 등이 포함된 스크립트를 작성한 후 실행

- 성능 테스트 도구: 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률 등을 인위적으로 적용한 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부를 확인한다.

- 테스트 통제 도구: 테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구로, 종류에는 형상 관리 도구, 결함 추적/관리 도구 등이 있다

- 테스트 하네스 도구: 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위해 생성된 코드와 데이터를 의미 + 테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 한다.

* 테스트 하네스의 구성 요소

테스트 드라이버
테스트 스텁
테스트 슈트
테스트 케이스
테스트 스크립트
목 오브젝트

결함 관리

결함: 오류 발생, 작동 실패 등과 같이 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것을 의미


결함 관리 프로세스 (발견된 결함을 처리하는 과정에 초점)

  1. 결함 관리 계획
  2. 결함 기록
  3. 결함 검토
  4. 결함 수정
  5. 결함 재확인
  6. 결함 상태 추적 및 모니터링 활동
  7. 최종 결함 분석 및 보고서 작성

결함 상태 추적

- 결함 관리 측정 지표

  • 결함 분포: 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정
  • 결함 추세: 테스트 진행 시간에 따른 결함 수의 추이 분석
  • 결함 에이징: 특정 결함 상태로 지속되는 시간 측정

결함 추적 순서

  1. 결함 등록
  2. 결함 검토
  3. 결함 할당
  4. 결함 수정: 개발자가 결함 수정을 완료한 상태
  5. 결함 조치 보류: 결함 수정이 불가능해 연기된 상태, 우선순위, 일정 등에 따라 재오픈을 준비중인 상태
  6. 결함 종료
  7. 결함 해제

결함 분류

  • 시스템 결함
  • 기능 결함
  • GUI 결함
  • 문서 결함

결함 관리 도구

- Mantis: 결함 및 이슈 관리 도구로, 소프트웨어 설계 시 단위별 작업 내용을 기록할 수 있어 결함 추적도 가능한 도구

- Trac: 결함 추적은 물론 결함을 통합하여 관리할 수 있는 도구

- Redmine: 프로젝트 관리 및 결함 추적이 가능한 도구

- Bugzilla: 결함 신고, 확인, 처리 등 결함을 지속적으로 관리할 수 있는 도구로, 결함의 심각도와 우선순위를 지정할 수도 있다.


애플리케이션 성능 분석

애플리케이션 성능 측정 지표

  • 처리량
  • 응답시간
  • 경과 시간
  • 자원 사용률

애플리케이션 성능 개선

소스 코드 최적화

: 나쁜 코드를 배제하고, 클린 코드로 작성하는 것

 

* 클린 코드 작성 원칙: 가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화

 

소스 코드 최적화 유형

- 클래스 분할 배치: 하나의 클래스는 하나의 역할만 수행하도록 응집도를 높이고, 크기를 작게 작성한다.

- 느슨한 결합: 인터페이스 클래스를 이용하여 추상화 된 자료 구조와 메소드를 구현함으로써 클래스 간의 의존성을 최소화한다.

- 코딩 형식 준수

- 좋은 이름 사용

- 적절한 주석문 사용

반응형

댓글