01. 애플리케이션 테스트 개요
1) 테스트의 개념
- 소프트웨어 테스트란 구현된 응용 애플리케이션이나 시스템 사용자가 요구하는 기능의 동작과 성능, 사용성, 안정성 등을 만족하는지 확인하기 위하여 소프트웨어의 결함을 찾아내는 활동이다.
2) 테스트의 필요성
- 오류 발견
- 오류 예방
- 품질 향상
3) 테스트의 기본 원칙
(1) 테스팅은 결함을 밝히는 활동이다.
- 테스팅은 소프트웨어의 잠재적인 결함을 줄일 수 있지만, 결함이 발견되지 않아도 결함이 없다고 증명할 수 없음을 나타낸다.
(2) 완벽한 테스팅은 불가능하다.
- 무한 경로, 무한 입력 값, 무한 시간이 소요되어 완벽하게 테스트할 수 없으므로 리스크 분석과 우선순위를 토대로 테스트에 집중할 것을 의미한다.
(3) 테스팅은 개발 초기에 시작해야 한다.
- 애플리케이션의 개발 단계에 테스트를 계획하고 SDLC의 각 단계에 맞춰 전략적으로 접근하는 것을 고려해야 한다.
Boehm의 법칙
- 초기 개발단계에서 결함을 발견하면 많은 시간과 비용을 절약할 수 있지만 나중 단계에서 발견하면 비용이 많이 들어간다는 법칙이다. 요구사항을 수정하는 것이 SW를 수정하는 것보다 쉽다는 의미도 있다.
(4) 결함 집중을 고려한다.
- 애플리케이션 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재한다.
- 파레토의 법칙 : 소프트웨어 제품에서 발견되는 전체 결함의 80%는 소프트웨어 제품의 전체 기능 중 20%에 집중되어 있다.
(5) 살충제 패러독스를 고려한다.
- 동일한 테스트 케이스로 반복 실행하면 결함을 발견할 수 없다.
- 애플리케이션에 잠재된 보다 많은 결함을 발견하기 위해서는 테스트 케이스를 주기적으로 리뷰하고 개선해야 한다.
(6) 테스팅은 정황에 의존한다.
- 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행하여야 한다.
(7) 오류-부재의 궤변을 고려한다.
- 사용자의 요구사항을 만족하지 못하는 오류를 발견하고 그 오류를 제거하였다해도, 해당 애플리케이션의 품질이 높다고 말할 수 없다.
3) 테스트 작업 과정
- 목표 설정 : 테스트에 의하여 무엇을 점검할 것인지 결정한다.
- 테스트 방법 결정 : 어떤 방법을 이용하여 어떻게 테스트할 것인지 결정한다.
- 테스트 케이스 개발 : 테스트 케이스를 개발한다.
- 예상되는 올바른 결과 작성 : 실제 테스트 수행 전 올바른 결과값을 확인한다.
- 테스트 실행 : 작성한 테스트 케이스로 테스트를 실행한다.
테스트 케이스 : 테스트 자료나 실행될 조건으로, 시험 조건, 테스트 데이터, 예상 결과를 포함하는 것
테스트 오라클 : 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
02. 테스트 유형
1) 프로그램 실행 여부에 따른 테스트의 종류
(1) 정적 테스트
- 프로그램 실행 없이 소스코드의 구조를 분석하여 논리적으로 검증하는 테스트로 인스펙션, 코드 검사, 워크스루 등이 있다.
(2) 동적 테스트
- 프로그램의 실행을 요구하는 테스트로 화이트박스 테스트와 블랙박스 테스트가 있다.
2) 테스트 기법에 따른 테스트의 종류
(1) 화이트 박스 테스트
- 화이트 박스 테스트는 모듈의 논리적인 구조를 체계적으로 점검할 수 있다.
- 프로그램의 내부 로직을 보면서 테스트를 수행한다.
- 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트에 해당한다.
- 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법이다.
루프 검사
- 프로그램의 반복 구조에 초덤을 맞춰 실시하는 테스트 케이스 설계 기법이다.
- 반복 구조 : 단순 루프, 중첩 루프, 연결 루프, 비구조적 루프
(2) 블랙 박스 테스트
- 프로그램의 오부 사용자 요구사항 명세를 보면서 테스트, 주로 구현된 기능을 테스트한다.
- 프로그램의 구조를 고려하지 않는다.
화이트 박스 테스트의 종류
- 기초 경로 테스트
- 제어 구조 검사
- 루프 테스트 : 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
- 데이터 흐름 테스트
- 조건 커버리지
블랙 박스 테스트의 종류
- 동등(균할, 등치) 분할
- 경계값 분석
- 원인-효과 그래프 검사
- 오류 예측 검사
- 비교 검사
3) 테스트 시각에 따른 테스트의 종류
(1) 검증
- 제품의 생산 과정을 테스트한다.
- 올바른 제품을 생산하고 있는지 검증하는 것을 의미한다
(2) 확인
- 생산된 제품의 결과를 테스트한다.
- 생산된 제품이 정상적으로 동작하는지 확인하는 것을 의미한다.
4) 테스트 목적에 따른 테스트의 종류
(1) 회복 테스트
- 시스템에 고의로 실패를 유도하고 시스템이 정상적으로 복귀하는지 테스트한다.
(2) 안전 테스트
- 불법적인 소프트웨어가 접근하여 시스템을 파괴하지 못하도록 소스코드 내의 보안적인 결함을 미리 점검하는 테스트
(3) 강도 테스트
- 시스템에 과다 정보량을 부과하여 과부하 시에도 시스템이 정상적으로 작동되는지 검증하는 테스트
(4) 성능 테스트
- 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 테스트한다.
(5) 구조 테스트
- 시스템의 내부 논리 경로, 소스코드의 복잡도를 평가하는 테스트
(6) 회귀 테스트
- 변경 또는 수정된 코드에 대하여 새로운 결함 발견 여부를 평가하는 테스트
- 한 모듈의 수정이 다른 부분에 미치는 영향을 테스트한다.
(7) 병행 테스트
- 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트
5) 테스트 기반에 따른 테스트의 종류
(1) 명세 기반 테스트
- 주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인하는 테스트
- 해결할 문제르 명세하기 위해 공식적이거나 비공식적인 모델을 사용
- 동등 분할, 경계값 분석, 유한 상태 기계 기반, 결정 테이블 등
(2) 구조 기반 테스트
- 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트
- 코드와 개발 설계 등의 소프트웨어 구현 정보를 기반으로 테스트 케이스를 도출
- 구문 기반, 결정 기반, 조건 기반, 조건 결정 기반 등
(3) 경험 기반 테스트
- 테스트 관련 인력의 지식이나 경험에서 테스트 케이스를 도출한다.
- 유사 소프트웨어나 유사 기술 평가에서 테스터의 경험을 토대로 한, 직관과 기술 능력을 기반으로 수행하는 테스트
'CS > 정보처리산업기사' 카테고리의 다른 글
프로그래밍 언어의 개요 - 데이터 타입 (0) | 2025.03.21 |
---|---|
애플리케이션 테스트 수행 - 애플리케이션 개발 단계에 따른 테스트 (0) | 2025.03.21 |
애플리케이션 테스트 수행 - 통합개발환경 도구 활용 (0) | 2025.03.21 |
객체지향 설계 - 디자인 패턴 (0) | 2025.03.21 |
객체지향 설계 - 객체지향 (0) | 2025.03.21 |