본문 바로가기

정보처리산업기사 필기 공부/애플리케이션 테스트 수행

테스트 수행(애플리케이션테스트수행)

 

 

테스트의 개요

테스트 과정에 필요한 역할은 소프트웨어 아키텍트와 테스트 매니저이다. 그림과 같이 두 역할은 소프트웨어 생명 주기(Life Cycle)의 V 모델에서 각각 좌측과 우측의 핵심 역할을 담당하고 서로 보완 관계에 있다.

소프트웨어 생명 주기는 요구사항, 분석, 디자인, 구현 또는 개발 순으로 진행되며, 프로젝트 특성과 방법론에 따라 반복적(Iteration)으로 수행하는 경우도 있다.

테스트는 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트의 순으로 진행된다.

 

 

 

1. 프로젝트 수행 단계에 따른 테스트의 분류

1) 단위 테스트

 작은 소프트웨어 단위(컴포넌트 또는 모듈)를 테스트하는 것으로서, 일반적으로 개발자 자신에 의해 행해진다. 과거에는 시간 부족을 이유로 단위 테스트가 생략되었으나 최근에는 개발 도구의 발전으로 개발 과정 중에 자동으로 진행된다. 단위 테스트는 아주 중요한 부분이므로 개발 도구에서 지원하지 않아도 반드시 수행해야 한다.

 

2) 통합 테스트

 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호 작용을 테스트하는 것으로, 하나의 프로세스가 완성된 경우 부분적으로 통합 테스트를 수행하는 경우도 있다.

 

3) 시스템 테스트

 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 테스트 하는 것으로 성능 및 장애 테스트가 여기에 포함된다.

 

4) 인수 테스트

 일반적으로 최종 사용자와 업무에 따른 이해관계자 등이 테스트를 수행함으로써 개발된 제품에 대해 운영 여부를 결정하는 테스트로, 실제 업무 적용 전에 수행한다.

 

 

 

 

프로젝트 수행 단계에 따른 테스트의 접근 방법

1. 단위 테스트

 테스트 가능한 단위로 작게 분리된 소프트웨어 내에서 결함을 찾고 기능을 검증하는 테스트 활동이다.

 

1) 특징

 구조적 테스트, 기능성 테스트, 리소스 관련 테스트, 강건성 테스트 등 특정 비기능성 테스트 등이 포함되어 수행되며, 컴포넌트 명세, 소프트웨어 상세설계, 데이터 모델 명세 등을 이용하여 테스트한다.

 

2) 방법과 목적

 단위 테스트는 구조 기반과 명세 기반 테스트로 나누어지며, 표 와 같이 기본적으로 개발된 코드 및 모듈의 범위 내에서 정상적인 작동과 사용자의 요구사항 등을 테스트하는 데 목적이 있다.

  (가) 구조 기반은 업무 단위별 제어 흐름과 조건 결정에 따른 결과를 테스트하는 데 목적이 있다.

  (나) 명세 기반은 동등 분할과 경계 값 분석을 위하여 사용자의 입력, 출력, 내부 이벤트 등을 확인하는 데 목적이 있다.

 

 

 

 2. 통합 테스트

 통합 테스트는 컴포넌트 간 인터페이스 테스트를 하고 운영체제(OS), 파일 시스템, 하드웨어 또는 시스템 간 인터페이스와 같은 각각 다른 부분과 상호 연동이 정상적으로 작동하는지 여부를 테스트한다.

 

1) 특징

 일반적으로 빅뱅 방식보다는 순차적(Incremental) 형태와 아키텍처에 대한 이해를 바탕으로 진행한다.

2) 종류

 빅뱅, 상향, 하향, 샌드위치, Central, Collaboration, 레이어 통합 등의 테스트가 있다.

 

 

 

3. 시스템 테스트

 컴퓨터 시스템을 완벽하게 검사하기 위한 목적 또는 성능 목표를 가지고 테스트한다.

 

1) 특징

 시스템 테스트는 개발 프로젝트 차원에서 정의된 전체 시스템의 동작과 관련되어 있다. 환경 제한적 장애 관련 리스크를 최소화하기 위하여 실제의 최종 사용자 환경과 유사하게 시스템 성능, 관련된 고객의 기능, 비기능적인 요구사항 등이 완벽하게 수행 되는지를 테스트하며, 이때 요구사항 명세서, 비즈니스 절차, 유스케이스, 리스크 분석 결과 등을 이용한다.

2) 테스트 방법

 

 

 

 

4. 인수 테스트

 

 

 

 

 

 

 

 

 

 

테스트 자동화 도구

 

1. 배경

 소프트웨어 테스트는 소프트웨어 개발에 소요되는 총 시간과 비용의 절반 이상을 차지하기도 할 정도로 많은 자원이 투입되는 프로세스이다. 따라서 테스트의 정확성을 유지하면서 시간과 비용을 줄일 수 있는 자동화 도구가 매우 중요하게 되었다.

 

2. 테스트 자동화

1) 테스트 자동화의 개념

 테스트 자동화란 사람이 하던 반복적 테스트 절차를 자동화 도구를 활용하여 준비, 구현, 수행, 분석 등을 스크립트 형태로 구현함으로써, 시간과 인력 투입의 부담을 최소화 하면서 운영 중인 시스템의 모니터링 또는 UI가 없는 서비스의 경우에도 정밀한 테스트가 가능하도록 하는 것이다.

 

2) 테스트 도구의 장점

 (가) 테스트 데이터의 재입력과 재구성 같은 반복 작업의 자동화를 통하여 테스트 인력과 시간을 최소화한다.

 (나) 향상된 요구사항 정의, 성능 및 스트레스 테스트, 품질 측정을 최적화한다.

 (다) 빌드확인, 회귀, 다중 플랫폼 호환성, 소프트웨어 구성, 기본 테스트 등의 향상된 테스트 품질을 보장한다.

 

3) 테스트 도구의 단점

 (가) 도입 후 테스트 도구 전문가를 양성 또는 고용이 필요하며, 초기에 프로세스 적용에 대한 시간, 비용, 노력에 대한 추가 투자가 필요하다.

 (나) 비공개 상용 소프트웨어의 경우 고가이며, 인력과 교육에 대한 유지관리 비용이 높다.

 

4) 테스트 자동화 수행 시의 고려사항

 (가) 테스트 절차를 고려하여 재사용 및 측정이 불가능한 테스트 프로그램은 제외해야 한다.

 (나) 설계기준 고려하여 반복적인 빌드에서 스크립트 재사용성이 가능해야 한다.

 (다) 도구의 한계성으로 모든 수동 테스트 과정을 자동화 할 수 있는 도구는 없다.

       따라서 용도에 맞는 적절한 도구 사용이 필요하다.

 (라) 도구 환경 설정과 도구 습득 기간을 고려하여 프로젝트의 지연을 방지해야 한다.

 (마) 테스트 엔지니어 늦은 투입은 프로젝트의 이해 부족으로 불완전한 테스트를 초래할 수 있으므로, 적절한 투입

       시기와 계획을 프로젝트 초기에 수립해야 한다.

 

 

 

3. 테스트 도구 평가방법 및 요소