Part 02. 애플리케이션 테스트 수행
chapter01. 애플리케이션 테스트 수행
chapter02. 애플리케이션 결함 조치
1. 테스트
- 테스트 : 개발된 애플리케이션이나 시스템의 사용자가 요구하는 기능과 성능, 사용성, 안전성 등을 확인, 결함 찾는 활동
- 역할
- 소프트웨어 아키텍트
- 테스트 매니저
- 소프트웨어 아키텍처 : 소프트웨어의 골격이 되는 기본 구조, 구성요소 간의 관계를 표현하는 시스템 구조
- 테스트 7가지 원칙
- 테스트는 계획 단계부터(초기부터)
- 테스트는 결함의 발견
- 완전한 테스트는 불가능
- 테스트는 상황에 따라 다르다.
- 결함 집중을 고려(파레토 법칙 : 결함이 높은 곳에 자원이 집중되어 있다.)
- 살충제 패러독스를 고려 : 동일한 테스트 케이스에 의한 반복적 테스트로 새로운 버그를 찾아내지 못하는 내성 현상
- 오류 부재의 궤변을 고려 : 개발한 제품은 요구 사항과 일치하고 사용에 적합해야 한다.
2. 단위 테스트
- 작은 소프트웨어 단위(컴포넌트 또는 모듈)를 테스트
- 반드시 수행(개발 과정 중 자동으로 진행)
- 구조적 테스트, 기능성 테스트, 리소스 관련 테스트, 강건성 테스트 등
- 컴포넌트 명세, 소프트웨어 상세 설계, 데이터 모델 명세 등을 이용하여 테스트
테스트 방법 | 설명 | 테스트 목적 |
구조 기반 | 업무 단위별 제어 흐름과 조건 결정에 따른 결과를 테스트 내부 구조 및 복잡도를 검증(화이트박스 테스트) |
제어 흐름, 조건 결정 |
명세 기반 | 동등 분할과 경계값 분석을 위하여 사용자의 입력, 출력, 내부 이벤트 등을 확인 목적 및 실행 코드 기반의 실행(블랙박스 테스트) |
동등 분할, 경계값 분석 |
화이트박스 테스트 | 개발자 관점 / 내부구조와 동작검사 종류 : 기초 경로 테스트, 제어 흐름 테스트, 조건 테스트, 루프 테스트, 데이터 흐름 테스트, 분기 테스트 |
블랙박스 테스트 | 사용자 관점 / 명세(요구사항과 결과물 일치) 기반의 테스트 종류 : 균등 분할(동치분해), 한계값(경계값) 테스트, 원인 효과 그래프 테스트, 비교 테스트 |
3. 통합 테스트
- 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 테스트
- 빅뱅, 상향식, 하향식, 샌드위치, Central, Collaboration, 레이어 통합 등의 테스트가 있다.
구분 | 빅뱅(Big Bang) | 상향식(Botton Up) | 하향식(Top Down) |
수행 방법 | 모든 모듈을 동시 통합 후 수행 | 최하위 모듈부터 점진적으로 상위 모듈과 함께 수행 | 최상위 모듈부터 하위 모듈들을 통합하며 수행 |
더미 모듈 | x | 드라이버 필요 | 스텁 필요 |
장점 | 단시간 테스트 가능 작은 시스템에 유리 |
장애 위치 파악 쉬움 모듈 개발 시간 낭비가 없음 |
장애 위치 파악 쉬움 이른 프로토타입 가능 중요 모듈의 선 테스트 기능 |
단점 | 장애 위치 파악 어려움 모든 모듈 개발 |
이른 프로토타입 어려움 중요 모듈이 마지막으로 테스트될 가능성 높음 |
많은 스텁이 필요 하위 모듈들의 불충분한 테스트 수행 |
드라이버 | 상향식 테스트 방식의 존재하지 않는 상위 모듈 간의 인터페이스 역할 |
스텁 | 하향식 테스트 방식의 작성이 쉬운 시험용 모듈 |
4. 시스템 테스트
- 통합된 단위 시스템의 기능이 정삭적으로 수행되는지 테스트, 성능 및 장애 테스트
- 환경 제한적 장애 관련 리스크 최소화(시스템 성능, 고객의 기능/비기능적인 요구사항 완벽하게 수행되도록)
- 요구사항 명세서, 비즈니스 절차, 유스케이스, 리스크 분석 결과 등을 이용
기능적 요구사항 | 요구사항 명세서, 비즈니스 절차, 유스케이스 등 명세서 기반의 블랙박스 테스트 |
비기능적 요구사항 | 성능 테스트, 회복 테스트, 보안 테스트, 내부 시스템의 메뉴 구조 웹 페이지의 네비게이션 등의 구조적 요소에 대한 화이트박스 테스트 |
유스케이스 | 시스템의 동작을 사용자의 입장에서 표현한 시나리오 시스템에 관련한 요구사항을 알아내는 과정 |
유스케이스 다이어그램 | 시스템 간 상호작용 표현 시스템 범위, 엑터, 유스케이스, 관계 |
5.인수 테스트
- 최종 사용자와 업무에 따른 이해관계자 등이 테스트 수행함으로써 개발된 제품에 대해 운영 여부를 결정하는 테스트
- 실제 업무 적용 전에 수행
사용자 인수 테스트 | 비즈니스 사용자가 시스템 사용의 적절성 여부 확인 |
운영상의 인수 테스트 | 시스템 관리자가 시스템 인수 시 수행하는 테스트 활동 백업/복원 시스템, 재난 복구, 사용자 관리, 정기 점검 등 확인 |
계약 인수 테스트 | 계약상의 인수/검수 조건을 준수하는지 확인 |
규정 인수 테스트 | 정부 지침, 법규, 규정 등 규정에 맞게 개발하였는지 확인 |
알파 테스트 | 개발하는 조직 내 잠재 고객에 의해 테스트 수행 |
베타 테스트 | 실제 환경에서 고객에 의해 테스트 수행 |
6. 테스트 케이스
- 명세 기반 테스트의 설계 산출물
- 요구사항 준수 여부 확인용 입력값
- 특정한 프로그램의 일부분 또는 경로에 따라 수행하거나, 특정한 요구사항을 준수하는지 확인하기 위해 설계된 입력값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서
- 장점 : 미리 설계하여 오류를 방지, 테스트 수행에 필요한 인력, 시간 등의 낭비를 축소
- 작성 절차
계획 검토 및 참조 문서 수집 → 내부 검토 및 우선순위 결정 → 요구사항 정의 → 테스트 설계와 방법 결정 → 테스트 케이스 정의 → 테스트 케이스 타당성 확인 및 유지보수 → 테스트 수행
7. 테스트 오라클
- 사전에 정의된 참 값을 입력하여 비교
참 오라클 | 기대 결과 생성 후 오류 검출 |
샘플링 오라클 | 특정 입력 값의 기대 결과 제공 |
휴리스틱(추정) 오라클 | 샘플링 오라클을 개선한 오라클 확률/직관에 의한 예상 결과 |
일관성 검사 오라클 | APP변경, 전후의 값 동일 여부 검증 |
8. 테스트 자동화
- 테스트 자동화 : 자동화 도구를 활용하여 테스트 하는 것
- 준비, 구현, 수행, 분석 등을 스크립트 형태로 구현
- 장점 : 테스트 시간·인력 투입 최소화, 향상된 테스트 품질, 휴먼에러 줄일 수 있다.
- 단점 : 테스트 도구 전문가 양성 또는 고용 필요, 초기 투자 필요, 비공개 상용 소프트웨어의 경우 고가, 유지관리 비용 높음.
휴먼에러(Human Error) | 인간의 실수로 발생하는 에러 |
9. 테스트 도구의 평가 방법 및 요소
테스트 활동 | 테스트 도구 | 내용 |
테스트 계획 | 요구사항 관리 | 고객 요구사항 정의 및 변경 사항 관리 |
테스트 분석/설계 | 테스트 케이스 생성 | 테스트 기법에 따른 테스트 데이터 및 케이스 작성 |
커버리지 분석 | 대상 시스템에 대한 테스트 완료 범위의 척도 | |
테스트 수행 | 테스트 자동화 | 기능 테스트 등 테스트 도구를 활용하여 자동화를 통한 테스트 효율성 제고 |
정적 분석 | 코딩 표준, 런타임 오류 등을 검증 | |
동적 분석 | 대상 시스템 시뮬레이션을 통한 오류 검출 | |
성능 테스트 | 가상 사용자를 인위적으로 생성하여 시스템 처리 능력 측정 | |
모니터링 | 시스템 자원(CPU,Memory)의 상태 확인 및 분석 지원 도구 | |
테스트 통제 | 형상 관리 | 테스트 수행에 필요한 다양한 도구 및 데이터 관리 |
테스트 관리 | 전반적인 테스트 계획 및 활동에 대한 관리 | |
결함 추적/관리 | 테스트에서 발생한 결함 관리 및 협업 지원 |
※ 커버리지는 소프트웨어 테스트에서 얼마나 많은 코드가 실행되었는지를 측정하는 지표
문제 풀어보기
01. 소프트웨어의 구조 또는 소프트웨어의 설계와 구성요소들 사이에서 유기적으로 관계를 표현하는 용어를 무엇이라 하는지 쓰시오.
답 : 소프트웨어 아키텍처
02. 다음 보기 중 테스트의 7가지 원칙으로 올바르지 않은 것?
ㄱ. 초기테스트 ㄴ. 완전한 테스트는 불가능하다. ㄷ. 살충제 패러독스 ㄹ. 테스트는 결함을 제거하기 위해 존재한다. |
답 : ㄹ
03. 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 테스트하는 것으로, 하나의 프로세스가 완성된 경우 부분적으로 통합 테스트를 수행하는 테스트를 의미한다. 테스트 방식으로는 상향식, 하향식, 빅뱅 등이 있는 테스트 방식을 무엇이라고 하는지 쓰시오.
답 : 통합 테스트
04. 일반적으로 최종 테스트를 수행함으로써 개발된 제품에 대해 운영 여부를 결정하는 테스트를 무엇이라고 하는지 쓰시오.
답 : 인수 테스트
05. 다음 보기에서 설명하는 용어를 작성하시오.
특정 프로그램 경로를 실행하거나 검증하는 것과 같이 목표를 달성하기 위한 테스트를 정의하는 항목에 대한 명세 기반 테스트의 산출물이다. |
답 : 테스트 케이스
06. 다음 빈칸에 들어가는 테스트 케이스의 작성 절차를 작성하시오.
계획 검토 및 참조 문서 수집 |
내부 검토 및 우선순위 결정 |
( ) |
테스트 설계와 방법 결정 |
테스트 케이스 정의 |
테스트 케이스 타당성 확인 및 유지보수 |
테스트 수행 |
답 : 요구사항 정의
07. 다음 설명하는 테스트 오라클의 유형을 작성하시오.
특정한 입력값들에 대해서만 기대하는 결과를 제공하는 샘플링 오라클을 개선한 오라클이며, 특정 입력값에 대해 올바른 결과를 제공하고 나머지는 기대값으로 처리한다. |
답 : 휴리스틱 오라클(추정 오라클)
08. 다음 보기에서 나타내는 용어를 작성하시오.
인간이 일으키는 사고로 정의할 수 있으며, 테스트 자동화를 통하여 이 오류 및 테스트 시간과 인력 투입의 부담감을 줄일 수 있고 보다 정밀한 테스트가 가능하다. |
답 : 휴먼에러(Human Error)
09. 다음 중 테스트 자동화 수행 시의 고려사항으로 올바르지 않은 것을 모두 고르면?
ㄱ. 불완전한 테스트를 초래할 수 있기 때문에, 프로젝트 초기에 적절한 투입시기와 계획을 수립해야 한다. ㄴ. 도구의 한계성으로 인해 용도에 맞는 적절한 도구를 사용해야 한다. ㄷ. 테스트 절차를 고려하여 재사용 및 불가능한 테스트 프로그램도 포함하여야 한다. ㄹ. 설계 기준을 고려하여 반복적인 빌드에서 스크립트 재사용성이 가능해야 한다. |
답 : ㄷ
728x90
'자격증' 카테고리의 다른 글
[정보처리기능사] chapter 02. 애플리케이션 결함 조치 (3) | 2023.11.13 |
---|---|
[정보처리기능사] 라이브러리의 활용(math, string) (0) | 2023.11.13 |
[정보처리기능사] chapter 02. 프로그래밍 언어 활용(2) (0) | 2023.11.09 |
[정보처리기능사] chapter 02. 프로그래밍 언어 활용(1) (0) | 2023.11.09 |
[정보처리기능사] chapter 01. 알고리즘 구현 (0) | 2023.11.07 |