본문 바로가기

자격증/정보처리기사 2과목

2-15장. 애플리케이션 테스트 관리-애플리케이션 테스트케이스 설계

[ 목차 ]

1. 소프트웨어 테스트

2. 테스트에 대한 시각

3. 소프트웨어 테스트 프로세스

 

5. 테스트 케이스

1. 소프트웨어 테스트

1) 구현된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능의 동작, 성능, 사용성, 안정성 등을 만족하는지 확인하기 위해 소프트웨어의 결함을 찾아내는 활동

2) 사용자가 요구하는 기능 : 사용자 입장

3) 성능, 사용성, 안정성 : 개발자 입장(소프트웨어 검증)

4) 테스트 필요성 : 오류 발견 및 예방, 품질 향상

 

2. 테스트에 대한 시각

1) 확인 validation 테스트 : 사용자 입장, 생산된 제품의 결과를 테스트해 정상적으로 동작하는지 확인

2) 검증 verification 테스트 : 개발자 입장, 제품의 생산 과정을 테스트해 올바른 제품을 생산하는지 검증(설계 명세서)

 

3. 소프트웨어 테스트 프로세스

1) 계획 수립 단계 : 테스트 계획 수립 프로세스와 테스트 시나리오 및 케이스 관리 프로세스

2) 테스트 수행 단계 : 테스트 환경 관리, 테스트 수행 관리, 코드 커버리지 관리, 형상 및 배포 관리 프로세스

3) 테스트 결과 단계 : 테스트 결과 검토 프로세스

entry criteria : 테스트 수행을 위한 선결 조건, 즉 테스트 진행을 위한 시작 조건을 의미

테스트 환경 관리 프로세스 : 웹, db 등 테스트 할 수 있는 환경을 관리

테스트 수행 관리 프로세스 : 예상한 결과가 맞으며 오류는 없는지 검증

5~9프로세스 : 테스트가 수행되면서 관리될 대상

코드 커버리지 관리 프로세스 : 코드를 보며 어느 부분이 실행되고 그렇지 않은지 확인하며 테스트의 충분함 측정

테스트 결함 관리 : 테스트 중 발생하는 결함 관리

4.  소프트웨어 테스트 기본 원칙

1) 테스트는 결함이 존재함을 밝히는 활동

  1] 잠재적 결함을 줄일 수 있지만 결함이 발견되지 않아도 결함이 없음을 증명할 수 없음

2) 완벽한 테스트는 불가

  1] 무한 경로, 무한 입력 값, 무한 시간이 소요되어 완벽하게 테스트 불가능하기에 리스크 분석과 우선순위를 토대로 테스트에 집중

3) 테스트는 개발 초기에 시작해야 함

  1] 애플리케이션의 개발 단계에 테스트를 계획하고 SDLC(생명주기)의 각 단계에 맞춰 전략적으로 접근해야 함

4) 결함 집중

  1] 애플리케이션 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재(파레토 법칙)

5) 살충제 패러독스

  1] 동일한 테스트 케이스로 반복 실행 시 결함을 찾을 수 없으며 주기적으로 테스트 케이스를 리뷰하고 개선

6) 테이스팅은 정황에 의존

  1] 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행

7) 오류-부재의 궤변

  1] 어떠한 소프트웨어도 오류가 완벽하게 해소된 제품을 만들어 낼 수 없음

  2] 오류를 100% 없애는 것이 목적이 아닌 일정 수준 이하로 줄이는 것이 목적

 

5. 테스트 케이스

1) 특정한 프로그램의 일부분 또는 경로에 따라 수행하거나 특정한 요구사항을 준수하는지 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서

2) = 명세 기반 테스트의 설계 산출물

3) 명세 기반 테스트 : 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인하는 테스트

 

6. 테스트 케이스 작성 절차

1) 테스트 케이스의 정확성, 재사용성, 간결성 보장을 위해 아래 절차에 따라 작성

2) 테스트 계획 검토 및 자료 확보

  1] 프로젝트 범위와 접근 방법 이해를 위해 테스트 계획을 재검토

  2] 테스트 대상 시스템 자료와 정보를 확보해 시스템 요구사항과 기능 명세서를 검토

2) 위험 평가 및 우선순위 결정

  1] 결함 해결에 있어 상대적 중요성을 지니며 테스트의 초점을 결정

3) 테스트 요구사항 정의 (요구사항 식별)

  1] 시스템 요구사항, 테스트 대상 재검토, 테스트할 특성, 조건, 기능을 식별 및 분석

4) 테스트 구조 설계 및 테스트 방법 결정

  1] 테스트 케이스의 일반적 형식을 결정하고 테스트 케이스 분류 방법을 결정

  2] 테스트 절차, 장비, 도구, 테스트 문서화 방법을 결정

