[정보처리기사 필기] 2-4. 애플리케이션 테스트 관리
2020 시나공 정보처리기사 필기책 참고
주의! 중요도가 낮은 항목(C)은 제외
1. 애플리케이션 테스트 – B
- 애플리케이션 테스트의 개념
- 잠재되어 있는 결함을 찾아내는 일련의 행위
- 고객의 요구사항을 만족시키는지 확인(Validation)
- 기능을 정확히 수행하는지 검증(Verrfication)
- 개발할 소프트웨어의 유형을 분류하고 특성을 정리해서 중점적으로 테스트할 사항을 정리
- 애플리케이션 테스트의 필요성
- 프로그램 실행 전에 오류를 발견하여 예방
- 제품의 신뢰도 향상
- 새로운 오류의 유입 예방
- 최소한의 시간과 노력으로 많은 결함을 찾아낼 수 있음
- 애플리케이션 테스트의 기본 원리
- 잠재적인 결함은 줄일 수 있지만 완벽한 소프트웨어 테스팅은 불가능
- 결함 대부분은 특정 모듈에 집중. 20%의 코드에서 80%의 결함이 발견. 파레토 법칙 적용
- 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 살충제 패러독스 발생
- 정황에 따라 테스트를 다르게 수행
- 결함을 제거해도 요구사항을 만족시키지 못하면 품질이 높다고 말할 수 없음. 오류 부재의 궤변
- 테스트와 위험은 반비례
- 작은 부분에서 시작하여 점점 확대하며 진행
- 개발자와 관계없는 별도의 팀에서 수행
2. 애플리케이션 테스트의 분류 – B
- 프로그램 실행 여부에 따른 테스트
@ 정적 테스트
- 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석
- 개발 초기에 결함 발견 가능. 개발 비용을 낮출 수 있음
- 워크스루, 인스펙션, 코드 검사 등
@ 동적 테스트
- 프로그램을 실행하여 오류를 찾는 테스트. 개발 모든 단계에서 수행 가능
- 블래박스 테스트, 화이트박스 테스트
- 테스트 기반에 따른 테스트
@ 명세 기반 테스트
- 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현하고 있는지 확인
- 동등 분할, 경계 값 분석 등
@ 구조 기반 테스트
- 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인
- 구문 기반, 결정 기반, 조건 기반 등
@ 경험 기반 테스트
- 유사 소프트웨어나 기술 등에 대한 경험을 기반으로 함
- 요구사항에 대한 명세가 불충분하거나 테스트 시간에 제약이 있는 경우 효과적
- 에러 추정, 체크 리스트, 탐색적 테스팅
- 시각에 따른 테스트
@ 검증(Verification) 테스트
- 개발자의 시각에서 명세서대로 완성됐는지 테스트
@ 확인(Validation) 테스트
- 사용자의 시각에서 요구한대로 제품이 완성됐는지, 정상 동작하는지 테스트
- 목적에 따른 테스트
@ 회복 테스트
- 결함을 주어 실패하도록 한 후 올바르게 복구되는지 확인
@ 안전 테스트
- 불법적인 침입으로부터 시스템을 보호할 수 있는지 확인
@ 강도 테스트
- 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 정상적으로 실행되는지 확인
@ 성능 테스트
- 실시간 성능이나 전체적인 효율성을 진단하는 테스트
@ 구조 테스트
- 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
@ 회귀 테스트
- 변경 또는 수정된 코드에 새로운 결함이 없음을 확인
@ 병행 테스트
- 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교
3. 테스트 기법에 따른 애플리케이션 테스트 – A
- 화이트박스 테스트
- 원시 코드를 오픈시킨 상태에서 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계
- 구조적 테스트. 프로시저 설계의 제어 구조를 사용하여 테스트 케이스를 설계
- 테스트 과정의 초기에 적용
- 모듈 안의 작동을 직접 관찰
- 모든 문장을 한 번 이상 실행하여 수행
- 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어
- 화이트박스 테스트의 종류
@ 기초 경로 검사
- 대표적인 화이트박스 테스트 기법
- 절차적 설계의 논리적 복잡성을 측정할 수 있게 해줌
- 실행 경로의 기초를 정의하는 데 지침으로 사용
@ 제어 구조 검사
- 조건 검사 : 논리적 조건을 테스트하는 설계 기법
- 루프 검사 : 반복 구조에 초점을 맞춰 실시하는 설계 기법
- 데이터 흐름 검사 : 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 설계 기법
- 화이트박스 테스트의 검증 기준
- 문장 검증 기준 : 모든 구문이 한 번 이상 수행되도록 설계
- 분기 검증 기준 : 모든 조건문이 한 번 이상 수행되도록 설계
- 조건 검증 기준 : 모든 조건문에 대해 조건문이 True, False 경우가 한 번 이상 수행되도록 설계
- 분기/조건 기준 : 모든 조건문과 각 조건문에 포함된 개별 조건식의 결과가 True, False인 경우가 한 번 이상 수행되도록 설계
- 블랙박스 테스트
- 각 기능이 완전히 작동되는 것을 입증하는 테스트. 기능 테스트
- 요구사항 명세서를 보면서 테스트하는 것. 구현된 기능을 테스트
- 인터페이스에서 실시되는 테스트
- 테스트 과정의 후반부에 적용
- 블랙박스 테스트의 종류
@ 동치 분할 검사
- 입력 자료에 초점을 맞춰 검사
- 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 함. 자료에 맞는 결과가 출력되는지 확인
@ 경계값 분석
- 동치 분할 기법을 보완하기 위함
- 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점 이용
- 입력 조건의 경계값을 테스트 케이스로 선정하여 검사
@ 원인-효과 그래프 검사
- 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 후 효용성 높은 케이스 선정하여 검사
@ 오류 예측 검사
- 과거의 경험이나 확인자의 감각으로 테스트
- 보충적 검사 기법. 데이터 확인 검사
@ 비교 검사
- 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트
4. 개발 단계에 따른 애플리케이션 테스트 – A
- 개발 단계에 따른 애플리케이션 테스트
- 코드 상의 오류뿐만 아니라 요구 분석의 오류, 설계 인터페이스 오류 등도 발견할 수 있음
- 애플리케이션 테스트 + 소프트웨어 개발 단계 = V-모델
- 요구사항 -> 분석 -> 설계 -> 구현 -> // 단위테스트 -> 통합테스트 -> 시스템티스트 -> 인수테스트
- 단위 테스트(Unit Test)
- 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트
- 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행
- 구조 기반 테스트와 명세기반 테스트로 나뉘지만 주로 구조 기반 테스트를 시행
- 구조 기반 테스트 : 화이트박스 테스트
- 명세 기반 테스트 : 블랙박스 테스트
- 통합 테스트(Integration Test)
- 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
- 모듈 간 또는 통합된 컴포넌트 간의 상호 작용 오류를 검사
- 시스템 테스트(System Test)
- 개발된 S/W가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검
- 실제 사용 환경과 유사하게 만든 테스트 환경에서 수행
- 기능적 요구사항 : 블랙박스 테스트 시행
- 비기능적 요구사항 : 화이트박스 테스트 시행
- 인수 테스트(Acceptance Test)
- 개발한 S/W가 사용자의 요구사항을 충족하는지에 중점
- 사용자가 직접 테스트
- 문제가 없으면 사용자는 S/W를 인수하고 프로젝트 종료
- 사용자 인수 테스트 : 사용자가 시스템 사용의 적절성 여부 확인
- 운영상의 인수 테스트 : 시스템 관리자가 수행
- 계약 인수 테스트 : 계약상의 인수/검수 조건을 준수하는지 여부 확인
- 규정 인수 테스트 : 규정에 맞게 개발되었는지 확인
- 알파 테스트
- 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트
- 통제된 환경에서 시행. 문제점을 사용자와 개발자가 함께 확인
- 베타 테스트
- 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트
- 사용자가 직접 테스트
- 개발자에 의해 제어되지 않은 상태에서 테스트
- 오류와 사용상의 문제점을 기록하고 개발자에게 주기적으로 보고
5. 통합 테스트 – A
- 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트
- 비점진적 통합 방식
- 모든 모둘이 미리 결합되어 있는 프로그램 전체를 테스트. 빅뱅 통합 테스트
- 규모가 작은 소프트웨어에 유리. 단시간 내에 테스트 가능
- 오류 발견 및 장애 위치 파악 및 수정이 어려움
- 점진적 통합 방식
- 모듈 단위로 단계적으로 통합하면서 테스트. 하향식, 상향식, 혼합식
- 오류 수정이 용이하고, 인터페이스와 연관된 오류를 완전히 테스트 할 가능성 높음
- 하향식 통합 테스트
- 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트
- 깊이 우선 통합법이나 넓이 우선 통합법 사용
- 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있음
- 상위 모듈에서는 테스트 케이스를 사용하기 어려움
- 절차
- 주요 제어 모듈은 작성된 프로그램 사용. 종속 모듈은 Stub으로 대체
- 하위 모듈인 Stub들이 한 번에 하나씩 실제 모듈로 교체됨
- 모듈이 통합될 때마다 테스트를 실시
- 새로운 오류가 발생하지 않음을 보증하기 위해 회귀 테스트 실시
- 상향식 통합 테스트
- 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
- Stub은 필요하지 않지만, 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 Cluster가 필요
-절차
- 하위 모듈들을 Cluster로 결합
- 더미 모듈인 Driver를 작성
- 통합된 클러스터 단위로 테스트
- 테스트가 완료되면 Cluster는 프로그램 구조의 상위로 이동하여 결합하고 Driver는 실제 모듈로 대체
- 테스트 Driver와 Stub의 차이점
구분 | Driver | Stub |
---|---|---|
필요시기 | 상위 모듈 없음 | 하위 모듈 없음 |
테스트방식 | 상향식 | 하향식 |
공통점 | 소프트웨어 개발과 테스트를 병행할 경우 이용 | |
차이점 | 인터페이스 역할, 원래 모듈로 교체 | 가짜 모듈의 역할, 작성하기 쉬움 |
- 혼합식 통합 테스트
- 하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합. 샌드위치식 통합 테스트 방법
- 회귀 테스팅
- 이미 테스트된 프로그램의 테스팅을 반복하는 것
- 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트
- 반복해서 테스트 함
- 변경된 부분을 테스트할 수 있는 테스트 케이스만을 선정하여 수행
- 대표적인 테스트 케이스를 선정
- 파급 효과가 높은 부분이 포함된 테스트 케이스를 선정
- 실제 수정이 발생한 모듈 또는 컴포넌트에서 시행하는 테스트 케이스 선정
6. 애플리케이션 테스트 프로세스 – B
- 애플리케이션 테스트 프로세스
- 사용자의 요구대로 만들어졌는지, 결함은 없는지 등을 테스트
- 계획 -> 분석 및 디자인 -> 테스트 케이스 및 시나리오 작성 -> 수행 -> 결과 평가 및 리포팅 -> 결함 추적 및 관리
7. 테스트 케이스 / 테스트 시나리오 / 테스트 오라클 – B
- 테스트 케이스
- 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 명세 기반 테스트의 설계 산출물
- 검토 및 자료확보 -> 위험 평가 및 우선순위 결정 -> 요구사항 정의 -> 구조 설계 및 방법 결정 -> 테스트 케이스 정의 -> 타당성 확인 및 유지 보수
- 테스트 시나리오
- 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합. 구체적인 절차를 명세한 문서
- 테스트 순서에 대한 구체적인 절차, 사전 조건, 입력 데이터 등이 설정
- 테스트 순서를 미리 정함으로써 테스트 항목을 빠짐없이 수행
- 작성시 유의사항
- 여러 개의 시나리오로 분리하여 작성
- 사용자의 요구사항과 설계 문서 등을 토대로 작성
- 유스케이스간 업무 흐름이 정상적인지를 테스트 할 수 있도록 작성
- 개발된 모듈 또는 프로그램 간의 연계가 정상적으로 동작하는지 테스트할 수 있도록 작성
- 테스트 오라클
- 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법
- 결과를 판단하기 위해 테스트 케이스에 대한 예상 결과를 게산하거나 확인
- 특징
- 제한된 검증 : 모든 테스트 케이스에 적용할 수 없음
- 수학적 기법 : 수학적 기법을 이용하여 구할 수 있음
- 자동화 가능 : 실형, 결과 비교, 커버리지 측정 등을 자동화 할 수 있음
- 종류
- 참 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공. 모든 오류 검출
- 샘플링 오라클 : 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과 제공
- 추정 오라클 : 샘플링 오라클 개선. 나머지 입력 값들에 대해서 추정으로 처리
- 일관성 검사 : 변경이 있을 때, 수행 전과 후의 결과 값이 동일한지 확인
8. 테스트 자동화 도구 – B
- 테스트 자동화의 개념
- 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용한 것
- 휴먼 에러를 줄이고 테스트 정확성을 유지하면서 품질을 향상시킴
- 테스트 자동화 도구의 장점 / 단점
- 장점
- 반복적인 작업을 자동화하여 인력 및 시간을 줄임
- 향상된 테스트 품질 보장
- 요구사항 등을 일관성 있게 검증
- 객관적인 평가 기준을 제공
- 다양한 표시 형태로 제공
- UI가 없는 서비스도 정밀 테스트 가능
- 단점
- 도구의 사용 방법에 대한 교육 및 학습 필요
- 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
- 비공개 상용 도구의 경우 고가의 추가 비용 필요
- 테스트 자동화 수행 시 고려사항
- 재사용 및 측정이 불가능한 테스트 프로그램은 제외
- 용도에 맞는 적절한 도구를 선택해서 사용
- 환경 설정 및 습득 기간을 고려해서 프로젝트 일정을 계획
- 프로젝트 초기에 테스트 엔지니어의 투입 시기를 계획
- 테스트 자동화 도구의 유형
- 정적 분석 도구
- 프로그램을 실행하지 않고 분석
- 작성된 소스 코드를 이해하고 있어야만 분석 가능
- 테스트 실행 도구
- 스크립트 언어를 사용하여 테스트를 실행
- 데이터 주도 접근 방식
- 키워드 주도 접근 방식
- 성능 테스트 도구
- 인위적으로 적용한 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부 확인
- 테스트 통제 도구
- 테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행
- 형상 관리 도구, 결함 추적/관리 도구 등
- 테스트 하네스 도구
- 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분
- 테스트를 지원하기 위해 생성된 코드와 데이터를 의미
- 테스트가 실행될 환경을 시뮬레이션 하여 정상적으로 테스트되도록 함
- 구성 요소
- 테스트 드라이버 : 모듈 테스트 수행 후의 결과를 도출
- 테스트 스텁 : 타 모듈의 기능을 단순히 수행하는 도구
- 테스트 슈트 : 테스트 케이스의 집합
- 테스트 케이스 : 테스트 항목의 명세서
- 테스트 스크립트 : 자동화된 테스트 실행 절차에 대한 명세서
- 목 오브젝트 : 예정된 행위를 수행하는 객체
9. 결함 관리 – B
- 결함의 정의
- 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것
- 결함 관리 프로세스
- 계획 -> 기록 -> 검토 -> 수정 -> 재확인 -> 추적 및 모니터링 -> 분석 및 보고서 작성
- 결함 추적 순서
- 등록 -> 검토 -> 할당 -> 수정 -> 조치 보류 -> 종료 -> 해제
- 결함 관리 도구
- Mantis : 단위별 작업 내용 기록하여 결함 추적 가능
- Trac : 결함 추적은 물론 결함을 통합하여 관리
- Redmine : 프로젝트 관리 및 결함 추적 가능
- Bugzilla : 결함을 지속적으로 관리할 수 있는 도구. 결함의 심각도와 우선 순위 지정 가능
댓글남기기