소프트웨어 테스트 : 구현된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능의 동작과 성능, 사용성, 안전성 등을 만족하는지 확인하기 위하여 소프트웨어의 결함을 적극적으로 찾아내는 활동.
구분 | 테스트 | 디버깅 |
목적 | 일려지지 않은 에러의 발견 | 이미 알고 있는 에러의 수정 |
수행 | 시스템 내부 관련자,테스트팀 등 외부의 제 3자 | 시스템 내부 관련자 |
주요작업 | 에러의 발견 | 에러의 정확한 위치파악 에러의 타입식별 에러의 수정 |
소프트웨어 테스트 필요성
1> 오류발견 관점
2> 오류 예방 관점
3> 품질 향상 관점
살충제 패러독스 : 동일한 테스트 케이스로 반복 실행하면 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 리뷰하고 개선해야 한다.
부재의 궤변 : 사용자의 요구사항을 만족하지 못하면 오류를 발견하고 그 오류를 제거하였다 해도, 해당 애플리케이션의 품질이 높다고 말할 수 없다.
정적 테스트 : 프로그램 실행 없이 소스코드의 구조를 분석하여 논리적으로 검증하는 테스트로 인스펙션, 코드검사, 워크스루 등이 있다.
동적 테스트 : 프로그램의 실행을 요구하는 테스트로 화이트박스 테스트와 블랙박스 테스트가 있다.
화이트박스 테스트 : 프로그램의 내부 로직을 보면서 테스트를 수행한다.
ex>문장커버리지, 분기결정커버리지, MC/DC, 다중조건, 기본경로테스트,
블랙박스 테스트 : 사용자 요구사항 명세를 보면서 테스트, 주로 구현된 기능을 테스트한다.
명세기반 기법이라고도 하며, 주어진 명세(모델, 설계서 등)를 바탕으로 테스트 케이스를 도출
ex>동등분할클래스, 경계값분석, 도메인테스트, Pairwise테스트, 상태전이테스트, 결정테이블기반테스트
검증 VS 확인
검증 : 제품의 생산 과정을 테스트한다는 것을 의미
확인 : 생산된 제품의 결과를 테스트한다는 것을 의미
테스트 목적에 따른 유형
1> 회복테스트 : 고의로 실패를 유도하고 정상적으로 복귀하는지 테스트
2> 안전테스트 : 불법적인 소프트웨어가 접근하여 시스템을 파괴하지 못하도록 소스코드 내의 보안적인 결함을 미리 점검하는 테스트
3> 강도테스트 : 시스템에 과다 정보량을 부과하여 과부하 시에도 시스템이 정상적으로 작동되는지 점검하는 테스트
4> 성능테스트 : 응답하는 시간, 특정 시간내에 처리하는 업무량, 사영자 요구에 시스템이 반응하는 속도 등을 테스트
5> 구조테스트 : 시스템의 내부 논리 경로, 소스코드의 복잡도를 평가하는 테스트
6> 회귀테스트 : 변경 또는 수정된 코드에 대하여 새로운 결함 발견 여부를 평가하는 테스트
7> 병행테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트
테스트 종류에 따른 유형
1>명세 기반 테스트 : 주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인하는 테스트
ex> 동등 분할, 경계 값 분석, 유한상태 기계기반, 결정테이블, 정형명세기반, 유스케이스, 페어와이즈, 직교배열테스트
2>구조 기반 테스트 : 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트
ex> 구문기반, 결정기반, 조건기반, 조건결정기반, 변경조건결정기반, 멀티조건기반, 커버리지테스트
3> 경험 기반 테스트 : 유사소프트웨어나 유사 기술 평가에서 테스터의 경험을 토대로 한, 직관과 기술 능력을 기반으로 수행하는 테스트
테스트 오라클 : 테스트의 결과가 참인지 거짓인지 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법 및 활동
1> 참오라클 : 모든 입력 값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
2> 샘플링 오라클 : 특정한 몇개의 입력 값에 대해서만 기대하는 겨로가를 제공해 주는 오라클
3> 휴리스틱 오라클 : 샘플링 오라클을 개선한 오라클로, 특정 입력 값에 대해 올바른 결과를 제공하고 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클
4> 일관성 검사 오라클 : 애플리케이션 변경이 있을 때 수행전과 후의 결과 값이 동일한지 확인하는 오라클
테스트 시나리오 : 테스트 수행을 위한 여러 테스트 케이스의 집합으로서, 테스트 케이스의 동작 순서를 기술한 문서이며 테스트를 위한 절차를 명세한 문서이다.
통합테스트 : 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법
하향식 통합 : 메인제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하며 하향식으로 통합 테스트를 진행하고, 메인 제어 모듈에 통합되는 하위모듈과 최하위 모듈은 '깊이 우선' 또는 '너비 우선" 방식으로 통합된다. (Stub 필요)
Stub : 특정 시스템 컴포넌트의 개발이 완료되지 않은 상황에서도 필요한 시험을 진행하고 위해 생성된 더미 컴포넌트를 의미.
상향식 테스트 : 애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 시작한다. (드라이버 필요)
드라이버 : 시스템 및 시스템 컴포넌트를 시험하는 환경의 일부분으로 시험을 지원하는 목적 하에 생성된 코드와 데이터이다.
테스트 자동화 : 테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써, 테스트 기간 단축과 인력 투입 비용을 최소화하는 한편, 쉽고 효율적인 테스트를 수행할 수 있는 방법이다.
(휴먼에러를 줄이고 테스트에 소요되는 비용과 시간을 절감하여 테스트 품질을 향상 시킬 수 있는 도구)
에러 : 결함의 원인이 되는 것으로 일반적으로 사람에 의해 생성된 실수
결함/결점/버그 : 에러 또는 오류가 원인이 되어 소프트웨어 제품에 포함되어 있는 결함을 말하며, 이를 제거하지 않으면 소프트웨어 제품이 실패하거나 문제가 발생할 수 있다.
결함관리 : 에러등록→에러분석→결함확정→결함할당→결함조치→결함조치검토및승인→결함의상태예시
결함 추이 분석 : 테스트 완료 후 발견된 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 어떤 모듈 또는 컴포넌트에서 결함이 발생할지를 추정하는 작업
결함 관리 측정 지표
1> 결함분포 : 특정 속성에 해당하는 결함의 수를 측정하여 결함의 분포를 분석
2> 결함추적: 테스트 진행 시간의 흐름에 따른 결함의 수를 측정하여 결함 추세를 분석할 수 있다.
3> 결함에이징 : 등록된 결함에 대해 특정한 결함 상태의 지속 시간을 측정하여 분석할 수 있다.
결함 심각도 : high, medium, low로 나타냄
애플리케이션 성능 지표 : 처리량, 응답 시간, 경과 시간, 자원 활용률(처응경자)
모니터링 도구 : 애플리케이션 실행 시 자원 사용량을 확인하고 분석 가능한 도구로, 성능 모니터링, 서능 저항 원인 분석, 시스템 부하량 분석, 장애 진단, 사용자 분석, 용량 산정 등의 기능을 제공하여 시스템의 안정적 운영을 지원하는 도구
코드리팩토링 : 외부동작을 바꾸지 않으면서 내부 구조를 개선하는 방법, 소프트웨어를 보다 이해하기 쉽고 수정하기 쉽도록 만드는 기법
'정보처리기사 실기준비' 카테고리의 다른 글
[정처기] PART 08 : 소프트웨어 개발 보안 구축 정리노트 (0) | 2021.04.18 |
---|---|
[정처기] PART 07 : SQL 응용 정리노트 (0) | 2021.04.17 |
[정처기] PART 05 : 화면설계 정리노트 (0) | 2021.04.15 |
[정처기] PART 04 : 서버 프로그램 구현 정리노트 (0) | 2021.04.15 |
[정처기] PART 03 : 통합 구현 정리노트 (0) | 2021.04.14 |
댓글