5) 테스트 케이스 정의

  1] 각 요구사항에 대해 테스트 케이스를 작성하고 입력 값, 실행 조건, 예상 결과를 기술

6) 테스트 케이스 타당성 확인 및 유지보수

  1] 기능 또는 환경 변화에 따라 테스트 케이스를 갱신하고 테스트 케이스의 유용성을 검토

 

7. 테스트 오라클

1) 테스트의 결과가 참, 거짓인지 판단하기 위해 사전에 정의된 참 값을 입력하여 비교하는 기법

2) 테스트의 결과가 옳은지 확인하는 도구

 

8. 테스트 오라클의 유형

1) 참 오라클 : 모든 값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출

2) 샘플링 오라클 : 특정한 몇 개의 입력 값에 대해서만 기대하는 결과를 제공

3) 휴리스틱 오라클 : =추정오라클, 샘플링 오라클을 개선한 것으로 틍정 입력 값에 대해 올바른 결과를 제공하고 나머지 값들에 대해서는 휴리스틱(추정)으로 처리, 즉 확률이나 직관에 의한 예상결과를 작성

4) 일관성 검사 오라클 : 애플리케이션 변경이 있을 때 수행 전과 후의 결과 값이 동일한지 확인

 

9. 테스트 오라클 적용 방안

1) 참 오라클은 주로 항공기, 임베디드, 발전소 소프트웨어 등 미션 크리티컬(한 번이라도 다운X)한 업무에 적용

2) 샘플링/추정 오라클은 일반, 업무용, 게임, 오락 등의 일반적 업무에 적용

 

10. 테스트 레벨 

1) 테스트는 개발 과정 전반에 걸쳐 밀접하게 연계되어 각 단계별로 적합한 테스트가 진행

2) 단위 테스트

  1] 구현된 단위 모듈의 기능 수행 여부를 판정하고 내부에 존재하는 놀리적 오류를 검출

  2] 세부 구현 클래스나 메서드에 대한 검증

3) 통합 테스트

  1] 모듈 간의 인터페이스 연계를 검증하고 오류를 확인, 모듈 간의 상호 작용 및 연계 동작이 제대로 기능하는지 점검

  2] 컴포넌트간 기능 연동을 검증

4) 시스템 테스트

  1] 단위, 통합 테스트 후 전체 시스템이 정상적으로 작동하는지 판정하는 기능을 점검

  2] 배포 환경에 대한 점검, 비기능 요소에 대한 검증

5) 인수 테스트

  1] 사용자 요구분석 명세서에 명시된 사항을 모두 충족하는지 판정하고 시스템이 예상대로 동작하는지 점검

  2] 고객이 최종적으로 요구 사항 충족에 대한 검증을 수행 

 

11. V모델

1) 소프트웨어 개발과 테스트 과정의 연관성의 모양을 나타낸 것

2) 소프트웨어 공학에서 시스템의 검증과 테스트 작업을 강조하기 위해 고안된 모델

 

12.. 테스트 시나리오

1) 테스트 수행을 위한 여러 테스트 케이스의 집합

2) 테스트 케이스의 동작 순서를 기술한 문서이며 테스트를 위한 절차를 명세한 문서

3) 작성 시 유의점

  1] 테스트 항목을 하나의 시나리오에 모두 작성하지 않고 시스템별, 모듈별, 항목별 테스트 시나리오를 분리하여 작성

  2] 고객의 요구사항과 설계 문서 등을 토대로 베스트 시나리오를 작성

  3] 식별자 번호, 순서 번호, 테스트 데이터, 테스트 케이스, 예상 결과, 확인 등의 항목을 포함하여 작성

 

13. 테스트 시나리오 관리 프로세스

1) AIT/SIT TEST CASE 작성 가이드

2) 통합 테스트 시나리오 도출

3) 시나리오별 테이블 호출 매트릭스 작성

4) 통합 테스트 케이스 작성

5) 통합테스트 케이스 검토

6) 통합테스트 케이스 보완

7) 테스트 케이스 피어 리뷰

8) 통합테스트 케이스 보완

9) 통합테스트 케이스 최종점검

10) 통합테스트 케이스 업로드

 

14. 테스트 시나리오 도출

1) 업무 기반으로 도출하기 땜누에 설계자는 업무 전문가가 많음

2) 업무ㅁ 흐름에 따라서 시나리오를 스토리텔링 하듯이 도출

 

15. 테스트 케이스 도출

1) 테스트 시나리오를 가지고 테스트 케이스를 도출

2) 테스트 시나리오를 짧은 문장으로 나눠 쉽게 테스트 할 수 있도록 만든 수행절차

 

16. 테스트 케이스 검토 및 보안

1) 품질관리자와 테스트 리더가 검토

 

