소프트웨어 테스트 필요성
- 오류 발견 관점
: 잠재된 오류를 발견하고 이를 수정
- 오류 예방 관점
: 프로그램 실행전 동료 검토 등을 통해 사전 예방
- 품질 향상 관점
: 반복적인 테스트를 거쳐 신뢰도 향상 및 품질보증
소프트웨어 테스트 원리
- 테스팅은 결함을 밝히는 것
- 완벽한 테스팅은 불가능
- 개발 초기에 테스팅 시작
- 결함집중
- 살충제 패러독스
: 동일한 테스트 케이스에 의한 반복 테스트는 새로운 버그를 찾지 못함
- 테스팅은 정황에 의존적
: 소프트웨어 성격에 맞게 테스트 실시
- 오류-부재의 궤변
: 요구사항을 충족하지 못하면 결함이 없어도 품질이 높다고 볼 수 없음
소프트웨어 테스트 프로세스
1. 테스트 계획
2. 테스트 분석 및 디자인
3. 테스트 케이스 및 시나리오 작성
4. 테스트 수행
5. 테스트 결과 평가 및 리포팅
소프트웨어 테스트 산출물
- 테스트 계획서
: 테스트 목적과 범위 등 테스트 수행을 계획한 문서
- 테스트 베이시스
: 분석, 설계 단계의 논리적인 케이스로 테스트 설계를 위한 기준
- 테스트 케이스
: 테스트를 위한 설계 산출물로써 설계된 값, 결과 등으로 구성된 명세서
- 테스트 슈트
: 테스트 케이스를 실행환경에 따라 구분해놓은 테스트 케이스의 집합
- 테스트 시나리오
: 애플리케이션의 테스트 되어야할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서
- 테스트 스크립트
: 테스트 케이스의 실행순서를 작성한 문서
- 테스트 결과서
: 테스트 결과를 정리한 문서
화이트박스 테스트
- 응용 프로그램의 내부구조와 동작을 검사
- 유형
ㆍ구문 커버리지
: 프로그램 내의 모든 명령문을 적어도 한번씩 수행
ㆍ결정 커버리지
: 각 분기의 결정 포인트 내 전체 조건식이 적어도 한번은 참과 거짓의 결과를 수행
ㆍ조건 커버리지
: 각 개별 조건식이 적어도 한번은 참과 거짓 결과가 되도록 수행
ㆍ조건/결정 커버리지
: 개별 조건식도 참 한번 거짓 한번 되도록 수행
ㆍ변경 조건/결정 커버리지
: 개별 조건식이 다른 개별 조건식에 영향 받지 않고 전체 조건식에 독립적인 영향 주도록 수행
ㆍ다중 조건 커버리지
: 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장
ㆍ기본 경로 커버리지
: 수행 가능한 모든 경로를 테스트
ㆍ제어 흐름 테스트
: 프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직 테스트
ㆍ데이터 흐름 테스트
: 제어 흐름 그래프에 데이터 사용현황 추가한 그래프를 통해 테스트
블랙박스 테스트
- 외부 사용자의 요구사항 명세를 보면서 수행
- 유형
ㆍ동등분할
: 입력 데이터의 영역을 유사 도메인 별로 유효값/무효값을 그룹핑하여 대표 값 케이스 도출
ㆍ경계값 분석
: 경계 값을 포함하여 테스트
ㆍ결정 테이블
: 조건과 행위를 모두 조합하여 테스트
ㆍ상태전이
: 이벤트에 의해 상태가 변화되는 경우의 수를 수행
ㆍ유스케이스 테스트
: 프로세스 흐름을 기반으로 테스트 케이스를 명세화 하여 수행
ㆍ분류트리 테스트
: SW일부 또는 전체를 트리구조로 분석 및 표현하여 테스트 케이스 설계
ㆍ페어와이즈
: 데이터값들 간 최소 한번씩을 조합
ㆍ원인-결과 그래프
: 그래프를 활용하여 입력 데이터 간 관계 및 출력에 미치는 영향 분석
ㆍ비교 테스트
: 여러 버전의 프로그램에 같은 입력 값을 넣고 비교
테스트 시각에 따른 분류
- 검증 (Verification)
: 소프트웨어 개발 과정을 테스트
: 개발자 혹은 시험자의 시각으로 명세화 된 기능의 수행 여부 확인
- 확인 (Validation)
: 소프트웨어 결과를 테스트
: 사용자 시각으로 올바른 소프트웨어가 개발 되었는지 확인
테스트 목적에 따른 분류
- 회복 테스트
: 실패 유도 후 시스템의 정상 복귀 여부 테스트
- 안전 테스트
: 소스코드 내 보안적 결함 점검
- 성능 테스트
: 응답시간, 속도 등 점검
- 구조 테스트
: 시스템 내부 논리 경로, 소스코드 복잡도 평가
- 회귀 테스트
: 오류제거와 수정에 의해 유입된 오류 유무 확인
- 병행 테스트
: 변경된 시스템과 기존 시스템 비교
성능테스트 상세 유형
- 부하 테스트 / 스트레스 테스트 / 스파이크 테스트 / 내구성 테스트
테스트 종류에 따른 분류
- 명세 기반 테스트 / 경험 기반 테스트 (블랙 박스)
- 구조 기반 테스트 (화이트 박스)
정적 테스트
- 리뷰
: 관리 리뷰 / 기술 리뷰 / 인스펙션 / 워크스루 / 감사
- 정적분석
: 코딩 표준 / 복잡도 측정 / 자료 흐름 분석
동적 테스트
- 화이트 박스 테스트 (구조 기반 테스트)
- 블랙 박스 테스트 (명세 기반 테스트)
테스트 오라클
- 테스트의 결과가 참인지 거짓인지를 판단하기 위해 사전에 정의된 참 값을 입력하여 비교
- 종류
ㆍ참 오라클
: 모든 입력 값에 대하여 기대하는 결과를 생성함으로써 발생된 모든 오류 검출 가능
ㆍ샘플링 오라클
: 특정한 값에 대해서만 기대 값 제공
ㆍ휴리스틱 오라클
: 특정 입력 값에 대해 올바른 결과 제공, 나머지 값에 대해서는 휴리스틱(추정) 값 제공
ㆍ일관성 검사
: 애플리케이션 변경이 있을때 수행 전과 후 비교
테스트 레벨
- 함께 편셩되고 관리되는 테스트 활동의 그룹
- 종류
ㆍ단위 테스트
: 요구사항에 대한 단위 모듈, 서브루틴 등 테스트
: 자료구조 테스트 / 실행 경로 테스트 / 오류 처리테스트 / 인터페이스 테스트
ㆍ통합 테스트
: 단위 테스트를 통과한 모듈 사이의 인터페이스와 통합된 컴포넌트 간 상호작용 테스트
: 빅뱅 테스트 / 샌드위치 테스트 / 상향식 테스트 / 하향식 테스트
ㆍ시스템 테스트
: 통합된 단위 시스템의 기능이 정상적으로 수행되는지 검증
: 기능ㆍ비기능 요구사항 테스트
ㆍ인수 테스트
: 계약상의 요구사항이 만족되는지 확인
: 계약 인수, 규정 인수, 사용자 인수, 운영상의 인수, 알파ㆍ베타 테스트
'Certification > 정보처리기사' 카테고리의 다른 글
애플리케이션 성능 개선 (0) | 2021.04.12 |
---|---|
애플리케이션 통합 테스트 (0) | 2021.04.12 |
소프트웨어 개발 보안 구현 (0) | 2021.04.12 |
소프트웨어 개발 보안 설계 2 (0) | 2021.04.12 |
소프트웨어 개발 보안 설계 1 (0) | 2021.04.12 |