애플리케이션 테스트란?
개발된 애플리케이션이 사용자의 요구조건을 만족시키는지, 기능이 정상적으로 잘 동작하는지 테스트하는 것이다.
기본원리
완벽한 테스트 불가능 | 소프트웨어의 결함을 줄일 수는 있지만 완전히 없다고 증명할 수는 없음 |
파레토 법칙 (Pareto Principle) |
소스코드 20%에서 전체 결함의 80%가 발견된다는 법칙 |
살충제 패러독스 (Pesticide Paradox) |
동일한 테스트 케이스로 동일한 테스트를 반복하면 그부분에서는 더 이상 결함이 발견되지 않는 현상 |
테스팅은 정황 의존 | 소프트웨어의 특징, 테스트 환경 등 정황에 따라 테스트 결과가 달라질 수 있으므로, 정황에 따라 테스트를 다르게 해야함 |
오류-부재의 궤변 (Absence of Errors Fallacy) |
소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 모두 만족시키지 못한다면 해당 소프트웨어는 품질이 높다고 말할 수 없다 |
테스트와 위험은 반비례 | 테스트를 많이 할수록 위험은 줄어든다 |
테스트의 점진적 확대 | 테스트는 작은 부분에서 큰 부분으로 점차 확대하면서 진행해야 한다 |
테스트의 별도 팀 수행 | 테스트는 개발자와 관계없는 별도의 팀에서 수행해야 한다. |
테스트 분류 (3가지 방법)
- 프로그램 실행 여부
- 테스트 기반
- 시각
- 목적
프로그램 실행 여부에 따른 분류
- 정적 테스트
- 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석
- 워크스루(개발자의 작업 내역을 전문가들이 검토), 인스펙션, 코드검사
- 동적 테스트
- 프로그램을 실하여 오류를 찾는 테스트
- 소프트웨어 개발의 모든 단계에서 테스트를 수행
- 블랙박스 테스트, 화이트박스 테스트
테스트 기반에 따른 분류
- 명세 기반 테스트
- 요구사항 명세서를 기반으로 테스트 케이스 작성
- 동등 분할, 경계 값 분석
- 구조 기반 테스트
- 내부 논리 흐름 및 구조에 따라 테스트 케이스 작성
- 구문 기반, 결정 기반, 조건 기반
- 경험 기반 테스트
- 테스터의 경험을 기반으로 수행하는 테스트
- 에러 추정, 체크 리스트, 탐색적 테스팅
시각에 따른 분류
- 검증 테스트 : 개발자의 시각에서 제품을 생산 과정을 테스트하는 것, 명세서대로 완성되었는지 테스트
- 확인 테스트 : 사용자의 시각에서 생산된 제품의 결과를 테스트하는 것, 요구사항을 충족하는지 정상적으로 동작하는지 테스트
목적에 따른 분류
회복 테스트 (Recovery) | 일부러 결함을 주어 실패하도록 한후 올바르게 복구되는지를 확인하는 테스트 |
안전 테스트 (Security) | 시스템이 불법적인 침입으로 부터 보호되는지 확인하는 테스트 |
강도 테스트 (Stress) | 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 정상적으로 실행되는지 확인하는 테스트 |
성능 테스트 (Performance) | 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트 (응답시간, 처리량 등을 테스트) |
구조 테스트 (Structure) | 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트 |
회귀 테스트 (Regression) | 소프트웨어의 변경 및 수정된 코드에 새로운 결함이 있는지 확인하는 테스트 |
병행 테스트 (Parallel) | 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트 |
블랙박스 테스트 vs 화이트박스 테스트
블랙박스 테스트 (Black Box Test)
소프트웨어의 각 기능이 모두 잘 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다.
- 사용자의 요구사항 명세를 보면서 테스트
- 주로 구현된 기능을 테스트
- 부정확하거나 누락된 기능, 인터페이스 오류, DB 접근 오류, 성능 오류 등을 발견하기 위함
- 테스트 과정의 후반부에 적용
블랙박스 테스트 종류
동치 분할 검사 (Equivalence Partitioning Testing)
- 동등 분할 기법이라고도 한다.
- 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법
- 올바른 입력 데이터와 올바르지 않은 입력 데이터로 균등하게 하여 테스트 케이스를 작성한다.
- 다양한 입력 자료에 맞는 결과가 출력되는지 확인 하는 기법이다.
경계값 분석 (Boundary Value Analysis)
- 동치 분할 기법을 보안한 기법이다.
- 입력 조건의 중간값과 경계값에서 오류가 발생할 확률이 높다는 점을 이용하여 입력 조건의 경계값에 초점을 두어 테스트 케이스를 작성하는 기법
원인-효과 그래프 검사 (Cause-Effect Graphing Testing)
- 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 분석하여 테스트 케이스를 작성하는 기법
오류 예측 검사 (Error Guessing)
- 과거의 경험이나 확인자의 감각으로 테스트하는 기법
- 보충적 검사 기법으로, 데이터 확인 검사라고도 한다.
비교 검사 (Comparison Testing)
- 여러 버전의 프로그램에 테스트하여 결과가 동일한 지 확인하는 기법
화이트박스 테스트 (White Box Test)
원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계 하는 방법이다.
- 설계 절차에 초점을 둔 구조적 테스트
- 테스트 과정의 초기에 적용됨
- 소스 코드의 작동을 직접 관찰한다.
- 소스 코드의 모든 문장을 한 번 이상 실행한다.
화이트박스 테스트 종류
기초 경로 검사
- 대표적인 화이트박스 테스트 기법이다.
- 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 기법이다.
- 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용된다.
제어 구조 검사
- 조건 검사 (Condition Testing) : 모듈내의 논리적 조건에 초점을 두어 실시하는 기법
- 루프 검사 (Loop Testing) : 반복 Loop구조에 초점을 두어 실시하는 기법
- 데이터 흐름 검사 (Data Flow Testing) : 변수의 정의와 사용의 위치에 초점을 두어 실시하는 기법
'공부 > 정보처리기사' 카테고리의 다른 글
데이터 교환 방식/라우팅 (0) | 2021.04.17 |
---|---|
디지털 저작권 관리 (DRM)란? (0) | 2021.04.13 |
릴리즈 노트 (Release Note)란? (0) | 2021.04.13 |
EAI (Enterprise Application Integration) - 연계 모듈 구현 (0) | 2021.04.10 |
리팩토링이란? (0) | 2021.04.10 |