17. 테스트 케이스 피어 리뷰

1) 테스트 케이스가 시나리오에 맞게 작성되었는지 여러 담당자가 모여 리뷰

2) 사용자 요구사항을 테스트할 수 있게 작성이 되었는지 점검

 

18. 테스트 케이스 업로드

1) 테스트 케이스가 문제 없이 만들어 졌으면 테스트 관리 시스템에 업로드

 

19. 테스트 지식 체계 - 자세히 알 필요 없고 큰 틀만 암기

1) 개념과 정의

  1] 전체 시리즈에 대한 가이드를 제공

  2] 소프트웨어 테스팅 개념

  3] 조직과 프로젝트 관점에서의 소프트웨어 테스트

  4] 소프트웨어 생명 주기 모델에서의 일반적인 테스트 프로세스

  5] 위험 기반 세스트

  6] 테스트 서브 프로세스

  7] 요약 : 전체 시리즈에 대한 가이드를 제공해주는 부분으로 용어 정의, 소프트웨어 테스트의 개념을 담고 있음

2) 테스트 프로세스

  1] 조직, 테스트 관리, 동적 테스트의 3가지 수준의 다계층 프로세스 모델을 설명

  2] 다계층 프로세스 모델

  3] 조직의 테스트 프로세스

  4] 테스트 관리 프로세스

  5] 동적 테스트 프로세스

  6] 요약 : 테스트 프로세스에 관한 부분으로, 조직, 테스트 관리, 동적 테스트의 세 가지 수준의 다계층 프로세서 모델을 설명

3) 테스트 문서화

  1] 테스트 프로세스 단계별 산출물의 견본제시 및 작성방법을 설명

  2] 조직의 테스트 프로세스 문서

  3] 테스트 관리 프로세스 문서

  4] 동적 테스트 프로세서 문서

  5] 요약 : 테스트 문서의 견본과 예시를 제공해주는 부분으로, 테스트 프로세스의 단계별 산출 문서의 작성 방법과 포함될 내용 등을 제공

4) 테스트 기법

  1] 소프트웨어 테스트 기법에 관한 부분으로 테스트 설계 및 구현 단계에서 활용할 수 있는 명세 기반 테스트 설계, 구조 기반 테스트 설계, 경험 기반 테스트 설계 기법을 제공

 

19. 화이트 박스와 블랙박스 테스트

1) 10장에서 언급

2) 아래 기법들은 블랙 박스 테스트 기법에 해당하는 것들

20. 동등 분할 기법

1) 입력 값의 범위를 유사한 특징을 갖는 동등 그룹으로 나누고 각 그룹마다 대표 값을 선정해 테스트케이스를 선정하는 기법

2) 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트 케이스를 정하고 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법

 

21. 경계값 분석 기법

1) 분할된 경계의 유효한 값과 경계에서 가장 가까운 유효하지 않은 값을 테스트 데이터로 선택하여  컴포넌트나 시스템을 테스트하는 기법

2) 등가 분할 기법을 확장하여 등가 분할 내에 있는 임의 값이 아닌 분할된 영역의 경계에 있는 값을 테스트 데이터로 이용하여 보다 많은 결함을 발견하는 테스트 케이스를 작성하는 기법

 

22.. 원인 효과 그래프 기법

1) 입력값을 원인으로 효과를 출력값으로 정하고 이에 따른 원인 결과 그래프를 만들어 테스트 케이스를 작성하는 기법

 

23. 결정트리 트리

1) 입력값과 출력값을 트리형태로 만들어서 특정 입력값에 따라서 결정되는 출력 값이 정해지도록 만든 테스트 케이스 작성 기법

 

24. 명세기반 기법

1) 테스트 케이스를 프로그램 명세서를 기반으로 테스트 케이스를 선정하여 테스트하는 기법

2) 동등 분할 기법, 경계값 분석, 결정 테이블 기법, 상태전이 테스트, 유즈케이스 테스트, 페어와이즈 테스트, 직교 배열 테스트 기법이 해당

 

25. 경험 기반 기법

1) 프로그램 명세서와 같은 산출물 없이 테스터의 경험을 기반으로 테스트수행하는 기법

2) 탐색적 테스트, 즉흥적 테스트, 분류 트리 기법 등이 있음

3) 일반적으로 블랙박스 테스트로 수행되지만 화이트 박스 테스드오 경험기반으로 테스트 가능

 

26. 키워드 주도 테스팅

1) 사전 정의된 키워드의 모음으로 테스트 케이스를 만드는 것

2) 테스트 단계에서 자연어 대신 키워드를 사용하여 테스트 케이스는 이해하기 쉽고 유지보수에 용이

3) 요약 : 키워드 주도 테스팅을 위한 프레임워크, 도구에 대한 요수사항을 다룸